JP2005182774A - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP2005182774A
JP2005182774A JP2004342650A JP2004342650A JP2005182774A JP 2005182774 A JP2005182774 A JP 2005182774A JP 2004342650 A JP2004342650 A JP 2004342650A JP 2004342650 A JP2004342650 A JP 2004342650A JP 2005182774 A JP2005182774 A JP 2005182774A
Authority
JP
Japan
Prior art keywords
program
secure
normal
data processing
unit
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
Application number
JP2004342650A
Other languages
English (en)
Other versions
JP4629416B2 (ja
JP2005182774A5 (ja
Inventor
Takayuki Ito
孝幸 伊藤
Teruto Hirota
照人 廣田
Koichi Kanemura
孝一 金村
Tomoyuki Haga
智之 芳賀
Yoshikatsu Ito
好克 井藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2004342650A priority Critical patent/JP4629416B2/ja
Publication of JP2005182774A publication Critical patent/JP2005182774A/ja
Publication of JP2005182774A5 publication Critical patent/JP2005182774A5/ja
Application granted granted Critical
Publication of JP4629416B2 publication Critical patent/JP4629416B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephonic Communication Services (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】保護対象となるセキュアリソースにアクセスするセキュアモードとセキュアリソースにアクセスできない通常モードとを切り替えて実行するデータ処理装置において、セキュアモードで前記セキュアリソースが増大すると前記リソースを保護する保護機構に係る負荷が大きくなる。従って、セキュアリソースを削減することができるデータ処理装置に対する要望がある。
【解決手段】 本発明は、前記セキュアリソースを利用する1つ以上の処理手順と通常モードで実行される通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しており、前記セキュアプログラムの実行途中に、前記呼出命令により、通常プログラムを呼び出し、呼び出した通常プログラムに従って動作するデータ処理装置である。
【選択図】 図8

Description

本発明は、セキュアリソースにアクセス可能なセキュアモードと、セキュアリソース以外の通常リソースにのみアクセス可能な通常モードとを切り替えて、プログラムを実行する装置において、セキュアモードで実行されるプログラムと通常モードで実行されるプログラムとを対応して動作させる技術に関する。
近年、様々な機器において、音楽及び映像を含むデジタルコンテンツが取り扱われるようになっている。これらの機器は、デジタルコンテンツを劣化させることなく複製、編集することが可能である。しかし、著作権の観点から、これらのデジタルコンテンツは、保護されて扱われる必要がある。
従来技術によると、保護される必要のあるセキュアデータ及び保護される必要のあるセキュアアプリケーションへのアクセスが可能なセキュアモードと、これらのセキュアデータ及びセキュアアプリケーションにアクセスすることができない通常モードとをモニタによって切り替えて実行するデータ処理装置が開示されている。この技術よると、通常モードにおいて動作するアプリケーションは、通常モードで動作するオペレーティングシステムを介して、セキュアアプリケーションへ処理を依頼する。オペレーティングシステムは、モニタへ実行モードの切替を依頼し、モニタは、実行モードを切り替える。セキュアアプリケーションは、依頼された処理を行い、処理結果をセキュア実行モードで動作するセキュアオペレーティングシステムを介して、アプリケーションへ返却する。セキュアオペレーティングシステムは、モニタに実行モードの切替を依頼し、モニタは実行モードを切り替える。このような構成により、セキュアモードと通常モードとを切り替えて実行することで、通常モードで動作するアプリケーションから、直接セキュアデータやセキュアアプリケーションへアクセスすることはできない。従って、セキュアデータ及びセキュアアプリケーションを保護することができる。
A New Foundation for CPU Systems Security(平成15年11月20日検索、URL:http://www.arm.com/armtech.nsf/htmlall/FC4C07580E29428080256D1A004A2345/$File/TrustZone_WP.pdf?OpenElement)
しかしながら、従来技術の示す方法では、セキュアモードで使用するデータ及びプログラムなどを記憶するメモリを、通常モードで使用するメモリとは別個に確保する必要がある。セキュアモードで使用されるメモリは、不正なアクセスから当該メモリを保護する保護機構を必要とする。従って、セキュアモードで使用されるメモリが増加すると、保護機構に係る負荷が大きくなり、保護機構の規模を大きくする必要が生じる。ゆえに、セキュアモードで使用されるメモリを削減することができるデータ処理装置に対する要望がある。
そこで本発明はかかる問題点に鑑みてなされたものであり、セキュアモードで使用される、メモリを削減することができるデータ処理装置、データ処理方法、データ処理プログラム及び記録媒体を提供することを目的とする。
上記目的を達成するために本発明は、保護対象のセキュアリソースの利用が許可されるセキュアモードと、保護対象外の通常リソースの利用のみが許可される通常モードとを切り替えて、プログラムを実行するデータ処理装置であって、前記通常リソースを利用する1つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、前記セキュアリソースを利用する1つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段と、セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断手段と、セキュアモードにおいて、前記呼出命令であると判断される場合に、当該呼出命令により呼び出される前記通常プログラムを示す識別情報を出力する出力手段と、前記呼出命令であると判断される場合に、セキュアリソースを保護して、セキュアモードから通常モードに切り替える切替手段と、通常モードにおいて、前記識別情報を受け取る受取手段と、通常モードにおいて、受け取った前記識別情報により示される前記通常プログラムを前記通常記憶手段から読み出す読出手段と、通常モードにおいて、読み出した通常プログラムに従って動作する処理手段とを備えることを特徴とする。
上記の構成によると、前記セキュアプログラムは、前記呼出命令を含み、次に実行すべき命令が、前記呼出し命令である場合、切替手段は、セキュアモードから通常モードに切り替え、通常モードにおいて、受取手段は、前記識別情報を受け取り、読出手段は、受け取った前記識別情報により示される前記通常プログラムを前記通常記憶手段から読み出し、処理手段は、読み出した通常プログラムに従って動作する。従って、前記呼出し命令を実行することで、前記セキュアプログラムは、通常モードで動作する通常プログラムへ、処理を依頼することができる。つまり、セキュアリソースを利用しない処理を通常プログラムに実行させることにより、セキュアプログラム自体のプログラムサイズが減少する。さらに、セキュアモードにおいて、セキュアプログラムが使用するメモリを減少させることができる。
前記データ処理装置において、前記切替手段は、前記セキュアプログラムを制御するセキュアオペレーティングシステムを中断させ、前記通常プログラムを制御する通常オペレーティングシステムを起動することにより、セキュアモードから通常モードに切り替える。
この構成によると、前記切替手段は、前記セキュアオペレーティングシステムを中断させた後、通常オペレーティングシステムを起動する。このため、当該データ処理装置は、通常モードで動作中には、前記セキュアリソースへのアクセスルートを完全に切断し、セキュアモードと通常モードとを排他的に実現することができる。
また、前記データ処理装置は、セキュアモード及び通常モードの両方において、アクセスが許可される共有記憶領域を備え、前記出力手段は、セキュアモードにおいて、前記識別情報を前記共有記憶領域に書き込むことにより、前記識別情報を出力し、前記受取手段は、通常モードにおいて、前記共有記憶領域から前記識別情報を読み出すことにより、前記識別情報を受け取ることを特徴とする。
この構成によると、前記共有記憶領域は、通常モード及びセキュアモードにおいてアクセス可能である。従って、本発明のデータ処理装置は、セキュアモードと通常モードとを排他的に実現して、セキュアリソースを保護しながら、セキュアモードと通常モードとの間で確実に情報の授受を行うことができる。
また、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出すことを特徴とする。
この構成によると、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しているため、受け取った識別情報対応する位置情報を用いて、確実かつ迅速に、前記通常プログラムを読み出すことができる。
前記データ処理装置において、前記通常プログラムを構成する1の処理手順は、ライブラリを構成する複数の関数を含み、他の処理手順は、前記複数の関数のうちのいずれかを呼び出し、前記処理手段は、前記他の処理手順に従って動作する場合に、当該他の処理手順により呼び出される関数に従って動作することを特徴とする。
この構成によると、前記通常プログラムを構成する1つの処理手順は、ライブラリを構成する複数の関数を含み、他の処理手順は、前記複数の関数のうちのいずれかを呼び出す。従って、前記セキュアプログラムは、ライブラリを構成する関数を使用する処理を前記通常プログラムへ依頼することができる。このため、セキュアモードにおいて、メモリ上にライブラリを保持する必要がなくなる。
前記データ処理装置は、さらに、セキュアモードにおいて、前記セキュアプログラムの前記セキュア記憶手段への書き込みを示す書込指示を受け取る指示取得手段と、セキュアモードにおいて、前記書込指示を取得した場合に、前記セキュア記憶手段に前記セキュアプログラムを書き込み、前記書込みが終了したことを示す書込終了情報を出力するセキュアロード手段とを含み、前記切替手段は、さらに、前記書込終了情報が出力された場合、セキュアモードから通常モードへ切り替え、前記データ処理装置は、さらに、通常モードにおいて、前記書込終了情報を受け取り、前記通常記憶手段に前記通常プログラムを書き込む通常ロード手段とを含むことを特徴とする。
この構成によると、指示取得手段が、書込指示を取得した場合に、前記セキュアロード手段がセキュアモードにおいて、前記セキュアプログラムの前記セキュア記憶手段への書き込みを示す書込指示を受け取ると、前記セキュア記憶手段に前記セキュアプログラムを書き込み、前記通常ロード手段が前記通常記憶手段に前記通常プログラムを書き込む。このようにすることで、前記セキュアプログラムの実行中には、常に、前記通常記憶手段に前記通常プログラムが記憶されており、セキュアプログラム含まれる呼出し命令が実行される際には、速やかに前記通常プログラムの実行に移ることができる。
前記データ処理装置を構成する前記読出手段は、さらに、通常モードにおいて、前記通常ロード手段により前記通常プログラムが前記通常記憶手段に書き込まれた場合に、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶することを特徴とする。
この構成では、前記読出手段は、前記通常プログラムが前記通常記憶手段に書き込まれた場合に、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶する。このようにすることで、前記セキュアプログラムのロード直後から、前記読出手段は前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶している。従って、セキュアプログラム含まれる呼出し命令が実行される際には、速やかに前記通常プログラムを読み出すことができる。
前記データ処理装置は、さらに、セキュアモードにおいて、前記セキュアプログラムの削除を指示する削除指示を取得する削除指示取得手段と、前記削除指示を取得した場合に、セキュアモードにおいて、前記セキュアプログラムを前記セキュア記憶手段から削除し、前記削除が終了したことを示す削除終了情報を出力するセキュア削除手段とを含み、前記切替手段は、さらに、前記削除終了情報が出力された場合、セキュアモードから通常モードへ切り替え、前記データ処理装置は、さらに、通常モードにおいて、前記削除終了情報を取得し、前記通常記憶手段から前記通常プログラムを削除する通常削除手段を含むことを特徴とする。
この構成によると、削除指示取得手段が前記セキュアプログラムの削除を指示する削除指示を取得すると、セキュア削除手段が、前記セキュアプログラムを前記セキュア記憶手段から削除し、通常削除手段が、前記通常記憶手段から前記通常プログラムを削除する。
従って、前記セキュアプログラムがロードされていない間は、前記通常プログラムもロードする必要がないため、このようにすることで、前記通常プログラムによって、通常モードで使用するメモリ領域を無駄にすることを防ぐことができる。
前記データ処理装置において、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出すことを特徴とする。
この構成によると、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しているため、受け取った識別情報対応する位置情報を用いて、確実かつ迅速に、前記通常プログラムを読み出すことができる。
前記データ処理装置は、さらに、前記処理手段を含む当該データ処理装置の備える1以上のデバイスを初期化する初期化手順及び前記セキュアオペレーティングシステムを起動する起動手順を含むブートプログラムを記憶しているブートプログラム記憶手段と、前記ブートプログラム記憶手段から、前記ブートプログラムを読み出し、読み出した前記ブートプログラムに従って、前記デバイスを初期化し、初期化の完了後に、セキュアオペレーティングシステムを起動する初期化手段とを備えることを特徴とする。
この構成によると、前記初期化手は、段電源投入時に前記ブートプログラムに従って、前記デバイスを初期化し、初期化の完了後に、セキュアオペレーティングシステムを起動する。このように、本発明のデータ処理装置は、通常モードで実行されるプログラムを起動する前に、セキュアオペレーティングシステムを起動することで、起動時に、通常モードで実行されるプログラムの不正な動作により、セキュアモードで実行されるプログラムやセキュアリソースの不正な利用を防ぐことができる。
前記データ処理装置は、さらに、通常モードにおいて、前記処理手段による処理結果と前記セキュアプログラムを示すセキュア識別情報とを出力する通常出力手段を含み、前記切替手段は、さらに、前記処理結果が出力された場合、通常モードからセキュアモードへ切り替え、前記データ処理装置は、さらに、セキュアモードにおいて、前記処理結果と前記セキュア識別情報とを受け取るセキュア受取手段と、受け取った前記セキュア識別情報に対応する前記セキュアプログラムを前記通常記憶手段から読み出すセキュア読出手段とを含み、前記処理手段は、さらに、セキュアモードにおいて、前記処理結果を用いて、前記セキュアプログラムに従って動作することを特徴とする。
この構成では、通常出力手段は、通常モードにおいて、前記処理手段による処理結果と前記セキュアプログラムを示すセキュア識別情報とを出力し、セキュア受取手段は、セキュアモードにおいて、前記処理結果と前記セキュア識別情報とを受け取り、セキュア読出手段は、受け取った前記セキュア識別情報に対応する前記セキュアプログラムを前記通常記憶手段から読み出し、前記処理手段は、さらに、セキュアモードにおいて、前記処理結果を用いて、前記セキュアプログラムに従って動作する。従って、本発明のデータ処理装置では、セキュアモードで実行される前記セキュアプログラムにより依頼された処理を、通常モードにおいて前記処理手段が前記通常プログラムに従って実行し、処理結果を正確に、前記セキュアプログラムへ返すことができる。
また、前記データ処理装置において、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースと前記処理手段とを切断することを特徴とする。
この構成によると、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースと前記処理手段とを切断するため、通常モードにおいて、前記処理手段は、前記セキュアリソースにアクセスすることができない。従って、前記セキュアリソースの安全を確保することができる。
前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースに保持されているセキュア情報を暗号化することを特徴とする。
この構成では、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースに保持されているセキュア情報を暗号化するため、通常モードにおいて、前記処理手段は、前記セキュアデータを利用することができない。従って、通常モードにおいて、前記セキュアリソースの保持するセキュアデータの安全を確保することができる。
前記データ処理装置において、前記セキュアリソースに保持されている前記セキュア情報は、セキュアモードにおいて実行され、命令コード部分とデータ部分とスタック部分から構成されるプログラムを含んでおり、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記命令コード部分を暗号化することを特徴とする。
また、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記データ部分を暗号化するとてもよい。
また、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記スタック部分を暗号化するとしてもよい。
この構成によると、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記命令コード部分を暗号化する。又は、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記データ部分を暗号化する。又は、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記スタック部分を暗号化する。
このように、前記プログラムのうち、保護する必要のある部分だけを暗号化することで、暗号化に係る処理負荷を軽くすることができる。
前記データ処理装置は、さらに、前記処理手段の動作を監視し、操作するデバッグ装置からデバッグ操作信号を受け付けるデバッグ受付手段を含み、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記処理手段と前記デバッグ受付手段とを接続し、通常モードからセキュアモードに切り替える際に、前記処理手段と前記デバッグ受付手段とを切断することを特徴とする。
この構成によると、前記切替手段は、通常モードからセキュアモードに切り替える際に、前記処理手段と前記デバッグ受付手段とを切断するため、本発明のデータ処理装置は、セキュアモードで動作中には、外部のデバッグ装置に動作の監視及び操作されることがないため、前記デバッグ装置から、前記セキュアリソースを保護することができる。
本発明のデータ処理装置において、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出す構成であっても良い。
この構成によると、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しているため、受け取った識別情報対応する位置情報を用いて、確実かつ迅速に、前記通常プログラムを読み出すことができる。
本発明は、第1オペレーティングシステムと第2オペレーティングシステムとを切り替え、各オペレーティングシステムにおいて生成されるプロセスを実行状態、実行待ち状態、休止状態のいずれかに遷移させてプロセスを実行し管理する前記データ処理装置であって、前記第1オペレーティングシステムにおいて、第1プロセスを生成する第1生成手段と、前記第2オペレーティングシステムにおいて、前記第1プロセスと対応する第2プロセスを生成する第2生成手段と、前記第1オペレーティングシステムにおいて、前記第1プロセスの状態遷移を検出する第1検出手段と、前記第1オペレーティングシステムにおいて、検出された状態遷移を示す遷移情報を出力する第1出力手段と、前記第1オペレーティングシステムを前記第2オペレーティングシステムに切り替えるOS切替手段と、前記第2オペレーティングシステムにおいて、前記遷移情報を取得する第2取得手段と、取得した前記遷移情報に従って、前記第2プロセスの状態を遷移させる第2遷移手段とを備えることを特徴とするデータ処理装置でもある。
この構成によると、前記第1オペレーティングシステムにおいて、前記第1出力手段は、前記遷移情報を出力し、OS切替手段は、前記第1オペレーティングシステムを前記第2オペレーティングシステムに切り替える第2オペレーティングシステムへ切り替え、第2オペレーティングシステムにおいて、第2遷移手段は、前記遷移情報に従って、前記第2プロセスの状態を遷移させる。従って、排他的に実行される2つのオペレーティングシステムが動作する前記データ処理装置において、前記第1オペレーティングシステムにより制御される前記第1プロセスの動作状態を、前記第2プロセスを介して前記第2オペレーティングシステムにおいても監視することができる。
前記データ処理装置は、さらに、前記第2オペレーティングシステムにおいて、前記第2プロセスの状態遷移を検出する第2検出手段と、前記第2オペレーティングシステムにおいて、検出された状態遷移を示す遷移情報を出力する第2出力手段とを含み、前記OS切替手段は、さらに、前記第2オペレーティングシステムを前記第1オペレーティングシステムに切り替え、前記データ処理装置は、さらに、前記第1オペレーティングシステムにおいて、前記遷移情報を取得する第1取得手段と、取得した前記遷移情報に従って、前記第1プロセスの状態を遷移させる第1遷移手段とを含むことを特徴とする。
この構成によると、前記第2出力手段は、前記第2オペレーティングシステムにおいて、前記遷移情報を出力し、前記第1遷移手段は、前記遷移情報に従って、前記第1プロセスの状態を遷移させる。これにより、前記第2オペレーティングシステムにより制御される前記第2プロセスの動作状態を、前記第1プロセスを介して、前記第1オペレーティングシステムにおいても監視することができる。従って、前記第1オペレーティングシステム及び前記第2オペレーティングシステムは、それぞれの制御する第1プロセス及び第2プロセスの動作状態を相互に監視することができる。
さらに、前記データ処理装置は、第1オペレーティングシステム及び第2オペレーティングシステムの両方において、アクセス可能な共有記憶領域を備え、前記第1出力手段は、前記共有記憶領域に前記遷移情報を書き込むことにより、前記遷移情報を出力し、前記第2取得手段は、前記共有記憶領域から前記遷移情報を読み出すことによって、前記遷移情報を取得することを特徴とする。
この構成によると、前記第1出力手段及び前記第2取得手段は、第1オペレーティングシステム及び第2オペレーティングシステムの両方において、アクセス可能な前記共有記憶領域を介して前記遷移情報受け渡す。前記共有記憶領域は、第1オペレーティングシステム及び第2オペレーティングシステムの両方において、アクセス可能であるので、本発明のデータ処理装置は、第1オペレーティングシステムと第2オペレーティングシステムとを排他的に実行しながら、第1オペレーティングシステムから第2オペレーティングシステムへ情報を受け渡すことができる。
前記データ処理装置を構成する前記第2出力手段は、前記共有記憶領域に前記遷移情報を書き込むことにより、前記遷移情報を出力し、前記第1取得手段は、前記共有記憶領域から前記遷移情報を読み出すことによって、前記遷移情報を取得することを特徴とする。
従って、第2オペレーティングシステムと第1オペレーティングシステムとを排他的に実行しながら、第2オペレーティングシステムから第1オペレーティングシステムへ情報を受け渡すことができる。
また、前記データ処理装置は、前記第2オペレーティングシステムにおいて管理されて動作するデバイスを含み、前記第2プロセスは、前記デバイスの駆動を制御するデバイス駆動プログラムであり、前記第2検出手段は、前記デバイスの動作に伴う前記第2プロセスの状態遷移を検出することを特徴とする。
この構成によると、前記第2プロセスは、前記デバイスの駆動を制御するデバイス駆動プログラムであり、前記第2検出手段は、前記デバイスの動作に伴う前記第2プロセスの状態遷移を検出する。従って、前記第1プロセスも、前記デバイス駆動プログラムの状態遷移に伴って招待遷移し、前記第1オペレーティングシステムにおいても、前記デバイスの駆動状態を監視することができる。
前記第1オペレーティングシステムにおいて、前記第1プロセスが、休止状態から実行状態に遷移した場合、前記データ処理装置は、前記デバイスへの処理依頼の重複を回避する排他処理を行う前記第1プロセスに従って動作し、前記第1オペレーティングシステムにおいて、前記第1出力手段は、前記排他処理が終了した後に前記遷移情報を出力することを特徴とする。
通常、このような排他処理は、前記デバイスの駆動を制御するデバイス駆動プログラムにより実行されるが、この構成によると、前記データ処理装置において、前記第1プロセスが、前記デバイスへの処理依頼の重複を回避する排他処理を行ったあと前記第1オペレーティングシステムにおいて、前記第1出力手段は、前記遷移情報を出力する。出力された前記遷移情報により、前記第2プロセスは実行状態に遷移し、前記デバイスの駆動の制御を開始する。第1オペレーティングシステムと第2オペレーティングシステムにより使用されるメモリ空間が個別に必要であり、特に、第2オペレーティングシステムにより使用されるメモリを外部のアクセスから保護する必要がある場合を想定すると、排他処理を前記第1プロセスが行うため、前記第2プロセスは、排他処理を行う必要がなくなる。従って、排他処理のために、前記第2プロセスが使用するメモリ領域が減少する。このため、保護する必要のあるメモリを削減することになり、これらのメモリを外部から保護する保護機構の負荷を軽減することができる。
前記データ処理装置は、さらに、第1オペレーティングシステム及び第2オペレーティングシステムにおいて、割込の発生を検出する割込検出手段と、前記第1オペレーティングシステムにおいて、割込が検出された場合、割込発生要因を調査する割込調査手段と、前記第1オペレーティングシステムにおいて、割込調査手段により、前記デバイスによる割込であると判断された場合、前記第1プロセスを休止状態から実行状態に遷移させる割込遷移手段とを含むことを特徴とする。
さらに、前記データ処理装置は、前記第2オペレーティングシステムにおいて、割込が検出された場合、割込の検出を示す割込通知情報を出力する通知手段を含み、前記OS切替手段は、前記第2オペレーティングシステムを前記第1オペレーティングシステムに切り替え、前記第1取得手段は、さらに、前記第1オペレーティングシステムにおいて、前記割込通知情報を取得し、前記割込調査手段は、さらに、第1オペレーティングシステムにおいて、前記割込通知情報を取得した場合、割込発生要因を調査する構成である。
この構成によると、前記第1オペレーティングシステムにおいて、割込が検出された場合、割込調査手段が、割込発生要因を調査する。また、前記第2オペレーティングシステムにおいて、割込が検出された場合、前記通知手段が割込の検出を示す割込通知情報を出力し、第1オペレーティングシステムにおいて、割込調査手段が、割込発生要因を調査する。
このようにすることで、第2オペレーティングシステムの管理下に割込調査手段を供える必要がなくなる。従って、本発明のデータ処理装置において、一つだけ、割込調査手段を備えればよい。
前記データ処理装置において、前記通知手段は、割込が検出された場合、前記割込検出手段に対して、割込の検出を停止させ、前記第1取得手段は、前記割込通知情報を取得した場合、前記割込検出手段に対して、前記停止を解除することを特徴とする。
この構成によると、前記通知手段は、割込が検出された場合、前記割込検出手段に対して、割込の検出を停止させ、前記第1取得手段は、前記割込通知情報を取得した場合、前記割込検出手段に対して、前記停止を解除する。従って、前記通知手段から出力された割込通知情報を前記第1取得手段が取得するまでの間、前記割込検出手段によって、前記第2オペレーティングシステムから前記第1オペレーティングシステムへの切り替えの動作が妨害されることがない。また、第2オペレーティングシステムから第1オペレーティングシステムへ切り替わるまでの間に、前記割込検出手段が、同一の割り込みを重複して検出することを、防ぐことができる。
本発明は、プログラムに従って動作する前記データ処理装置であって、複数の処理手順から構成されるプログラムを記憶している記憶手段と、前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断する正当性判断手段と、不正なものであると判断される場合に、前記プログラムを無効化する無効化手段とを備えることを特徴とするデータ処理装置でもある。
この構成によると、前記正当性判断手段は、前記プログラムが不正なものであるか否かを判断し、前記無効化手段不正なものであると判断される場合に、前記プログラムを無効化するため、本発明のデータ処理装置において、不正なプログラムの実行を防止することができる。
前記データ処理装置において、前記正当性判断手段は、前記記憶手段に記憶されている前記プログラムを示すプログラム識別情報を取得するプログラム情報取得部と、無効化されたプログラムを示す無効化識別情報を取得する無効化情報取得部と、取得した前記プログラム識別情報と取得した前記無効化識別情報とが一致するか否かを判断する判断部とを含み、一致すると判断される場合に、前記プログラムが不正であると決定することを特徴とする。
上記の構成では、前記情報取得部取得した前記プログラム識別情報と前記無効化情報取得部取得した前記無効化識別情報とが一致するか否かによって、容易に当該プログラムが不正であるか否かを決定することができる。
本発明のデータ処理装置に含まれる前記プログラム情報取得部は、前記プログラムを示すプログラム識別情報を記憶している識別情報記憶部と、前記識別情報記憶部から前記プログラム識別情報を読み出すことにより取得する読出部とを含み、前記無効化情報取得部は、無効化されたプログラムを示す無効化識別情報を記憶している無効化情報記憶部と、前記無効化情報記憶部から前記無効化識別情報を読み出すことにより取得する読出部とを含むことを特徴とする。
この構成によると、前記プログラム情報取得部は、予め前記プログラムを示すプログラム識別情報を記憶している前記識別情報記憶部から、迅速に、前記プログラム識別情報を取得することができる。また、前記無効化情報取得部は、予め、無効化されたプログラムを示す無効化識別情報を記憶している前記無効化情報記憶部から、迅速に前記無効化識別情報を取得することができる。
前記データ処理装置は、前記正当性判断手段が、前記プログラムに割り当てられた公開鍵の正当性を証明する公開鍵証明書に基づいて、前記プログラムが不正なものであるか否かを判断することを特徴とする。
この構成によると、前記正当性判断手段は、前記プログラムに割り当てられた公開鍵の正当性を証明する前記公開鍵証明書に基づいて、前記判断を行う。公的な第三者機関により発行された公開鍵証明書を用いることで、前記プログラムの正当性をより確実に判定することができる。
前記データ処理装置において、前記正当性判断手段は、前記公開鍵を識別する公開鍵識別情報を含む前記公開鍵証明書を記憶している証明書記憶部と、前記公開鍵証明書から前記公開鍵識別情報を取得する公開鍵情報取得部と、無効化された公開鍵を示す無効化識別情報を記憶している無効化情報記憶部と、前記無効化情報記憶部から無効化識別情報を読み出す無効化情報読出部と、取得した前記公開鍵識別情報と読み出した前記無効化識別情報とが一致するか否かを判断する判断部とを含み、一致すると判断される場合に、前記プログラムが不正であると決定することを特徴とする。
上記の構成によると、前記判断部は、前記証明書記憶部の記憶している前記公開鍵証明書に含まれる前記公開鍵識別情報と前記無効化情報記憶部の記憶している前記無効化識別情報とを比較することで、容易に、前記プログラムが不正であると決定することができる。
前記データ処理装置において、前記正当性判断手段は、さらに、外部から最新の無効化識別情報を取得し、取得した無効化識別情報を前記無効化情報記憶部に書き込む更新部を含むことを特徴とする。
この構成によると、前記更新部が、外部から最新の無効化識別情報を取得し、取得した無効化識別情報を前記無効化情報記憶部に書き込む。一般に、公開鍵証明書の発行機関は、後発的に無効化された公開鍵を示す情報を追加して前記無効化識別情報を定期的に更新している。この発行機関から最新の無効化識別情報を取得して用いることで、前記データ処理装置の販売後に不正であることが判明したプログラムにも対応することができる。
また、前記更新部は、前記記憶手段へのアクセス要求を検出する度に、最新の無効化識別情報を取得することを特徴とする。
上記の構成では、前記更新部は、前記記憶手段へのアクセス要求を検出する度に、最新の無効化識別情報を取得するため、前記判定部は常に最新の無効化識別情報を用いて前記プログラムの正当性を判断することができる。
前記データ処理装置において、前記更新部は、CRL(Certificate Revocation List)発行装置から、ネットワークを介して、前記無効化識別情報を受信し、CRL発行装置から、ネットワーク及びサーバ装置を介して、前記無効化識別情報を受信し、又は記録媒体から前記無効化識別情報を読み出すことにより、取得することを特徴とする。
上記の構成では、前記更新部は、CRL発行装置から、ネットワークを介して、前記無効化識別情報を受信するため、最新の無効化識別情報を取得することができる。
また、CRL発行装置から、ネットワーク及びサーバ装置を介して、前記無効化識別情報を受信するため、前記データ処理装置自身に外部のネットワークとの通信機能がない場合であっても、サーバ装置によって、前記無効化識別情報を更新することができる。
また、記録媒体から前記無効化識別情報を読み出すことにより、前記CRL発行装置と通信する環境がない場合でも、当該データ処理装置は、前記無効化識別情報を更新することもできる。
前記更新部は、さらに、外部から、前記最新の無効化識別情報に対してデジタル署名を施して生成された署名データを取得し、取得した署名データに署名検証を施し、署名検証が成功した場合に、取得した前記無効化識別情報を前記無効化情報記憶部に書き込むことを特徴とする。
この構成では、前記更新部は、前記署名データを取得し、取得した署名データに署名検証を施し、署名検証が成功した場合に、取得した前記無効化識別情報を前記無効化情報記憶部に書き込むため、前記無効化識別情報の正当な発行者から発行された無効化識別情報を取得することができる。
前記データ処理装置を構成する前記正当性判断手段は、少なくとも当該公開鍵に対してデジタル署名を施して生成された署名データを含む前記公開鍵証明書を記憶している証明書記憶部と、前記証明書記憶部から前記公開鍵証明書を取得する公開鍵証明書取得部と、取得した前記公開鍵証明書に含まれる署名データに、署名検証を施すことにより、取得した前記公開鍵証明書が正しいものであるか否かを検証する検証部とを含み、前記公開鍵証明書が正しいものでないと判断される場合に、前記プログラムが不正であると決定することを特徴とする。
この構成では、前記正当性判断手段は、前記署名データに、署名検証を施すことにより、取得した前記公開鍵証明書が正しいものであるか否かを検証し、前記公開鍵証明書が正しいものでないと判断される場合に、前記プログラムが不正であると決定する。従って、前記データ処理装置は、前記プログラムに割り当てられた公開鍵証明書が不正な第三者により不正に生成ものであるか否かを判断することが可能であり、正当な公開鍵証明書を有するプログラムだけを実行することができる。
また、前記データ処理装置において、前記正当性判断手段は、少なくとも2個の公開鍵の正当性をそれぞれ証明する少なくとも2個の公開鍵証明書を用いて、前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断してもよい。
この構成では、前記正当性判断手段は、少なくとも2個の公開鍵証明書を用いて、前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断する。複数の公開鍵証明書を用いて前記判断を行うことで、より正確に、前記プログラムが不正であるか否かを判断できる。
前記2個の公開鍵は、前記プログラムに割り当てられた第1公開鍵及び前記データ処理装置又は前記プログラムの動作を制御するオペレーティングシステムに割り当てられた第2公開鍵であり、前記データ処理装置を構成する前記正当性判断手段は、権威のある認証機関の秘密鍵を用いて、少なくとも前記第2公開鍵に対してデジタル署名を施して生成された第2署名データと、前記第2公開鍵とを含む第2公開鍵証明書と、前記データ処理装置又は前記オペーティングシステムの秘密鍵を用いて、少なくとも前記第1公開鍵に対してデジタル署名を施して生成された第1署名データと、前記第1公開鍵とを含む第1公開鍵証明書とを記憶している証明書記憶部と、前記証明書記憶部から前記第1公開鍵証明書及び前記第2公開鍵証明書を取得する公開鍵証明書取得部と、取得した前記第2公開鍵証明書に含まれる第2署名データに、前記認証機関の公開鍵を用いて、署名検証を施すことにより、取得した前記第2公開鍵証明書が正しいものであるか否かを検証し、正しいと判定された場合に、前記第2公開鍵証明書から前記第2公開鍵を取得し、取得した前記第1公開鍵証明書に含まれる第1署名データに、取得した前記第2公開鍵を用いて、署名検証を施すことにより、取得した前記第1公開鍵証明書が正しいものであるか否かを検証する検証部とを含み、前記第2公開鍵証明書が正しいものでないと判断される場合及び前記第1公開鍵証明書が正しいものでないと判断される場合に、前記プログラムが不正であると決定することを特徴とする。
この構成によると、前記正当性判断手段は、取得した前記第2公開鍵証明書に含まれる第2署名データに、前記認証機関の公開鍵を用いて、署名検証を施すことにより、取得した前記第2公開鍵証明書が正しいものであるか否かを検証し、正しいと判定された場合に、前記第2公開鍵証明書から前記第2公開鍵を取得し、取得した前記第1公開鍵証明書に含まれる第1署名データに、取得した前記第2公開鍵を用いて、署名検証を施すことにより、取得した前記第1公開鍵証明書が正しいものであるか否かを検証する。このように、階層構造を形成する複数の公開鍵証明書を用いて検証することで、上位の公開鍵証明書が無効な場合、つまり、前記プログラムを制御するオペレーティングシステムが不正である場合にも前記プログラムを無効化し、不正なオペレーティングシステムのもとで、前記プログラムが実行されることを防ぐ。
又は、当該データ処理装置が不正である場合にも、前記プログラムの実行を防止することができる。
前記データ処理装置を構成する前記正当性判断手段は、前記記憶手段へのアクセス要求を検出する度に、前記判断をすることを特徴とする。
また、前記正当性判断手段は、前記記憶手段に記憶されているプログラムへのアクセス要求を検出する度に、前記判断してもよい。
また、前記正当性判断手段は、当該データ処理装置へ電力供給が開始された直後に、前記判断をするとしてもよい。
上記の構成によると、前記正当性判断手段は、前記記憶手段へのアクセス要求を検出する度に、前記判断をする。又は、前記記憶手段に記憶されているプログラムへのアクセス要求を検出する度に、前記判断をする。又は、当該データ処理装置へ電力供給が開始された直後に、前記判断をする。従って、前記プログラムを実行する前に、前記プログラムが不正であるか否かを判断することができる。
また、本発明は、暗号化されたプログラムを復号して実行する前記データ処理装置であって、前記記憶手段は、前記プログラムに代えて、プログラム鍵を用いて、前記プログラムに暗号化アルゴリズムが施されて生成された暗号化プログラムを記憶しており、前記正当性判断手段は、p個の暗号鍵から選択されたm個の暗号鍵を記憶している暗号鍵記憶部と、前記m個の暗号鍵のそれぞれを用いて、前記プログラム鍵及び所定の検知情報のいずれかが暗号化されて生成されたm個の暗号化情報を、m個の前記暗号鍵に対応づけて記憶している暗号化情報記憶部と、前記m個の暗号鍵のそれぞれを用いて、対応する暗号化情報に復号アルゴリズムを施して、m個の復号情報を生成する復号部と、生成されたm個の復号情報の全てが、前記検知情報であるか否かを判断する判断部とを含み、生成されたm個の復号情報の全てが、前記検知情報であると判断される場合に、前記プログラムが不正なものであると決定することを特徴とする。
さらに、前記p個の暗号鍵は、n行m列(p=n×m)の第1行列の各要素位置に配されており、前記第1行列の各列から1個の暗号鍵が選択されることにより、前記第1行列からm個の暗号鍵が選択され、前記データ処理装置を構成する前記暗号鍵記憶部は、前記第1行列において、各暗号鍵が配された要素位置を、各暗号鍵に対応付けて記憶しており、前記暗号化情報記憶部は、n行m列の第2行列において、各暗号化情報に対応する暗号鍵が配されている要素位置と同じ要素位置において、当該暗号化情報を記憶しており、復号部は、前記暗号鍵記憶部から、暗号鍵と対応する要素位置を読み出し、前記暗号化情報記憶部の第2行列において、前記読み出した要素位置と同じ要素位置に配されている暗号化情報を読み出し、読み出した前記暗号鍵を用いて、読み出した前記暗号化情報に復号アルゴリズムを施すことを特徴とする。
上記の構成によると、前記正当性判断手段は、前記m個の暗号鍵のそれぞれを用いて、対応する暗号化情報に復号アルゴリズムを施して、m個の復号情報をし、生成されたm個の復号情報の全てが、前記検知情報であると判断される場合に、前記プログラムが不正なものであると決定する。前記プログラムが正当である場合、当該データ処理装置は、暗号化された前記暗号鍵から暗号鍵を生成し、生成した暗号鍵により、前記暗号化プログラムを復号してプログラムを生成し、生成したプログラムを実行する。このように、2重の暗号化を施すことにより、前記プログラムを不正な利用から保護することができる。
また、前記第1行列の各列から1個の暗号鍵が選択されることにより、前記p個の暗号鍵が、選択されている。ここで、同一のプログラム鍵により暗号化された複数の暗号化プログラムが存在する場合を想定する。いずれかのプログラムが不正であり、この不正なプログラムに割り当てられたm個暗号鍵を用いて生成されるm個の復号情報は全て前記検知情報である。他の正当なプログラムに割り当てられたm個の暗号鍵のうち、いずれかが、前記不正なプログラムのm個の暗号鍵と一致していても、その他の暗号鍵により、前記プログラム鍵を生成することができる。プログラムごとに異なる組み合わせで、m個の暗号鍵を割り当てることで、不正なプログラムのみを無効化し、正当なプログラムは、利用することができる。
また、本発明は、前記データ処理装置であって、データを記憶するためのメモリ手段と、複数の処理手順から構成されるプログラムに従って動作するプロセッサと、前記メモリ手段と前記プロセッサとの間に配置され、前記プロセッサから出力される前記メモリ手段宛の転送データが転送制限条件を満たしているか否かを判断し、転送制限条件を満たしていると判断する場合に、前記メモリ手段への転送データの転送を抑制し、転送制限条件を満たしていないと判断する場合に、前記メモリ手段への転送データの転送を行う監視手段とを備えることを特徴とする。
この構成によると、前記監視手段は、前記メモリ手段と前記プロセッサとの間に配置され、前記プロセッサから出力される前記メモリ手段宛の転送データが転送制限条件を満たしているか否かを判断し、転送制限条件を満たしていると判断する場合に、前記メモリ手段への転送データの転送を抑制する。このようにすることで、前記プログラムの動作中に発生する前記メモリへの不正なアクセスを防止することができる。
前記データ処理装置において、前記監視手段は、複数のアプリケーションプログラム毎に、転送制限条件を記憶しており、前記プロセッサにより実行されるアプリケーションプログラム毎に、転送制限条件を選択し、選択した転送制限条件を用いることを特徴とする。
この構成では、前記監視手段は、前記プロセッサにより実行されるアプリケーションプログラム毎に、転送制限条件を選択し、選択した転送制限条件を用いる。前記データ処理装置において、複数のアプリケーションプログラムが実行される場合、アプリケーションごとに利用するデータやデバイスが異なることは十分考えられる。従って、アプリケーションプログラムごとに異なる転送制限条件を用いることで、当該データ処理装置は、複数のアプリケーションプログラムを安全に実行することができる。
また、前記転送制限条件は、前記メモリ手段内の所定の記憶空間を示すアドレス範囲情報であり、前記データ処理装置は、前記監視手段が、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、前記転送データの転送を抑制することを特徴とする。
上記に構成によると、前記監視手段は、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、前記転送データの転送を抑制する。従って、前記プロセッサが前記所定の記憶空間にアクセスすることを阻止することができる。
前記転送制限条件は、前記メモリ手段内の所定の記憶空間へのアクセス回数の上限を示す制限回数であり、前記データ処理装置を構成する前記監視手段は、過去における前記記憶空間へのアクセスの累積回数を記憶しており、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、前記累積回数に1を加算し、加算して得られた加算後回数が、前記制限回数を超える場合に、前記転送データの転送を抑制することを特徴とする。
この構成によると、前記監視手段は、加算後回数が、前記制限回数を超える場合に、前記転送データの転送を抑制する。このようにすることで、前記プログラムの実行中に、何らかの原因で偶発的に起こった不正アクセスについては、見逃し、例えば、前記プログラムの不正な改ざんによって、定常的に前記所定の記憶空間へ不正なアクセスが起こる場合のみ前記プログラムの実行に伴う転送データの転送を抑制する。
本発明において、前記監視手段は、前記プロセッサに接続されるバス上において転送される前記転送データが転送制限条件を満たしているか否かを判断することを特徴とする。
この構成によると、前記監視手段は、前記プロセッサに接続されるバス上において転送される前記転送データが転送制限条件を満たしているか否かを判断するため、前記プロセッサから伝送データが出力される度に、確実に、前記判定を行うことができる。
本発明のデータ処理装置を構成する前記メモリ手段は、暗号鍵を用いて、前記プロセッサにより実行されている現プログラムとは異なるアプリケーションプログラムのコード部分とデータ部分とがそれぞれ暗号化されて生成された暗号化コード及び暗号化データを記憶しており、前記転送制限条件は、前記メモリ手段内において前記暗号化データが格納されている記憶空間を示すアドレス範囲情報であり、前記監視手段は、前記暗号化コード及び暗号化データを復号するための復号鍵を記憶しており、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記暗号化コードが格納されている記憶空間を示すアドレス範囲内にある場合に、前記復号鍵を用いて、前記転送データにより示される記憶空間に存在する暗号化コードを復号して復号コードを生成し、生成した復号コードを前記プロセッサへ転送し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、転送データの転送を抑制することを特徴とする。
この構成によると、前記監視手段は、前記暗号化コード及び暗号化データを復号するための復号鍵を記憶しており、前記アドレス情報が、前記暗号化コードが格納されている記憶空間を示すアドレス範囲内にある場合に、前記復号鍵を用いて、前記転送データにより示される記憶空間に存在する暗号化コードを復号して復号コードを生成し、生成した復号コードを前記プロセッサへ転送し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、転送データの転送を抑制する。これにより、前記アプリケーションプログラムのデータ部分の使用を当該アプリケーションプログラムのみに限定することができる。
前記監視手段は、さらに、転送制限条件を満たしていると判断する場合に、前記プロセッサにより実行中の前記プログラムを識別する識別情報をプログラム無効化リストに追加することを特徴とする。
この構成では、前記監視手段は、転送制限条件を満たしていると判断する場合に、前記プロセッサにより実行中の前記プログラムを識別する識別情報をプログラム無効化リストに追加ため、前記プロセッサにより、このプログラムが再度実行されることを防ぐことができる。
本発明の前記データ処理装置は、データを記憶するためのメモリ手段と、複数の処理手順から構成されるプログラムに従って動作し、次に実行対象となる命令のアドレスが格納されているプログラムカウンタを備えるプロセッサと、前記プログラムカウンタに格納されているアドレスが、所定のアドレス範囲内に含まれるか否かを判断し、所定のアドレス範囲内に含まれると判断する場合に、前記プロセッサに対して、プログラムカウンタに所定の値を格納するように指示する監視手段とを備え、前記プロセッサが、前記指示を受け取ると、プログラムカウンタに前記所定の値を格納することを特徴とする。
この構成によると、前記監視手段は、前記プログラムカウンタに格納されているアドレスが、所定のアドレス範囲内に含まれるか否かを判断し、所定のアドレス範囲内に含まれると判断する場合に、前記プロセッサに対して、プログラムカウンタに所定の値を格納するように指示する。このようにすることで、前記プロセッサが前記所定のアドレス範囲と対応する記憶領域にアクセスすることを事前に防止し、例えば、オペレーティングシステムなどの他のプログラムへ前記プロセッサの実行権を移すことで、前記プログラムの実行を中断させることができる。
以下、本発明の実施の形態について図面を用いて詳細に説明する。
1. 実施の形態1
本発明の実施の形態について、以下に説明する。
図1は、本発明の携帯電話100の使用例を示している。携帯電話100は、メモリカード300を装着される。
メモリカード300は、暗号化された音楽データが記録されており、携帯電話100は、メモリカード300から音楽データを読み出して再生する。
また、携帯電話100は、基地局15、携帯電話網10、インターネット20を介してコンテンツ配信装置と接続されている。携帯電話100は、コンテンツ配信装置の記憶している音楽、映像などから構成される各種のコンテンツをインターネット、携帯電話網を介して取得する。
1.1 メモリカード300
メモリカード300は、図2に示すように、入出力部301、セキュア処理部302、一般領域303及びセキュア領域306から構成される。
一般領域303は、外部機器により自由にアクセスすることができる記憶領域であり、暗号化音楽データ304を記憶している。セキュア領域306は、許可された外部機器のみがアクセスできる記憶領域であり、コンテンツ鍵307が記憶されている。
暗号化音楽データ304・・・は、1曲分の音楽データに、コンテンツ鍵307を用いて、暗号化アルゴリズムE1を施して生成されたものである。各暗号化音楽データは、楽曲IDにより識別される。
暗号化アルゴリズムE1は、一例としてDES(Data Encryption Standard)などを用いる。
入出力部301は、外部機器と一般領域303及びセキュア処理部302との間で各種のデータを入出力する。
セキュア処理部302は、外部機器との間で、CPRM(Content Protection for Recordable Media)の仕組みに基づいて相互認証を行い、認証に成功した場合に、認証した機器と鍵を共有する。共有した鍵を用いて、外部機器との間で、安全にデータの入出力を行う。
なお、CPRMについては、公知であるので説明を省略する。また、他の認証方法により認証を行ってもよい。
1.2 携帯電話100の構成
携帯電話100は、図2に示すように、デバッガIF101、CPU102、MMU103、二次記憶部104、切替制御部106、割込コントローラ107、入力部108、表示部109、通常メモリ111、共有メモリ112、セキュアメモリ113、メモリ保護部114、入出力部116、暗号処理デバイス117、無線通信制御部118、マイク119、スピーカ120、通信部121、アンテナ122、バッファ123、符号処理部124及びD/A変換部126から構成され、各回路はバス130に接続されている。
携帯電話100は、具体的にはコンピュータシステムであり、通常メモリ111、共有メモリ112、セキュアメモリ113、二次記憶部104には各種のコンピュータプログラム記憶されており、CPU102がこれらのコンピュータプログラムに従って動作することにより、携帯電話100はその機能の一部を実現する。
(1)二次記憶部104、共有メモリ112
二次記憶部104は、ROMから構成され、一例として、図3に示すように、暗号化音楽復号プログラム141及び音楽復号デーモン142などを記憶している。
暗号化音楽復号プログラム141は、セキュアメモリ113上にロードされて実行される音楽復号プログラムを暗号化して生成されたものである。音楽復号プログラムは、メモリカード300に記憶されている暗号化音楽データ304を復号するプログラムである。これについては、後に、詳細に説明する。
音楽復号デーモン142は、通常メモリ111上にロードされて実行されるプログラムであり、音楽復号プログラムと1対1に対応する。
音楽復号の処理のうちで、高いセキュリティを要する処理及び保護されるべきデータを扱う処理を音楽復号プログラムが実行し、高いセキュリティを必要としない処理を音楽復号デーモンが実行する。詳細については、後に述べる。
共有メモリ112は、RAMから構成され、通常メモリ111上のプログラム及びセキュア記憶上のプログラムいずれのプログラムからも使用可能なメモリである。
なお、ここでは、二次記憶部104はROMから構成されるとしているが、ハードディスクユニットから構成されるとしても良い。
(2)通常メモリ111及びセキュアメモリ113
通常メモリ111は、RAM及びROMから構成され、CPU102により実行される各種のプログラムを記憶している。一例として、図4に示すように、通常OS151、ライブラリ152、音楽再生プログラム153、音楽復号デーモン156、通常入出力デバイスドライバ157、セキュア入出力エントリデバイスドライバ158、暗号エントリデバイスドライバ159、通常切替デバイスドライバ160及び通常割込ハンドラ161を記憶している。
セキュアメモリ113は、RAMから構成され、CPU102によって、実行される各種のプログラムを記憶している。セキュアメモリ113は、メモリ保護部114を介してバス130と接続されている。
セキュアメモリ113は、一例として、図6に示すように、セキュアOS171、音楽復号プログラム176、セキュア入出力デバイスドライバ178、暗号デバイスドライバ179、セキュア切替デバイスドライバ180、セキュア割込ハンドラ181を記憶している。
図8は、通常メモリ111及びセキュアメモリ113に記憶されている各プログラム間の関係を機能的に示したブロック図である。実際には、同一メモリ上の各プログラム間の通信は、通常OS151及びセキュアOS171へシステムコールを出力することにより実現される。また、通常切替デバイスドライバ160、セキュア切替デバイスドライバ180及び切替制御部106が動作することにより、通常OS151とセキュアOS171とを切り替えているが、図8においては、オペレーティングシステムによる仲介及び通常OS151とセキュアOS171との切り替えに係るプログラムを省略している。
また、図8において、共有メモリ112は、通常入出力デバイス132及び暗号処理デバイス117と接続されているが、これは、共有メモリ112の果たす役割の一部を示しており、共有メモリ112は、その他のプログラムによっても使用される。
<通常OS151>
通常OS151は、通常メモリ111上にロードされて実行される各種のプログラムを制御する基本ソフトウェアであり、制御プログラムと制御データから構成される。
制御データには、図4に示すように、アプリ管理表166が含まれる。アプリ管理表166は、図5に示すように複数のエントリ167、168・・・を含む。各エントリは、ハンドル値、デーモンアドレス、アプリコンテキストアドレスから構成される。
ハンドル値は、セキュアメモリ113上にロードされるセキュアアプリケーションに割り当てられる識別子である。
以下の説明において、セキュアメモリ113上にロードされて、セキュアな処理を実行するアプリケーションをセキュアアプリケーションと呼ぶ。ここで、セキュアな処理とは、保護されるべきデータを扱う処理及びアルゴリズム自体を保護する必要のある処理である。
デーモンアドレスは、セキュアアプリケーションと対応して動作するプログラムの通常メモリ111上のロードアドレスである。
アプリコンテキストアドレスは、ハンドル値と対応するセキュアアプリケーションにセキュアな処理を依頼するアプリケーションのコンテキストを保存している通常メモリ111上のアドレスである。コンテキストには、CPU102のレジスタ値、スタックポインタ、MMU103の内容などが含まれる。
具体的にエントリ167について説明すると、ハンドル値「1」は、音楽再生プログラム153がセキュアな処理を依頼する音楽復号プログラム176(後述する)に割り当てられる識別子である。デーモンアドレス「0000BBBB」は、音楽復号プログラム176と対応して動作する音楽復号デーモン156の通常メモリ111上のロードアドレスである。アプリコンテキストアドレス「0000AAEE」は、音楽再生プログラム153のコンテキストを保存している通常メモリ111上のアドレスである。
また、制御データには、通常入出力デバイスドライバ157を示す識別情報デバイスあるデバイスID_A、セキュア入出力エントリデバイスドライバ158を識別する識別情報であるデバイスID_B及び暗号エントリデバイスドライバ159を示す識別情報であるデバイスID_Cとが含まれる。これらは、それぞれ、通常入出力デバイスドライバ157、セキュア入出力エントリデバイスドライバ158及び暗号エントリデバイスドライバ159の通常メモリ111上のロードアドレスと対応付けて記憶されている。デバイスID_Bは、セキュア入出力デバイスドライバ178(後述する)を示す識別情報と同一であり、デバイスID_Cは、暗号デバイスドライバ179を示す識別情報と同一である。
通常OS151は、共有メモリ112内の所定の領域(コマンド領域と呼ぶ)を介して、セキュアOS171との間で各種のコマンドの送受信を行う。また、通常メモリ111上のプログラムとの間でも各種のコマンドの送受信を行う。通常メモリ111上のプログラムとの間のプログラムの送受信には、共有メモリ112を用いても良いし、通常メモリ111を用いても良い。
図9(a)は、通常OS151が扱うコマンドのデータ構造の一例を示している。コマンド1000は、コマンド部1011とデータ格納部1012から構成される。
コマンド部1011に格納されるコマンドには、セキュアアプリ登録要求、登録完了通知、アプリ復帰要求、セキュアアプリ削除命令、削除完了通知、システムコール、応答通知、セキュア処理要求、外部処理要求、休眠要求、割込発生通知などがある。
データ格納部1012には、各種データ及びコマンド1016、データ及びコマンド1016の受け取り先となるプログラムを示す識別情報1013などが、コマンド部1011に格納されるコマンドに応じて格納される。
セキュアアプリ登録要求は、通常メモリ111上で動作するアプリケーションが、セキュアな処理を依頼するセキュアアプリケーションをセキュアメモリ113上にロードし使用可能な状態にすることを要求するコマンドである。このとき、図9(b)の示すようにデータ格納部1012には、セキュアアプリケーションを示すセキュアアプリ情報とセキュアアプリケーションと対応して動作するプログラムを示すデーモン情報とが格納される。音楽再生プログラム153から出力されるセキュアアプリ登録要求を例にすると、セキュアアプリ情報は、二次記憶部104上の暗号化音楽復号プログラム141の記憶されているアドレスであり、デーモン情報は、音楽復号デーモン142の記憶されているアドレスである。なお、セキュアアプリ情報及びデーモン情報は、暗号化音楽復号プログラム141及び音楽復号デーモン142と対応する識別子などでも良い。
登録完了通知は、セキュアメモリ113上に、セキュアアプリケーションがロードされ、セキュアアプリ管理表(後述する)への登録が完了したことを通知する。このとき、データ格納部1012には、登録されたセキュアアプリケーションと対応するハンドル値が格納されている。
アプリ復帰要求は、依頼されていた処理を終えたセキュアアプリケーションが、依頼元であるアプリケーションの復帰を要求するコマンドである。このとき、データ格納部には、セキュアアプリケーションを示す識別情報が格納されている。
セキュアアプリ削除命令は、セキュアメモリ113上のセキュアアプリケーションの削除を指示するものである。このとき、データ格納部1012には、削除するセキュアアプリケーションを一意に識別するハンドル値が格納されている。
削除完了通知は、セキュアメモリ113上のセキュアアプリケーションが削除されたことを通知するものである。このとき、データ格納部1012には、削除されたセキュアアプリケーションを一意に識別するハンドル値が格納されている。
システムコールは、通常メモリ111上のアプリケーションが、通常OS151へ、通常メモリ111上の他のプログラムへコマンド又はデータの仲介を依頼するコマンドである。このとき、データ格納部1012には、仲介を依頼したアプリケーションを示す識別情報と仲介先のプログラムを示す識別情報と、仲介するデータ及びコマンドが書き込まれている。
一例として、図9(c)は、音楽復号デーモン156が出力したシステムコールのデータ構造を示している。コマンド部1011には、システムコールが格納されており、データ格納部1012には、システムコールの発信元である音楽復号デーモン156を示すハンドル値「1」と、データの受け取り先である暗号エントリデバイスドライバ159を示すデバイスID_Cと、仲介されるデータ「処理結果」が格納されている。
応答通知は、システムコールによりアプリケーションからコマンド又はデータを受け取ったプログラムが、受け取ったコマンド及びデータに従って処理を行い、システムコールの出力元のアプリケーションへの処理結果の通知を、通常OS151へ依頼するものである。データ格納部1012には、通知依頼したプログラムを示す識別情報と通知先のアプリケーションを示す識別情報と、処理結果などが格納されている。
一例として、図9(c)に示すシステムコールにより、ハンドル値「1」、デバイスID_C及び処理結果を受け取った暗号エントリデバイスドライバ159は、排他制御を解除し(詳細は後述する)、ハンドル値「1」、デバイスID_C及び処理結果を含む応答通知を通常OS151へ出力することにより、通常OS151を介して、ハンドル値「1」、デバイスID_C及び処理結果を音楽復号デーモン156へ通知する(詳細は後述する)。
セキュア処理要求は、通常メモリ111上のプログラムからセキュアメモリ113上のプログラムへのコマンド又はデータの仲介を依頼するコマンドである。このとき、データ格納部1012には、セキュア処理要求の出力元であるプログラムを示す識別情報と、仲介先のプログラムを示す情報及び仲介するデータ及びコマンドが格納されている。図9の(d)は、一例として、音楽復号デーモン156から出力されるセキュア処理要求のデータ構造を示している。データ格納部1012には、セキュア処理要求の出力元である音楽復号デーモン156を示すハンドル値「1」、受け取り先である暗号デバイスドライバ179を示すデバイスID_Cと、仲介されるコマンド「割込通知」とが格納されている。
外部処理要求は、セキュアメモリ113上のプログラムから通常メモリ111上のプログラムへのコマンド及びデータの仲介を依頼するものである。このとき、データ格納部1012には、セキュア処理要求の出力元であるプログラムを示す識別情報と、仲介先のプログラムを示す識別情報と、仲介されるデータ及びコマンドが格納されている。図9(e)は、一例として、暗号デバイスドライバ179から出力される外部処理要求のデータ構成を示している。コマンド部には、外部処理要求が格納されており、データ格納部には、外部処理要求の出力元である暗号デバイスドライバ179と対応するデバイスID_Cと受け取り先である音楽復号デーモン156と対応するハンドル値「1」と、仲介されるコマンド「休眠要求」が格納されている。
休眠要求は、携帯電話100の備える、デバイスのデバイスドライバ及びデバイスへ処理を依頼したプログラムを休眠状態に遷移させることを依頼するコマンドである。このとき、データ格納部1012には、休眠要求を依頼するデバイスドライバを示す識別情報と、デバイスへ処理を依頼するプログラムと対応する識別情報とが格納されている。
割込発生通知は、割込の発生を通知するものである。
以下に、図10のフローチャートを用いて、通常OS151の動作について説明する。なお、通常OS151は、このフローチャートにおいて説明する処理以外にも、各種の処理を実行する。
ここで、セキュアアプリ登録要求、登録完了通知、アプリ復帰要求、セキュアアプリ削除命令及び削除完了通知については、具体的に、通常メモリ111上のアプリケーションを音楽再生プログラム153、セキュアアプリケーションを音楽復号プログラム176、セキュアアプリケーションと対になって動作するプログラムを音楽復号デーモン156として説明する。
通常OS151は、切替処理によってCPU102に復帰すると、共有メモリ112のコマンド領域からコマンドを読み出す(ステップS1001)。なお、切替処理については、以下の通常切替デバイスドライバ160及びセキュア切替デバイスドライバ180の説明において、詳細に説明する。
読み出したコマンドを解読し(ステップS1002)、解読したコマンドが登録完了通知であれば、音楽復号デーモン156を通常メモリ111上にロードし(ステップS1004)、ロードしたアドレスと、登録完了通知のデータ格納部に含んで受け取ったハンドル値「1」をアプリ管理表166のエントリ167に書き込み(ステップS1005)、ハンドル値「1」を音楽再生プログラム153へ出力する。
読み出したコマンドが外部処理要求であれば(ステップS1002)、データ格納部に含まれる仲介先を示す識別情報と対応するプログラムを呼び出し、呼び出したプログラムへ外部処理要求のデータ格納部に含んで受け取った情報を出力する(ステップS1006)。
読み出したコマンドが割込発生通知であれば(ステップS1002)、CPU102の割込レジスタに書き込まれているダミーデータを消去することで割込マスクを解除する(ステップS1007)。割込マスクについては、後のセキュア割込ハンドラ181に関する説明において述べる。
読み出したコマンドが、アプリ復帰要求である場合(ステップS1002)、データ格納部に含まれるハンドル値「1」と、アプリ管理表166とを基に、音楽再生プログラム153のコンテキストを復帰させる(ステップS1009)。
読み出したコマンドが、削除完了通知であれば(ステップS1002)、データ格納部に含まれるハンドル値「1」と対応する音楽復号デーモン156を通常メモリ111から削除し(ステップS1011)、アプリ管理表166からハンドル値「1」を含むエントリ167を削除する(ステップS1012)。
次に、通常メモリ111上の各プログラムからのコマンドを受け付ける(ステップS1013)。
システムコールを受け付けると(ステップS1013)、データ格納部に書き込まれているハンドル値又はデバイスIDなどの仲介先を示す識別情報と対応するプログラムを呼び出し、データ格納部に含まれる情報を出力する(ステップS1014)。例えば、ハンドル値「1」が含まれていると、アプリ管理表166でハンドル値「1」を含むエントリ167を選択し、選択したエントリ167のデーモンアドレスを基に音楽復号デーモン156を呼び出し、デバイスID_Cが含まれていると、暗号エントリデバイスドライバ159を呼び出す。
また、具体的には図示していないが、応答通知を受け取った場合も、システムコールを受け取った場合と同様に、データ格納部に書き込まれている識別情報と対応するアプリケーションを呼び出し、データ格納部に含まれる情報を出力する。
休眠要求を受け付けると(ステップS1013)、データ格納部に書き込まれているハンドル値又はデバイスIDなどの識別情報に対応するプログラムと対応するプログラムを休眠状態に遷移させる(ステップS1016)。休眠状態とは、一切の動作を行わない状態を言う。
音楽復号プログラム176から図9(b)の示すように、データ格納部にセキュアアプリ情報とデーモン情報とを含むセキュアアプリ登録要求を受け付けると(ステップS1013)、音楽再生プログラム153のコンテキストを通常メモリ111上に保存し、保存先のアドレスをアプリコンテキストアドレスに書き込み、セキュアアプリ情報を基に二次記憶部104から読み出した暗号化音楽復号プログラム141を共有メモリ112に書き込む(ステップS1017)。次に、セキュアアプリ登録要求を、共有メモリ112上に書き込み(ステップS1018)、ステップS1028へ処理を移す。このときの、セキュアアプリ登録要求は、データ格納部に暗号化音楽復号プログラムの共有メモリ112上の書き込み先のアドレスを含んでいる。
音楽再生プログラム153からセキュアアプリ削除命令を受け取ると(ステップS1013)、受け取ったセキュアアプリ削除命令を共有メモリ112に書き込む(ステップS1019)。ここで、データ格納部には、削除対象となる音楽復号プログラム176を示すハンドル値「1」が格納されている。
セキュア処理要求を受け付けると(ステップS1013)、受け付けたセキュア処理要求を共有メモリ112に書き込む(ステップS1021)。次に、切替処理を行う(ステップS1028)。
また、割込が発生し、割込みコントローラ107から割込発生通知を受け取る(ステップS1023)、通常割込ハンドラ161を起動する(ステップS1024)。通常割込ハンドラ161による、割込要因の調査結果に基づき休眠しているプログラムの休眠を解除し(ステップS1026)。ステップS1013へ処理を移す。
なお、本実施の形態では、通常OS151とセキュアOS171とは、共有メモリ112を介して、各種のコマンドをやり取りしているが、共有メモリ112に代わって、専用レジスタを用いるとしてもよい。
<セキュアOS171>
セキュアOS171は、図6に示すように、オペレーティングプログラム172、デバッグ無効化プログラム173、暗復号プログラム174から構成される。
デバッグ無効化プログラム173は、デバッガIF101のレジスタにダミーデータを書き込み、デバッガIF101を無効化するプログラムである。なお、デバッガIF101とCPU102との間にスイッチを備え、デバッグ無効化プログラム173は、このスイッチを開閉することで、デバッガIF101を無効化する構成であってもよい。
暗復号プログラム174は、予め復号鍵をコーディングされており、暗号化音楽復号プログラムを復号して、音楽復号プログラムを生成する。
オペレーティングプログラム172は、セキュアメモリ113上にロードされる各種のプログラムを制御する基本ソフトウェアであり、制御プログラムと制御データとから構成される。制御部データには、図6に示すように、セキュアアプリ管理表186が含まれる。
セキュアアプリ管理表186は、図7に示すように、複数のエントリ187、188・・・を含む。各エントリは、ハンドル値、セキュアアプリアドレス、セキュアアプリコンテキストアドレスから構成され、セキュアメモリ113上にロードされているセキュアアプリケーションと対応している。
ハンドル値は、各セキュアアプリケーションに割り当てられた識別子である。
セキュアアプリアドレスは、セキュアアプリケーションがロードされている、セキュアメモリ113上のアドレスである。セキュアアプリコンテキストアドレスは、セキュアアプリケーションのコンテキストが保存されているセキュアメモリ113上のアドレスである。
一例としてエントリ187のハンドル値「1」は、オペレーティングプログラム172が音楽復号プログラム176に割り当てた識別子である。セキュアアプリアドレス「1111EEEE」は、音楽復号プログラム176が記憶されているセキュアメモリ113上のアドレスであり、セキュアアプリコンテキストアドレス「11AADDDE」は、音楽復号プログラム176のコンテキストが記憶されているセキュアメモリ113上のアドレスである。
また、制御データには、セキュア入出力デバイスドライバ178と対応する識別情報であるデバイスID_B、暗号デバイスドライバ179と対応する識別情報であるデバイスID_Cが含まれる。これらは、それぞれ、セキュア入出力デバイスドライバ178及び暗号デバイスドライバ179のセキュアメモリ113上のロードアドレスと対応付けて、セキュアメモリ113上に記憶されている。
ここで、デバイスID_B及びデバイスID_Cは、通常OS151の有する制御データに含まれるデバイスID_B及びデバイスID_Cと同一である。
セキュアOS171は、共有メモリ112のコマンド領域を介して通常OS151との間で各種のコマンドの授受を行う。また、セキュアメモリ113上の各プログラムとの間でセキュアメモリ113上のオペレーティングプログラム172の有する記憶領域を介して、コマンドを送受信する。
以下の説明において、説明の便宜上、オペレーティングプログラム172の行う処理を、セキュアOS171の行う処理として表現する。
セキュアOS171が扱う各種のコマンドは、通常OS151が扱うコマンドと同様に、図9の(a)に示す構造である。コマンド部1011に格納されるコマンドには、セキュアアプリ登録要求、登録完了通知、アプリ復帰要求、セキュアアプリ削除命令、削除完了通知、システムコール、応答通知、セキュア処理要求、外部処理要求、割込発生通知などがある。セキュアアプリ登録要求、登録完了通知、アプリ復帰要求、セキュアアプリ削除命令、削除完了通知、セキュア処理要求、外部処理要求、割込発生通知については、上記の通常OS151に関する説明において既に述べた通りである。システムコールは、セキュアメモリ113上のアプリケーションからセキュアメモリ113上の他のプログラムへのデータ及びコマンドの仲介を依頼するものであり、応答通知は、システムコールにより、コマンド及びデータを受け取ったプログラムが、処理結果などの通知をセキュアOS171へ依頼するものである。
以下に、図11のフローチャートを用いて、セキュアOS171の動作について説明する。ここで、セキュアアプリ登録要求、登録完了通知、セキュアアプリ削除命令及び削除完了通知については、具体的に、アプリケーションを音楽再生プログラム153、セキュアアプリケーションを音楽復号プログラム176、セキュアアプリケーションと対になって動作するプログラムを音楽復号デーモン156として説明する。なお、セキュアOS171は、このフローチャートに示した処理以外にも各種の処理を行っているが、本発明とは関係がないため、ここでは説明をしない。
切替処理によって、セキュアOS171がCPU102に復帰する(ステップS1041)。セキュアOS171は、共有メモリ112のコマンド領域からコマンドを読み出して解読し(ステップS1042)、解読したコマンドによって、以下の処理を行う。
読み出したコマンドがセキュアアプリ登録要求であれば(ステップS1042)、暗復号プログラム174によって、共有メモリ112上の暗号化音楽復号プログラムを復号して音楽復号プログラム176を生成し、セキュアメモリ113上にロードする(ステップS1043)。ロードアドレス及びハンドル値「1」をセキュアアプリ管理表186のエントリ187に書き込む(ステップS1044)。次に、登録完了通知をコマンド部に格納し、データ格納部にハンドル値「1」を格納した、登録完了通知を生成し、共有メモリ112に書き込む(ステップS1046)。次に、切替処理に移る(ステップS1062)。
解読したコマンドが、セキュア処理要求であれば(ステップS1042)、データ格納部に格納されている、受け取り先となるプログラムの識別情報と対応するプログラムを呼び出す(ステップS1047)。例えば、ハンドル値「1」が格納されていれば、音楽再生プログラム153を呼び出し、デバイスID_Bが格納されていれば、セキュア入出力デバイスドライバ178を呼び出す。次に、ステップS1052へ移る。
読み出したコマンドがセキュアアプリ削除命令であれば(ステップS1042)、データ格納部に格納されている、削除の対象となるプログラムを示すハンドル値「1」を抽出し、抽出したハンドル値「1」と対応する音楽復号プログラム176をセキュアメモリ113上から削除し、次に、セキュアアプリ管理表186から、エントリ187を削除する(ステップS1049)。
削除し終えると、削除完了通知を共有メモリ112に書き込む(ステップS1051)。このとき、コマンド部には削除完了通知が格納されており、データ格納部には、ハンドル値「1」が格納されている。次に、ステップS1062へ処理を移す。
次に、セキュアOS171は、セキュアメモリ113上の各プログラムから、コマンドを受け取る(ステップS1052)。
受け取ったコマンドが、外部処理要求であれば(ステップS1052)、共有メモリに、受け取った外部処理要求を書き込み(ステップS1053)、ステップS1062へ処理を移す。
セキュア割込ハンドラ181(後述する)から、いずれかのデバイスで割込が発生したことを示す割込発生通知を受け取ると、受け取った割込発生通知を、共有メモリ112に書き込み(ステップS1054)、ステップS1062へ処理を移す。
受け取ったコマンドがシステムコールであれば(ステップS1052)、データ格納部に格納されている受け取り先のプログラムを示す識別情報により、該当するプログラムを呼び出す(ステップS1056)。
受け取ったコマンドが、アプリ復帰要求であれば(ステップS1052)、共有メモリに、受け取ったアプリ復帰要求を書き込み(ステップS1061)、ステップS1062へ処理を移す。また、具体的には図示していないが、応答通知の場合も同様に、データ格納部に含まれる識別情報と対応するアプリケーションを呼び出す。
これらの処理の途中で、割込が発生し、割込みコントローラ107から割込発生通知を受け取ると(ステップS1057)、セキュア割込ハンドラ181を起動し(ステップS1059)、ステップS1052へ戻る。
<ライブラリ152>
ライブラリ152は、各種のプログラムで共通に利用される関数を含んでおり、一例として、メモリカード300のアクセスを行うアクセス関数を含む。アクセス関数は、通常入出力デバイスドライバ157を呼び出し、データの読み出しを指示する関数である。
<音楽再生プログラム153>
音楽再生プログラム153は、利用者に表示する各種の画像データなどを含み、利用者の操作を受けてメモリカード300に記憶されている音楽を再生するアプリケーションである。音楽再生プログラム153には、予め、セキュアアプリ情報とデーモン情報とがコーディングされている。セキュアアプリ情報は、音楽再生プログラム153が、セキュアな処理を依頼するプログラムを示す情報であり、具体的には、暗号化音楽復号プログラム141の記憶されている二次記憶部104上のアドレスである。デーモン情報は、セキュアアプリ情報の示すプログラムと対になるプログラムを示す情報であり、具体的には、音楽復号デーモン142の記憶されている二次記憶部104上のアドレスである。
<音楽復号プログラム176及び音楽復号デーモン156>
音楽復号プログラム176と音楽復号デーモン156は、対になって動作することにより、暗号化音楽データの復号処理が達成される。
音楽復号プログラム176は、通常OS151及びセキュアOS171を介して、音楽再生プログラム153から復号命令を受け、図8に示すようにデータ読出ステップ、コンテンツ鍵読出ステップ、復号ステップ及び音楽データ出力ステップを経て、音楽データを生成し、音楽データ出力ステップにおいて、処理結果として、バッファ123上の音楽データの書き込み先アドレスを出力する。
これらの処理の中で、高いセキュリティを必要としない処理を音楽復号デーモン156へ依頼する。具体的には、セキュアOS171へ外部処理要求を出力することによって、音楽復号デーモン156へデータ読み出し命令を出力する。その処理結果として共有メモリ112上の暗号化音楽データの書き込み先アドレスを受け取る。また、セキュアOS171へ外部処理要求によって、音楽復号デーモン156へ復号命令を出力し、処理結果として、バッファ123上の音楽データの書き込み先アドレスを取得する。
音楽復号デーモン156は、セキュアOS171及び通常OS151を介して、音楽復号プログラム176からデータ読み出し命令及び復号命令を受け取る。また、通常入出力デバイスドライバ157、セキュア入出力エントリデバイスドライバ158、暗号エントリデバイスドライバ159、セキュア入出力デバイスドライバ178及び暗号デバイスドライバ179から各種の命令及びデータを受け取る。受け取った命令及びデータに基づいて各種の処理を行う。音楽復号デーモン156による処理について、図12のフローチャートを用いて説明する。なお、図9においては、書略しているが、音楽復号デーモン156の受け取るすべておコマンド、データには、受け取り先である音楽復号デーモン156を示す識別情報としてハンドル値「1」が含まれている。
セキュアOS171を介して、各種の命令及びデータを受け取る(ステップS011)。受け取った命令を判別し(ステップS012)、データ読出命令であれば、ライブラリ152のアクセス関数を呼び出す(ステップS013)。
コマンドの出力元を示す識別情報としてデバイスID_Aと処理結果とを受け取ると、外部処理要求により、受け取った処理結果を音楽復号プログラム176へ出力する(ステップS014)。このとき、データ格納部には、処理結果と、受け取り先を示すハンドル値「1」とを格納する。
コマンドの出力元を示すデバイスID_Bと休眠要求とを受け取ると(ステップS012)、通常OS151へのシステムコールによって、受け取った休眠要求をセキュア入出力エントリデバイスドライバ158へ出力する(ステップS015)。このとき、データ格納部には、受け取り先を示す識別情報として、受け取ったデバイスID_Bを格納し、システムコールの出力元を示す識別情報として音楽復号デーモン156自身を示すハンドル値「1」とを格納する。
コマンドの出力元を示すデバイスID_Bと、割込通知とを受け取ると(ステップS012)、セキュア処理要求のデータ格納部に、受け取った割込通知とデバイスID_Bと音楽復号デーモン156自身を示すハンドル値「1」とを格納し、通常OSへ出力することにより、受け取った割込通知をセキュア入出力デバイスドライバ178へ出力する(ステップS016)。
セキュアOS171及び通常OS151を介して、音楽復号プログラム176から、復号命令を受け取ると、システムコールにより暗号エントリデバイスドライバ159へ復号命令を出力する(ステップS017)。
応答通知により、暗号エントリデバイスドライバ159から、デバイスID_Cと復号命令を受け取ると(ステップS012)、セキュア処理要求により、受け取った復号命令を暗号デバイスドライバ179へ出力する。このとき、データ格納部には、復号命令と受け取ったデバイスID_Cと音楽復号デーモン156自身を示すハンドル値「1」とを格納する(ステップS018)。
通常OS151から、デバイスID_Cと休眠要求とを受け取ると、システムコールにより暗号エントリデバイスドライバ159へ、受け取った休眠要求を出力する(ステップS019)。このとき、データ格納部には、受け取り先を示す識別情報として受け取ったデバイスID_Cと音楽復号デーモン156自身を示すハンドル値「1」と休眠要求とを格納する。
応答通知によって、暗号エントリデバイスドライバ159から、デバイスID_Cと割込通知とを受け取ると(ステップS012)、セキュア処理要求により、受け取った割込通知を暗号デバイスドライバ179へ出力する(ステップS021)。データ格納部には、受け取ったデバイスID_Cと割込通知と音楽復号デーモン156自身を示すハンドル値「1」とを格納する。
通常OS151から、デバイスID_Cと処理結果とを受け取ると、システムコールにより、受け取った処理結果を暗号エントリデバイスドライバ159へ出力する(ステップS022)。
応答通知により、暗号エントリデバイスドライバ159から、デバイスID_Cと処理結果とを受け取ると、セキュア処理要求によって、音楽復号プログラム176へ受け取った処理結果を出力する(ステップS023)。
<通常入出力デバイスドライバ157>
通常入出力デバイスドライバ157は、予め、通常入出力デバイスドライバ157自身を示す識別情報として、デバイスID_Aを有している。
通常入出力デバイスドライバ157は、入出力部116を構成する通常入出力デバイス132を制御するプログラムである。
また、通常入出力デバイスドライバ157は、排他フラグを記憶している。通常入出力デバイス132が動作中は、排他フラグ「1」、動作中でなければ排他フラグ「0」を設定する。入出力の処理命令を受け取った際に排他フラグが「1」であれば、通常入出力デバイス132が動作中であり、処理を受け付けることができないことを示すエラー通知を出力する。
<セキュア入出力エントリデバイスドライバ158及びセキュア入出力デバイスドライバ178>
セキュア入出力デバイスドライバ178及びセキュア入出力エントリデバイスドライバ158は、予め、同一の識別情報、デバイスID_Bを有する。
セキュア入出力デバイスドライバ178及びセキュア入出力エントリデバイスドライバ158が、対になって制御することにより、セキュア入出力デバイス133は正常に動作する。セキュア入出力デバイスドライバ178は、セキュア入出力デバイス133の制御のうち、セキュアな処理である入出力処理の依頼及び処理結果の取得を行い、セキュア入出力エントリデバイスドライバ158は、高いセキュリティを必要としない処理である、休眠及び割込の検出を行う。
本実施の形態において、セキュア入出力デバイスドライバ178は、セキュアOS171を介して音楽復号プログラム176から、コンテンツ鍵読出命令を受け取る。コンテンツ鍵読出命令を受け取ると、暗号処理デバイス117へ、コンテンツ鍵の読出を指示する。次に、セキュアOS171へ外部処理要求を出力することにより、音楽復号デーモン156へ休眠要求を出力する。このとき、コマンドのデータ格納部には、休眠要求と、受け取り先を示す識別情報として音楽復号プログラム176から受け取ったハンドル値「1」と、コマンドの出力元を示す識別情報としてセキュア入出力デバイスドライバ178自身を示すデバイスID_Bとを格納する。
次に、セキュア入出力デバイスドライバ178は、セキュアOS171を介して音楽復号デーモン156から割込通知を受け取り、セキュア入出力デバイス133から処理結果として、コンテンツ鍵の格納されたアドレスを取得する。取得した処理結果をセキュアOS171への応答通知により、音楽復号プログラム176へ出力する。
セキュア入出力エントリデバイスドライバ158は、通常OS151を介して音楽復号デーモン156から休眠要求を受け取る。休眠要求を受け取ると、通常OS151に対して、データ格納部に、ハンドル値「1」とデバイスID_Bを含む休眠要求を出力する。
次に、通常OS151により休眠が解除されると、キュア入出力エントリデバイスドライバ158は、応答通知により通常OS151を介して、音楽復号デーモン156へ割込通知を出力する。このとき、データ格納部には、「休眠要求」と、デバイスID_Bと、ハンドル値「1」とを格納する。
<暗号デバイスドライバ179及び暗号エントリデバイスドライバ159>
暗号デバイスドライバ179及び暗号エントリデバイスドライバ159は、予め、識別情報としてデバイスID_Cを有している。
暗号デバイスドライバ179と暗号エントリデバイスドライバ159が、対になって制御することにより、暗号処理デバイス117は正常に動作することができる。暗号処理デバイス117の制御のうち、暗号デバイスドライバ179は、復号処理の依頼と処理結果の取得とを行い、暗号エントリデバイスドライバ159は、排他制御と休眠及び割込通知を行う。
本実施の形態において、具体的には、暗号エントリデバイスドライバ159は、システムコールにより音楽復号デーモン156から復号命令を受け取る。復号命令を受け取ると、排他フラグによる排他制御を行う。つまり、排他フラグが「1」であれば、エラー通知を出力し、以下の処理を中止し、排他フラグが「0」であれば、排他フラグを「1」に変更する。
次に、受け取った復号命令とハンドル値「1」と暗号エントリデバイスドライバ159自身の有するデバイスID_Cとをデータ格納部に含む応答通知を通常OS151へ出力することにより、復号命令を音楽復号デーモン156へ出力する。
次に、システムコールにより音楽復号デーモン156から休眠要求を受け取る。次に、通常OS151へ休眠要求を出力する。このとき、休眠要求のデータ格納部には、システムコールに含んで受け取ったハンドル値「1」とデバイスID_Cとが格納されている。
次に、通常OSにより休眠を解除される。休眠を解除され、応答通知により割込通知を音楽復号デーモン156へ出力する。
次に、通常OS151を介して、音楽復号デーモン156から処理結果を受け取る。処理結果を受け取ると、排他制御を解除して、排他フラグを「0」に戻す。応答通知により、受け取った処理結果を音楽復号デーモン156へ出力する。
暗号デバイスドライバ179は、セキュア処理要求により、セキュアOS171を介して、音楽復号デーモン156から復号処理命令受け取り、暗号処理デバイス117へ復号を依頼する。次に、暗号デバイスドライバ179自身の有するデバイスID_Cと、復号処理命令と共に受け取ったハンドル値「1」と休眠要求をデータ格納部に格納した外部処理要求をセキュアOS171へ出力する。
次に、セキュアOS171へのセキュア処理要求により、音楽復号デーモン156から割込通知を受け取り、暗号処理デバイス117から、処理結果としてバッファ123上の書き込み先アドレスを受け取る。受け取った処理結果とハンドル値「1」とデバイスID_Cとデータ格納部に含む外部処理要求をセキュアOS171へ出力することにより、処理結果を音楽復号デーモン156へ出力する。
<通常切替デバイスドライバ160及びセキュア切替デバイスドライバ180>
通常OS151又はセキュアOSから切替指示を受け、通常切替デバイスドライバ160及びセキュア切替デバイスドライバ180は、切替制御部106へ切替指示を出力し、CPU102の使用権を通常OS151からセキュアOS171へ、又は、セキュアOS171から通常OS151へ移すプログラムである。
(a)切替処理1
以下に、図13を用いて、通常OS151からセキュアOS171への切替処理について説明する。なお、これは、図10のステップS1028及び図16以降のフローチャートの切替処理1の詳細である。
通常切替デバイスドライバ160は、通常OS151から呼び出され、切替指示を受け取る(ステップS162)。切替指示を受け取ると、通常OS151のコンテキストを通常メモリ111上に退避する(ステップS163)。次に、切替制御部106へ切替指示を出力する(ステップS164)。
切替制御部106は、CPU102及びMMU103をクリアした後、メモリ保護部114へ接続指示を出力し、セキュアメモリ113とバス130とを接続する(ステップS166)。次に、切替制御部106は、セキュアメモリ113上のセキュア切替デバイスドライバ180を呼び出す(ステップS167)。
セキュア切替デバイスドライバ180は、呼び出されると、セキュアOS171のコンテキストをCPU102に復帰させる(ステップS168)。
セキュアOS171は、デバッグ無効化プログラム173により、デバッガIF101を無効化する(ステップS169)。
(b)切替処理2
以下に、図14のフローチャートを用いて、セキュアOS171から通常OS151への切替処理について説明する。なお、これは、図11のステップS1062及び図16以降のフローチャートの切替処理2の詳細を示している。
セキュアOS171は、デバッグ無効化プログラム173により、デバッガIF101を有効にし(ステップS176)、セキュア切替デバイスドライバ180を呼び出し、切替指示を出力する(ステップS177)。
セキュア切替デバイスドライバ180はセキュアOS171のコンテキストを退避し(ステップS178)、切替制御部106へ切替指示を出力する。
切替制御部106は、切替指示を受け取り、CPU102及びMMU103をクリアした後、メモリ保護部114へ切断指示を出力し、セキュアメモリ113とバス130とを切断する(ステップS181)。次に、通常メモリ111上の通常切替デバイスドライバ160を呼び出す(ステップS182)。
通常切替デバイスドライバ160は通常OS151のコンテキストをCPU102へ復帰させる(ステップS183)。
なお、ここでは、セキュアOS171から通常OS151へ切り替える際に、デバッガIF101を有効にしているが、有効にしなくても良い。この場合、携帯電話100に電源を入れて、最初に、通常OS151からセキュアOS171へ切り替える際に、デバッグ無効化プログラム173により、デバッガIF101を無効にし、その後は、セキュアOS171から通常OS151への切替処理においても、通常OS151からセキュアOS171への切替処理においても、デバッグガIF101を無効のままにしておく。
また、本実施の形態では、セキュアOS171が有するデバッグ無効化プログラム173によって、デバッガIF101を無効化及び有効化しているが、通常OS151がデバッグ無効化プログラムを含んでいても良い。また、デバッグ無効化プログラムは、通常メモリ111上にをロードされ、通常OS151に管理される独立したプログラムであってもよい。
また、通常OS151及びセキュアOS171が、それぞれ、デバッグ無効化プログラムを有しているとしても良い。この場合、通常OS151の有するデバッグ無効化プログラムが、デバッガIF101を無効化し、セキュアOS171の有するデバッグ無効化プログラムがデバッガIFを有効化する。また、逆に、セキュアOS171の有するデバッグ無効化プログラムが、デバッガIF101を無効化し、通常OS151の有するデバッグ無効化プログラムがデバッガIFを有効化してもよい。
また、これらのデバッグ無効化プログラムは、それぞれ、独立したプログラムとして、通常メモリ111及びセキュアメモリ113にロードされていても良い。
<通常割込ハンドラ161及びセキュア割込ハンドラ181>
通常割込ハンドラ161は、通常OS151及び通常OS151により制御されるプログラムの実行中に、割込が発生した場合に、通常OS151に呼び出される。通常OS151から呼び出され、割込発生通知を受け取ると、割込コントローラ107を制御し、割込を発生させている要因を調査する。次に、割込を発生させているデバイスを示す識別情報と割込通知とを通常OS151へ出力する。
セキュア割込ハンドラ181は、セキュアOS171及びセキュアOS171により制御されるプログラムの実行中に、割込が発生した場合に、セキュアOS171に呼び出される。セキュアOS171から呼び出され、割込発生通知を受け取ると、CPU102の割込検出用のレジスタへダミーデータを書き込むことによって、割込マスク処理を施し、セキュアOS171へ割込発生通知を出力する。
(3)入出力部116
入出力部116は、図8に示すようにアクセス部131、通常入出力デバイス132及びセキュア入出力デバイス133から構成される。
アクセス部131は、メモリカード300と接続され、メモリカード300と通常入出力デバイス132及びセキュア入出力デバイス133との間で、情報の入出力を行う。
通常入出力デバイス132は、通常入出力デバイスドライバ157の制御により、メモリカード300の一般領域303へのデータの読み出し及び書き込みを行う。一例として、引数として楽曲IDを受け取り、読出要求を受けると、受け取った楽曲IDと対応する暗号化音楽データを一般領域303から読み出し、読み出した暗号化音楽データを共有メモリ112へ書き込む。
書き込み終了後に、通常入出力デバイスドライバ157から結果要求を受け取ると、処理結果として、暗号化音楽データを書き込んだ、共有メモリ112上のアドレスを出力する。
セキュア入出力デバイス133は、セキュア入出力デバイスドライバ178の制御により、メモリカード300のセキュア処理部302との間で、CPRMの仕組みに基づいて相互認証を行う。相互認証が成功であった場合に限り、鍵を共有し、共有した鍵を用いて、安全に、セキュア領域306へのデータの書き込み及び読み出しを行う。
また、認証に失敗した場合は、メモリカード300にアクセスできないことを示すカードエラー通知をセキュア入出力デバイスドライバ178へ出力する。
ここで、セキュア入出力デバイス133は、メモリカード300のセキュア領域306にアクセスする場合にのみ使用されるデバイスであり、メモリカード300のセキュア領域306にアクセスするプログラムは、限定されている。従って、複数のアプリケーションから同時に処理を依頼されることはありえないため、排他制御を行う必要がない。
(4)暗号処理デバイス117
暗号処理デバイス117は、暗号デバイスドライバ179の制御により、各種データの暗号処理を行う。本実施の形態では、暗号デバイスドライバ179から、暗号化音楽データの記憶されている共有メモリ112上のアドレスと、コンテンツ鍵が記憶されているセキュアメモリ113上のアドレスとを受け取り、暗号化音楽データの復号を指示される。コンテンツ鍵を用いて、暗号化音楽データに復号アルゴリズムD1を施して、音楽データを生成し、生成した音楽データをバッファ123へ書き込む。書き込み先のアドレスを、処理結果として暗号デバイスドライバ179へ出力する。復号アルゴリズムD1は、暗号化アルゴリズムE1によって生成された暗号文を復号するものである。
ここで、暗号処理デバイス117は、各種の暗号化されたデータを復号するデバイスであり、コンテンツ配信サーバから送信される暗号化コンテンツなどの復号も行う。従って、暗号処理デバイス117は、複数の異なるプログラムから復号処理を依頼される可能性があり、排他制御が必要である。
(5)CPU102
CPU102は、命令フェッチ部、命令デコーダ、演算器、プログラムカウンタ、レジスタなどを備え、通常メモリ111又はセキュアメモリ113上のプログラムから命令をフェッチし、フェッチした命令を解読し、解読した命令を実行する。
(6)MMU103
MMU103は、論理アドレスを物理アドレスに変換することにより仮想記憶機能を実現する。
(7)デバッガIF101及び割込コントローラ107
デバッガIF101は、携帯電話100と外部のデバッガとを接続するためのインターフェースである。
割込コントローラ107は、各種の割込を検出し、CPU102の割込検出用のレジスタへ割込発生通知を出力する。
(8)切替制御部106及びメモリ保護部114
切替制御部106は、通常メモリ111上の通常切替デバイスドライバ160又は、セキュアメモリ113上のセキュア切替デバイスドライバ180から切替指示を受け取り、メモリ保護部114により、バス130とセキュアメモリ113を接続又は切断する。切替制御部106及びメモリ保護部114の詳細な動作は、上記の(a)切替処理1及び(b)切替処理2において説明した通りである。
(9)無線通信制御部118、通信部121及びアンテナ122
通信部121は、無線通信制御部118と、携帯電話網10、インターネット20に接続された外部機器との間で、アンテナ122を介して情報の送受信を行う。
無線通信制御部118は、ベースバンド部、変復調部、増幅器などを備えており、通信部121及びアンテナ122を介して送受信される各種の情報の信号処理を行う。
(10)バッファ123、符号処理部124、D/A変換部126
バッファ123は、音楽データを一時的に記憶する。
符号処理部124は、バッファ123に記憶されている音楽データにMP3などの符号化技術に従った復号処理を施し、D/A変換部126へ出力する。
D/A変換部126は、符号処理部124により復号された音楽データをアナログ音声信号に変換し、スピーカ120へ出力する。
(11)入力部108、表示部109、マイク119スピーカ120
入力部108は、テンキー、決定ボタンなどの各種のボタンを備え、利用者によるこれらの操作を受け付ける。
表示部109は、VRAM、液晶画面を備え、各種の画面を表示する。
マイク119は、音声を検出し、検出した音声を無線通信制御部118へ出力する。
スピーカ120は、無線通信制御部118及びD/A変換部126から、アナログ音声信号を受け取り、受け取った音声信号に基づく音声を出力する。
1.3 携帯電話100及びメモリカード300の動作
図15〜図35に示すフローチャートは、携帯電話100の動作を示すフローチャートである。図36〜図40は、携帯電話100の動作における各プログラム間のコマンドの授受を示したシーケンス図である。これらのフローチャート及びシーケンス図を用いて、携帯電話100の動作について説明する。
なお、シーケンス図とフローチャートの対応する処理には、同一のステップ番号を付している。また、通常OS151及びセキュアOS171についての説明で述べたように、通常メモリ111及びセキュアメモリ113上の各プログラムは、システムコール、応答通知、外部処理要求、セキュア処理要求によって、他のプログラムへのコマンド及びデータの仲介を通常OS151及びセキュアOS171へ依頼している。図15〜図40及び以下の説明においては、システムコール、応答通知、外部処理要求、セキュア処理要求の記載を省略し、各プログラムが、これらのコマンドのデータ格納部に格納して出力する識別情報、データ及びコマンドをのみを記載している。
(1)携帯電話100の動作
携帯電話100の動作について、図15に示すフローチャートを用いて説明する。
携帯電話100は、入力部108により利用者によるボタン操作を受け付ける(ステップS101)。受付た操作が、音楽再生を示している場合、音楽再生プログラム153を起動する(ステップS102)。受け付けたボタン操作がその他の処理を示している場合、その他の処理を行う(ステップS103)。
次に、音楽復号プログラムの登録処理を行う(ステップS104)。次に、音楽復号プログラム176へ復号処理を依頼する(ステップS106)。音楽復号プログラム176による復号が終了すると、生成された音楽データをMP3に従った方法で伸張し、アナログデータに変換してアナログ音楽データを生成し、生成したアナログ音楽データをスピーカ120により出力する(ステップS107)。入力部108により、音楽再生の終了を示すボタン操作を受け付けるまで(ステップS108)、ステップS106〜108を繰り返す。
音楽再生の終了を示すボタン操作を受け付けると(ステップS108のYES)、音楽復号プログラムの削除処理を行う(ステップS109)。
(2)音楽復号プログラムの登録
図16〜17は、音楽復号プログラムの登録処理における、各プログラムの動作を詳細に示すフローチャートである。これは、図36におけるステップS132〜ステップS153のシーケンスと対応している。図16〜17に示すフローチャート及び図36のシーケンス図を用いて、音楽復号プログラムの登録処理について説明する。
音楽再生プログラム153は、予め、コーディングされているデーモン情報とセキュアアプリ情報とを読み出す(ステップS131)。セキュアアプリ登録要求と、読み出したデーモン情報及びセキュアアプリ情報とを通常OS151へ出力する(ステップS132)。
通常OS151は、セキュアアプリ登録要求を受け取ると、音楽再生プログラム153のコンテキストを保存し、保存先のアドレスをアプリ管理表のエントリ167のアプリコンテキストアドレスに書き込む(ステップS133)。次に、受け取ったセキュアアプリ情報と対応する暗号化音楽復号プログラム141を二次記憶部104から読み出し、共有メモリ112へ書き込む(ステップS134)。次に、セキュアアプリ登録要求を共有メモリ112のコマンド領域へ書き込み(ステップS136)、切替処理1に移る(ステップS137)。
切替処理1が終了すると、セキュアOS171は共有メモリ112からセキュアアプリ登録要求を読み込む(ステップS138)。次に、暗復号プログラムにより、共有メモリ112上の暗号化音楽復号プログラムを復号して音楽復号プログラムを生成し、生成した音楽復号プログラムをセキュアメモリ113上に書き込む(ステップS139)。音楽復号プログラムに対して、ハンドル値「1」を設定し、セキュアアプリ管理表186のエントリ187のハンドル値に「1」を書き込み、セキュアアプリアドレスに音楽復号プログラム176を書き込んだセキュアメモリ113上のアドレスを書き込む(ステップS141)。
次に、登録完了通知とハンドル値「1」とを共有メモリ112に書き込み(ステップS143)、切替処理2(ステップS144)へ処理を移す。
通常OS151は、共有メモリ112から登録完了通知とハンドル値「1」とを読み出す(ステップS146)。読み出したハンドル値「1」を、アプリ管理表166のエントリ167に書き込む(ステップS147)。デーモン情報を基に二次記憶部104から、音楽復号デーモン142を読み出し、通常メモリ111上に書き込む(ステップS149)。通常メモリ111上の音楽復号デーモン156の書き込み先アドレスをアプリ管理表166のエントリ167へ書き込む(ステップS151)。
次に、エントリ167のアプリコンテキストアドレスを基に、音楽再生プログラム153のコンテキストをCPU102に復帰させ(ステップS152)、受け取ったハンドル値「1」を、音楽再生プログラム153へ出力する(ステップS153)。
音楽再生プログラム153は、受け取ったハンドル値「1」を、通常メモリ111における音楽再生プログラム153自身の記憶領域に書き込む(ステップS154)。
(3)音楽復号プログラムへの処理依頼
図18〜27のフローチャートは、音楽再生プログラム153の依頼により、音楽復号プログラム176が暗号化音楽データを復号する際の各プログラムの動作を示している。これは、図36のステップS193〜図42のステップS347と対応している。
音楽再生プログラム153は、曲目リストなどを含む選択画面を表示し、利用者の楽曲選択を受け付ける(ステップS191)。受け付けた楽曲を示す楽曲IDとハンドル値「1」を読み出す(ステップS192)。読み出した楽曲IDを引数として、引数とハンドル値「1」と復号処理命令とを通常OS151へ出力する(ステップS193)。
通常OS151は、音楽再生プログラム153のコンテキストを通常メモリ111上に保存し(ステップS196)、保存先のアドレスをアプリ管理表166のハンドル値「1」を含むエントリ167に書き込む(ステップS197)。次に、受け取った引数とハンドル値「1」と復号処理命令とを共有メモリ112に書き込み(ステップS198)、切替処理1を行う(ステップS199)。
セキュアOS171は、切替処理1が終了すると(ステップS199)、共有メモリ112から引数とハンドル値「1」と復号処理命令とを読み出す(ステップS201)。セキュアアプリ管理表186上で、読み出したハンドル値「1」を含むエントリ187のセキュアアプリアドレスを基に、音楽復号プログラム176を起動し(ステップS202)、読み出した引数とハンドル値「1」と復号処理命令とを音楽復号プログラム176へ出力する(ステップS203)。
音楽復号プログラム176は、セキュアOS171から引数と復号処理命令とを受け取り、受け取った引数(楽曲ID)を記憶する。次に、CPU102は、音楽復号プログラム176(データ読み出しステップ)を実行する(ステップS204)。音楽復号プログラム176は、楽曲IDを読み出し(ステップS206)、読み出した楽曲IDを引数として、データ読出命令と引数とハンドル値「1」をセキュアOS171へ出力する(ステップS208)。
セキュアOS171は、音楽復号プログラム176からデータ読出命令と引数とハンドル値「1」とを受け取り、音楽復号プログラム176のコンテキストをセキュアメモリ113上に保存し、保存先のアドレスをセキュアアプリ管理表186のエントリ187に書き込む(ステップS209)。次に、共有メモリ112に受け取ったデータ読出命令と引数とハンドル値「1」とを書き込み(ステップS211)、切替処理2に移る(ステップS216)。
切替処理2が終了すると(ステップS216)、通常OS151は、共有メモリ112からデータ読出命令と引数とハンドル値「1」とを読み出す(ステップS217)。アプリ管理表166のハンドル値「1」を含むエントリ167を選択し、選択したエントリ167に含まれるデーモンアドレスにより、音楽復号デーモン156を起動する(ステップS218)。読み出したデータ読出命令と引数とハンドル値「1」とを音楽復号デーモン156へ出力する(ステップS219)。
音楽復号デーモン156は、データ読出命令と引数とハンドル値「1」とを受け取る。データ読出命令を受け取ると、ライブラリ152に格納されているアクセス関数を呼び出し、引数とハンドル値「1」とを出力する(ステップS221)。音楽復号デーモン156に呼び出されたアクセス関数は、読出要求と引数とデバイスID_Aと受け取ったハンドル値「1」とを通常OS151へ、出力する(ステップS222)。通常OS151は、受け取ったデバイスID_Aと対応する通常入出力デバイスドライバ157へ、読出要求と引数とデバイスID_Aとハンドル値「1」とを出力する(ステップS223)。
通常入出力デバイスドライバ157は、読出要求、引数及びハンドル値「1」を受け取る。次に、排他フラグが「0」であるか否かを判断する(ステップS224)。排他フラグが「1」であれば(ステップS224のNO)、通常入出力デバイスドライバ157は、通常入出力デバイス132が、動作中であり、新たな読出要求を受け付けることができないことを示すエラー通知を出力する。
通常OS151及びアクセス関数を介して、音楽復号デーモン156は、エラー通知を受け取り、一定時間経過後に、再度、読出要求を出力する。また、受け取ったエラー通知を通常OS151、セキュアOS171を介して音楽復号プログラム176へ出力し、復号の処理を中止するとしても良い。
排他フラグが「0」であると判断すると(ステップS224のYES)、排他フラグを「1」に変更し(ステップS227)、受け取った引数を通常入出力デバイス132へ出力し、データの読み出しを指示する(ステップS231)。
通常入出力デバイス132は、引数(楽曲ID)と読出要求とを受け取り、メモリカード300の一般領域303から、受け取った楽曲IDと対応する暗号化音楽データ304の読み出し及び読み出した暗号化音楽データ304の共有メモリ112への書き込みを開始する(ステップS236)。
通常入出力デバイスドライバ157は、通常入出力デバイス132へ読出要求を出力すると(ステップS231)、通常OS151へ、通常入出力デバイスドライバ157自身の有するデバイスID_A及び受け取ったハンドル値「1」を含む休眠要求を出力する(ステップS232)。
通常OS151は、休眠要求を受け取ると、ハンドル値「1」と対応する音楽復号デーモン156とデバイスID_Aと対応する通常入出力デバイスドライバ157とを休眠状態にする(ステップS233、ステップS234)。次に、タスクスケジューリングにより、実行可能状態の他のプログラムへCPU102を割り当てる(ステップS238)。
通常入出力デバイス132における処理が終了すると、割込が発生し、音楽復号デーモン156は、処理結果を取得する(ステップS239)。ステップS239における、割込発生時の処理1につては、後で説明する。また、ステップS239の処理は、図37のステップS463〜478のシーケンスと対応している。
割込発生時の処理1(ステップS239)において、音楽復号デーモン156は、通常入出力デバイス132による処理結果として、暗号化音楽データの共有メモリ112上の書込先アドレスを取得する。取得した処理結果とハンドル値「1」を通常OS151へ出力する(ステップS241)。通常OS151は受け取った処理結果とハンドル値「1」とを共有メモリ112へ書き込み(ステップS242)、切替処理1を行う(ステップS244)。
切替処理1(ステップS244)が終了すると、セキュアOS171は、共有メモリ112からハンドル値「1」と処理結果とを読み出す(ステップS251)。セキュアアプリ管理表186から、読み出したハンドル値「1」を含むエントリ187を選択し、エントリ187のセキュアアプリコンテキストアドレスにより音楽復号プログラム176のコンテキストをCPU102に復帰させる(ステップS252)。次に、読み出した処理結果とハンドル値「1」とを音楽復号プログラム176へ出力する(ステップS254)。
音楽復号プログラム176は、処理結果として暗号化音楽データの書込先アドレスを受け取り、受け取った書込先アドレスを自身の記憶領域に記憶する。
次に、CPU102は、音楽復号プログラム176(コンテンツ鍵読出ステップ)を実行する(ステップS256)。音楽復号プログラム176は、コンテンツ鍵読出命令とデバイスID_Bと音楽復号プログラム176自身を示すハンドル値「1」とを含むシステムコールをセキュアOS171へ出力する(ステップS257)。
セキュアOS171は、コンテンツ鍵読出命令とデバイスID_Bとハンドル値「1」とを受け取り、受け取ったデバイスID_Bと対応するセキュア入出力デバイスドライバ178へ、受け取ったコンテンツ鍵読出命令とデバイスID_Bとハンドル値「1」とを出力する(ステップS258)。
セキュア入出力デバイスドライバ178は、コンテンツ鍵読出命令とデバイスID_Bとハンドル値「1」とを受け取り、セキュア入出力デバイス133へ、コンテンツ鍵読出命令を出力する(ステップS259)。
セキュア入出力デバイス133は、コンテンツ鍵読出命令を受け取り、次に、メモリカード300のセキュア処理部302との間で相互認証を行う(ステップS262)。認証に成功すると(ステップS263のYES)、コンテンツ鍵の取得を開始する(ステップS266)。
認証が失敗であった場合、カードエラー通知を出力し、前記コンテンツ鍵の取得を中止する(ステップS264)。この場合、音楽復号デーモン156及び音楽復号プログラム176は、復号処理を中止し、音楽再生プログラム153は、メモリカード300が読み取り不可であることを通知する画面を表示する。
セキュア入出力デバイスドライバ178は、次に、セキュアOS171へ休眠要求と、受け取ったハンドル値「1」と、セキュア入出力デバイスドライバ178自身を示すデバイスID_Bとを出力する(ステップS271)。なお、ここで出力される休眠要求は、セキュアOS171へ休眠処理を要求するものではなく、外部処理要求のデータ格納部に格納され、音楽復号デーモン156へ仲介されるコマンドである。
セキュアOS171は、セキュア入出力デバイスドライバ178から、休眠要求とハンドル値「1」とデバイスID_Bとを受け取り、共有メモリ112へ、受け取った休眠要求とハンドル値「1」とデバイスID_Bとを書き込む(ステップS272)。次に、切替処理2に移る(ステップS273)。
切替処理が終了すると(ステップS273)、通常OS151は、共有メモリ112から、休眠要求とハンドル値「1」とデバイスID_Bとを読み出す(ステップS274)。読み出したハンドル値「1」を含むエントリ168を基に音楽復号デーモン156を起動し(ステップS276)、読み出した休眠要求とデバイスID_Bとハンドル値「1」とを出力する(ステップS277)。
音楽復号デーモン156は、通常OS151から休眠要求とデバイスID_Bとハンドル値「1」とを受け取る。休眠要求とを受け取ると、通常OS151へ休眠要求とデバイスID_Bとハンドル値「1」とを含むシステムコールを出力する(ステップS278)。
セキュアOS171は、受け取ったデバイスID_Bと対応するセキュア入出力エントリデバイスドライバ158へ、受け取った休眠要求とデバイスID_Bとハンドル値「1」とを出力する(ステップS281)。
セキュア入出力エントリデバイスドライバ158は、通常OS151を介して音楽復号デーモン156から休眠要求を受け取ると、デバイスID_Bとハンドル値「1」とを含む休眠要求を通常OS151へ出力する(ステップS282)。
通常OS151は、休眠要求とデバイスID_Bとハンドル値「1」とを受け取る。休眠要求を受け取ると、受け取ったデバイスID_Bと対応するセキュア入出力エントリデバイスドライバ158と、受け取ったハンドル値「1」と対応する音楽復号デーモン156とに休眠処理を行う(ステップS283、ステップS284)。
次に、通常OS151は、タスクスケジューリングを行い、実行可能状態の他のプログラムにCPUを割り当てる(ステップS286)。
セキュア入出力デバイス133によるコンテンツ鍵の取得が終了し、割込発生時の処理2(ステップS287)により、音楽復号プログラム176は、処理結果を取得する。ステップS287の割込発生時の処理2については、後で説明する。また、ステップS287における処理は、図38のステップS512〜図39のステップS541に対応している。
ステップS287において、音楽復号プログラム176は、処理結果として、コンテンツ鍵が記憶されているセキュアメモリ113上のアドレスを取得する。次に、CPU102は、音楽復号プログラム176(復号ステップ)を実行する(ステップS291)。音楽復号プログラム176は、セキュアメモリ113上のコンテンツ鍵の記憶されているアドレスと共有メモリ112上の暗号化音楽データの記憶されているアドレスとを引数として、復号命令と引数とハンドル値「1」とをセキュアOS171へ出力する(ステップS292)。
セキュアOS171は、音楽復号プログラム176から復号命令と引数とハンドル値「1」を受け取る。次に、受け取った復号命令と引数とハンドル値「1」とを共有メモリ112へ書き込み(ステップS293)、切替処理2を行う(ステップS294)。
切替処理2が終了すると(ステップS294)、通常OS151は、共有メモリ112から復号命令、引数及びハンドル値「1」を読み出す(ステップS296)。読み出したハンドル値「1」とアプリ管理表166とを用いて、音楽復号デーモン156を起動し、音楽復号デーモン156へ読み出した復号命令と引数とハンドル値「1」とを出力する(ステップS297)。
音楽復号デーモン156は、通常OS151から復号命令と引数とハンドル値「1」とを受け取る。復号命令を受け取ると、受け取った復号命令及び引数と、デバイスID_C、ハンドル値「1」を通常OS151へ出力する(ステップS298)。
通常OS151は、音楽復号デーモン156から復号命令、引数、デバイスID_C及びハンドル値「1」を受け取り、受け取ったデバイスID_Cと対応する暗号エントリデバイスドライバ159へ、受け取った復号命令、引数、デバイスID_C及びハンドル値「1」を出力する(ステップS301)。
暗号エントリデバイスドライバ159は、通常OS151を介して音楽復号デーモン156から引数と復号命令とデバイスID_Cとハンドル値「1」とを受け取る。復号命令を受け取ったとき、排他フラグが「1」であれば(ステップS303のNO)、暗号処理デバイス117が、既に動作中であり、新たな処理の依頼を受け付けられないことを示すエラー通知を出力する(ステップS304)。このとき、エラー通知を受け取った音楽復号デーモン156は、一定時間経過後に再度、復号命令を出力する。
排他フラグが「0」であれば(ステップS303のYES)、排他フラグを「1」に変更し(ステップS306)、受け取った引数と復号命令とハンドル値「1」及びデバイスID_Cを通常OS151へ出力する(ステップS307)
通常OSは、受け取ったハンドル値「1」と対応する音楽復号デーモン156を呼び出し、受け取った復号命令と引数とハンドル値「1」とデバイスID_Cとを出力する(ステップS308)。
音楽復号デーモン156は、通常OS151を介して、暗号エントリデバイスドライバ159から復号命令と引数とハンドル値「1」とデバイスID_Cとを受け取る。次に、受け取った復号命令と引数とデバイスID_Cとハンドル値「1」を通常OS151へ出力する(ステップS309)。
通常OS151は、音楽復号デーモン156から、復号命令と引数とデバイスID_Cとハンドル値「1」を受け取り、共有メモリ112へ、受け取った復号命令と引数とデバイスID_Cとハンドル値「1」とを書き込み(ステップS312)、切替処理2を行う(ステップS313)。
切替処理2が終了すると(ステップS313)、セキュアOS171は、共有メモリ112から復号命令と引数とデバイスID_Cとハンドル値「1」とを読み出す(ステップS314)。読み出したデバイスID_Cを基に、暗号デバイスドライバ179を起動し(ステップS315)、読み出した復号命令、引数、ハンドル値「1」を暗号デバイスドライバ179へ出力する(ステップS316)。
暗号デバイスドライバ179は、セキュアOS171から復号命令と引数とデバイスID_Cとハンドル値「1」とを受け取り、暗号処理デバイス117へ受け取った引数を出力し復号を命令する(ステップS317)。
暗号処理デバイス117は、暗号デバイスドライバ179から復号を命令されると、セキュアメモリ113からコンテンツ鍵を読み出し、読み出したコンテンツ鍵を用いて、共有メモリ112上の暗号化音楽データに復号アルゴリズムD1を施して音楽データを生成し、生成した音楽データをバッファ123へ出力する(ステップS318)。
暗号デバイスドライバ179は、暗号処理デバイス117へ復号を命令した後、休眠要求と、セキュアOS171から受け取ったハンドル値「1」と、暗号デバイスドライバ179自身を示すデバイスID_Cを、セキュアOS171へ出力する(ステップS321)。なお、ここで出力される休眠要求は、セキュアOS171へ休眠処理を要求するものではなく、外部処理要求のデータ格納部に格納され、音楽復号デーモン156へ仲介されるコマンドである。
セキュアOS171は、暗号デバイスドライバ179から休眠要求とハンドル値「1」とデバイスID_Cを受け取り、受け取った休眠要求とハンドル値「1」とデバイスID_Cとを共有メモリ112へ書き込む(ステップS322)。次に、切替処理2を行う(ステップS323)。
切替処理2が終了すると(ステップS323)、通常OS151は、共有メモリ112からハンドル値「1」、デバイスID_C及び休眠要求を読み出す(ステップS326)。読み出したハンドル値「1」とアプリ管理表166とを基に音楽復号デーモン156を起動し、読み出した休眠要求とハンドル値「1」とデバイスID_Cとを、音楽復号デーモン156へ出力する(ステップS327)。
音楽復号デーモン156は、通常OS151から休眠要求とハンドル値「1」とデバイスID_Cとを受け取る。受け取った休眠要求とデバイスID_Cと音楽復号デーモン156自身を示すハンドル値「1」とを通常OS151へ出力する(ステップS328)。通常OS151は、受け取ったデバイスID_Cと対応する暗号エントリデバイスドライバ159へ、受け取った休眠要求とデバイスID_Cとハンドル値「1」とを出力する(ステップS329)。
暗号エントリデバイスドライバ159は、通常OS151を介して、音楽復号デーモン156から休眠要求とデバイスID_Cとハンドル値「1」とを受け取る。次に、通常OS151へ、休眠処理と受け取ったハンドル値「1」と暗号エントリデバイスドライバ159自身の有するデバイスID_Cを出力する(ステップS332)。
通常OS151は、暗号エントリデバイスドライバ159から、休眠要求とハンドル値「1」とデバイスID_Cを受け取り、受け取ったハンドル値「1」と対応する音楽復号デーモン156を休眠状態にする(ステップS333)。次に、受け取ったデバイスID_Cと対応する暗号エントリデバイスドライバ159を休眠状態にする(ステップS334)。次に、タスクスケジューリングを行い、実行可能状態のプログラムにCPUを割り当てる(ステップS336)。
暗号処理デバイス117による、復号処理が終了し、割込発生時の処理3において、音楽復号プログラム176は、暗号処理デバイス117による処理結果を受け取る(ステップS337)。ステップS337については、後で説明する。なお、ステップS337は、図37のステップS552〜図38のステップS606に該当する。
音楽復号プログラム176は、暗号処理デバイス117による処理結果として、音楽データのバッファ123上の書込先アドレスを取得する。次に、CPU102は、音楽復号プログラム176(音楽データ出力ステップ)を実行する(ステップS338)。音楽復号プログラム176は、音楽データの書込先アドレスを処理結果として、処理結果とアプリ復帰要求とハンドル値「1」とをセキュアOS171へ出力する(ステップS339)。
セキュアOS171は、アプリ復帰要求と処理結果とハンドル値「1」とを受け取り、受け取ったアプリ復帰要求と処理結果とハンドル値「1」とを共有メモリ112へ書き込む(ステップS341)。次に、切替処理2を行う(ステップS342)。
切替処理2が終了すると(ステップS342)、通常OS151は、共有メモリ112から、アプリ復帰要求と処理結果とハンドル値「1」とを読み出す(ステップS344)。アプリ管理表166のハンドル値「1」を含むエントリ167を基に音楽復号プログラム176のコンテキスト復帰させる(ステップS346)。次に、読み出した処理結果を音楽復号プログラム176へ出力する(ステップS347)。
(4)割込発生時の処理1
図28に示すフローチャートを用いて、割込発生時の処理1について説明する。これは、図21のステップS239の詳細である。また、図37のステップS463〜478のシーケンスに対応している。
通常入出力デバイス132は、暗号化音楽データの読み出しが終了すると(ステップS462)、割り込みを発生させる(ステップS463)。
割込コントローラ107は、割込の発生を検出し、通常OS151へ割込発生通知を出力する(ステップS464)。通常OS151は、割込発生通知を受け取り、割込テーブルを基に通常割込ハンドラ161を起動する(ステップS466)。次に、通常割込ハンドラ161へ割込発生通知を出力する(ステップS467)。
通常割込ハンドラ161は、割込コントローラ107を制御し、割込の要因を調査する(ステップS468)。次に、割込を発生させている通常入出力デバイスと対応するデバイスID_Aと割込通知とを通常OS151へ出力する(ステップS469)。
通常OS151は、通常割込ハンドラ161から、割込通知とデバイスID_Aとを受け取る。受け取ったデバイスID_Aと対応する通常入出力デバイスドライバ157及び、通常入出力デバイスドライバ157と共に休眠処理を施した音楽復号デーモン156とを休眠解除し(ステップS471、ステップS472)、CPU102を通常入出力デバイスドライバ157へ割り当てる。
通常入出力デバイスドライバ157は、休眠を解除され、通常入出力デバイス132へ結果要求を出力し(ステップS473)、通常入出力デバイス132から、処理結果として、共有メモリ112上における暗号化音楽データの書込先アドレスを取得する(ステップS474)。処理結果を取得すると、排他フラグを「0」に設定し(ステップS476)、取得した処理結果と、読出要求の出力元を示す識別情報として受け取ったハンドル値「1」と、通常入出力デバイスドライバ157自身を示すデバイスID_Aとを通常OS151へ出力し(ステップS477)、通常OS151は、ハンドル値「1」と対応する音楽復号デーモン156へ、受け取った処理結果とハンドル値「1」とデバイスID_Aとを出力する(ステップS478)。
(5)割込発生時の処理1−2
上記の割込発生時の処理1は、通常OS151又は通常OS151に管理される通常メモリ111上のプログラムの実行中に割込が発生した場合の動作を示している。ここでは、図29のフローチャートを用いて、セキュアOS171又はセキュアOS171によって管理されているプログラムの実行中に割込が発生した場合の動作について説明する。
通常入出力デバイス132は、暗号化音楽データの読み出しが終了すると(ステップS491)、割込を発生させる(ステップS492)。
割込コントローラ107は、割込を検出し、セキュアOS171へ割込発生通知を出力する(ステップS493)。
セキュアOS171は、割込コントローラ107から割込発生通知を受け取る。割込発生通知を受け取ると、セキュア割込ハンドラ181を起動し(ステップS494)、割込発生通知を出力する(ステップS496)。
セキュア割込ハンドラ181は、割込発生通知を受け取り、CPU102へ割込マスク処理を行い(ステップS497)、セキュアOS171へ割込発生通知を出力する(ステップS498)。
セキュアOS171は、セキュア割込ハンドラ181から、割込発生通知を受け取り、受け取った割込発生通知を共有メモリ112へ書き込む(ステップS499)。次に、セキュアOS171と通常OS151は、切替処理2を行う(ステップS501)。
切替処理2が終了すると(ステップS501)、共有メモリ112から割込発生通知を読み出し、CPUの割込マスクを解除する(ステップS502)。
ここで、割込コントローラ107は、クリアされていないので、割込発生通知を出力し続けており、ステップS502以降の処理は、図28のステップS464以降の処理と同様である。
(6)割込発生時の処理2
以下に、図30〜31のフローチャートを用いて、割込発生時の処理2について説明する。これは、図23のステップS287の詳細である。また、これは、図38のステップS512〜図39のステップS541のシーケンスと対応している。
セキュア入出力デバイス133は、コンテンツ鍵の読み出しが終了すると(ステップS511)、割り込みを発生させる(ステップS512)。
割込コントローラ107は、割込の発生を検出し、通常OS151へ割込発生通知を出力する(ステップS513)。
通常OS151は、割込コントローラ107から、割込発生通知を受け取り、通常割込ハンドラ161を起動する(ステップS514)。次に、通常割込ハンドラ161へ割込発生通知を出力する(ステップS516)。
通常割込ハンドラ161は、割込発生通知を受け取り、割り込みを発生させている要因を調査する(ステップS517)。セキュア入出力デバイス133が割り込みを発生させていることを検出し、セキュア入出力デバイス133と対応するデバイスID_Bと割込通知とを、通常OS151へ出力する(ステップS518)。
通常OS151は、通常割込ハンドラ161から割込通知とデバイスID_Bとを受け取る。次に受け取ったデバイスID_Bと対応するセキュア入出力エントリデバイスドライバ158と、セキュア入出力エントリデバイスドライバ158と共に休眠処理を施した音楽復号デーモン156の休眠を解除する(ステップS519、ステップS521)。セキュア入出力エントリデバイスドライバ158へCPU102を割り当てる。
セキュア入出力エントリデバイスドライバ158は、休眠を解除され、割込通知と、休眠要求の出力元を示す識別情報として受け取ったハンドル値「1」と、セキュア入出力エントリデバイスドライバ158自身の有するデバイスID_Bとを通常OS151へ出力する(ステップS523)。
通常OS151は、受け取ったハンドル値「1」と対応する音楽復号デーモン156へ、受け取った割込通知とハンドル値「1」とデバイスID_Bとを出力する(ステップS524)。
音楽復号デーモン156は、割込通知とハンドル値「1」とデバイスID_Bとを受け取る。受け取った割込通知とデバイスID_Bと、音楽復号デーモン156自身を示すハンドル値「1」とを通常OS151へ出力する(ステップS527)。
通常OS151は、音楽復号デーモン156から割込通知とデバイスID_Bとハンドル値「1」とを受け取る。受け取った割込通知とデバイスID_Bとハンドル値「1」とを、共有メモリ112へ書き込み(ステップS529)、切替処理1に移る(ステップS531)。
切替処理1が終了すると、セキュアOS171は共有メモリ112から、割込通知とデバイスID_Bとハンドル値「1」とを読み出し(ステップS532)、読み出したデバイスID_Bを基にセキュア入出力デバイスドライバ178を起動する(ステップS533)。次に、セキュア入出力デバイスドライバ178へ、読み出した割込通知とデバイスID_Bとハンドル値「1」とを出力する(ステップS534)。
セキュア入出力デバイスドライバ178は、割込通知とデバイスID_Bとハンドル値「1」とを受け取り、セキュア入出力デバイス133へ処理結果を要求する(ステップS536)。セキュア入出力デバイス133から、処理結果として、セキュアメモリ113上のコンテンツ鍵格納アドレスを受け取る(ステップS537)。受け取った処理結果とハンドル値「1」とデバイスID_Bとを含む応答通知をセキュアOS171へ出力する(ステップS539)。
セキュアOS171は、受け取ったハンドル値「1」と対応する音楽復号プログラム176へ、受け取った処理結果とハンドル値「1」とデバイスID_Bとを出力する(ステップS541)。
ここまで、図30〜31を用いた説明では、通常OS151又は通常OS151によって管理される通常メモリ111上のプログラムの実行中における、割込発生時の動作について説明してきたが、セキュアOS171及びセキュアOS171によって管理されるプログラムの実行中における割込発生時の動作は、上述した割込発生時の処理1−2とほぼ同様であり、図26中の通常入出力デバイスを、セキュア入出力デバイスに変更すればよい。ステップS502以降の処理は、図30のステップS513へと続く。
(7)割込発生時の処理3
以下に、図32〜34のフローチャートを用いて、割込発生時の処理3について説明する。これは、図27のステップS337の詳細である。また、割込発生時の処理3は、図40のステップS552〜図41のステップS606のシーケンスと対応している。
暗号処理デバイス117は、暗号化音楽データの復号が終了すると、割り込みを発生させる(ステップS552)。
割込コントローラ107は、割込の発生を検出し、通常OS151へ割込発生通知を出力する(ステップS553)。
通常OS151は、割込コントローラ107から割込発生通知を受け取り、通常割込ハンドラ161を起動する(ステップS556)。通常割込ハンドラ161へ割込発生通知を出力する(ステップS557)。
通常割込ハンドラ161は、割込発生通知を受け取ると、割り込みを発生させている要因を調査する(ステップS558)。暗号処理デバイス117が割り込みを発生させていることを検出し、デバイスID_Cと割込通知とを通常OS151へ出力する(ステップS561)。
通常OS151は、通常割込ハンドラ161から割込通知とデバイスID_Cとを受け取る。受け取ったデバイスID_Cと対応する暗号エントリデバイスドライバ159及び、暗号エントリデバイスドライバ159と共に休眠処理を施した音楽復号デーモン156の休眠を解除し(ステップS562、ステップS563)、暗号エントリデバイスドライバ159へCPU102を割り当てる。
暗号エントリデバイスドライバ159は、休眠を解除されると、割込通知とハンドル値「1」と自身を示すデバイスID_Cとを、通常OS151へ出力する(ステップS564)。
通常OS151は、割込通知とハンドル値「1」とデバイスID_Cとを受け取り、受け取ったハンドル値「1」と対応する音楽復号デーモン156へ、割込通知とハンドル値「1」とデバイスID_Cとを出力する(ステップS567)。
音楽復号デーモン156は、通常OS151を介して暗号エントリデバイスドライバ159からデバイスID_Cと割込通知とを受け取る。次に、受け取った割込通知及びデバイスID_Cと、音楽復号デーモン156自身と対応するハンドル値「1」とを通常OS151へ出力する(ステップS568)。
通常OS151は、音楽復号デーモン156から割込通知とデバイスID_Cとハンドル値「1」とを受け取り、受け取った割込通知とデバイスID_Cとハンドル値「1」とを共有メモリ112へ書き込む(ステップS571)。
次に、通常OS151及びセキュアOS171は、切替処理1を行う(ステップS572)。
切替処理1が終了すると、セキュアOS171は、共有メモリ112から、割込通知とデバイスID_Cとハンドル値「1」とを読み出す(ステップS576)。読み出したデバイスID_Cを基に、暗号デバイスドライバ179を起動し、読み出した割込通知とデバイスID_Cとハンドル値「1」とを出力する(ステップS577)。
暗号デバイスドライバ179は、割込通知とデバイスID_Cハンドル値「1」とを受け取り、暗号処理デバイス117へ処理結果を要求する(ステップS578)。暗号処理デバイス117から、処理結果として、バッファ123上における音楽データの書込先アドレスを取得する(ステップS579)。
暗号デバイスドライバ179は、取得した処理結果と、受け取ったハンドル値「1」と、暗号デバイスドライバ179自身を示すデバイスID_CをセキュアOS171へ出力する(ステップS582)。
セキュアOS171は、暗号デバイスドライバ179から処理結果とハンドル値「1」とデバイスID_Cとを受け取り、受け取った処理結果とハンドル値「1」とデバイスID_Cとを共有メモリ112へ書き込む(ステップS583)。
次に、セキュアOS171及び通常OS151は、切替処理2を行う(ステップS584)。
切替処理2が終了すると、通常OS151は、共有メモリ112からハンドル値「1」、処理結果、デバイスID_Cを読み出す(ステップS586)。読み出したハンドル値「1」を基に、音楽復号デーモン156を起動し、音楽復号デーモン156へ、読み出した処理結果とハンドル値「1」とデバイスID_Cとを出力する(ステップS587)。
音楽復号デーモン156は、通常OS151から処理結果とハンドル値「1」とデバイスID_Cとを受け取る。受け取った処理結果とデバイスID_Cと音楽復号デーモン156自身を示すハンドル値「1」とを含むシステムコールを通常OS151へ出力する(ステップS588)。
通常OS151は、デバイスID_Cと対応する暗号エントリデバイスドライバ159へ、受け取った処理結果とデバイスID_Cとハンドル値「1」とを出力する(ステップS589)。
暗号エントリデバイスドライバ159は、通常OS151を介して、音楽復号デーモン156から処理結果とデバイスID_Cとハンドル値「1」とを受け取り、排他フラグを「0」に変更する(ステップS592)。次に、暗号エントリデバイスドライバ159は、通常OS151への応答通知により(ステップS596)、音楽復号デーモン156へ、受け取った処理結果とハンドル値「1」とデバイスID_Cとを出力する(ステップS597)。
音楽復号デーモン156は、セキュアOS171を介して音楽復号デーモン156から処理結果とハンドル値「1」とデバイスID_Cとを受け取る。次に、受け取った処理結果とハンドル値「1」とを通常OS151へ出力する(ステップS598)。
通常OS151は、音楽復号デーモン156から処理結果とハンドル値「1」とを受け取り、受け取った処理結果とハンドル値「1」とを共有メモリ112へ書き込む(ステップS601)。
次に、通常OS151とセキュアOS171は、切替処理1を行う(ステップS602)。
切替処理1が終了すると、セキュアOS171は、共有メモリ112からハンドル値「1」と処置結果とを読み出す(ステップS603)。セキュアアプリ管理表186上の、ハンドル値「1」を含むエントリ187を基に、音楽復号プログラム176のコンテキストを復帰し(ステップS604)、読み出した処理結果を音楽復号プログラム176へ出力する(ステップS606)。
ここまで、図32〜34を用いた説明では、通常OS151又は通常OS151によって管理される通常メモリ111上のプログラムの実行中における、割込発生時の動作について説明してきたが、セキュアOS171及びセキュアOS171によって管理されるプログラムの実行中における割込発生時の動作は、上述した割込発生時の処理1−2とほぼ同様であり、図29中の通常入出力デバイスを、暗号処理デバイスに変更すればよい。ステップS502以降の処理は、図32のステップS553へと続く。
(7)音楽復号プログラムの削除
図35に示すフローチャートを用いて、音楽復号プログラムの削除処理について説明する。これは、図15のステップS109の詳細である。また、音楽復号プログラム削除処理は、図42のステップS611〜618のシーケンスと対応する。
音楽復号プログラム176は、セキュアアプリ削除命令とハンドル値「1」とを通常OS151へ出力する(ステップS611)。
通常OS151は、音楽復号プログラム176から、ハンドル値「1」とセキュアアプリ削除命令を受け取り、受け取ったハンドル値「1」とセキュアアプリ削除命令とを共有メモリ112へ書き込む(ステップS612)。
次に、通常OS151及びセキュアOS171は、切替処理1を行う(ステップS613)。
切替処理1が終了すると、セキュアOS171は、共有メモリ112からセキュアアプリ削除命令とハンドル値「1」とを読み出す(ステップS614)。セキュアアプリ管理表186上のハンドル値「1」を含むエントリのセキュアアプリアドレスを基に音楽復号プログラム176をセキュアメモリ113上から削除し(ステップS616)、ハンドル値「1」を含むエントリ187をセキュアアプリ管理表186から削除する(ステップS617)。
次に、ハンドル値「1」と削除完了通知とを共有メモリ112に書き込む(ステップS618)。
次に、セキュアOS171と通常OS151は切替処理2を行う(ステップS619)。
切替処理2が終了すると、通常OS151は、共有メモリ112から削除処理完了通知とハンドル値「1」とを読み出す(ステップS621)。ハンドル値「1」とアプリ管理表166とを基に音楽復号デーモン156を、通常メモリ111から削除する(ステップS622)。次に、音楽再生プログラム153へ、削除完了通知を出力し(ステップS623)、ハンドル値「1」を含むエントリ167をアプリ管理表166から削除する(ステップS624)。
1.3まとめ・効果
以上説明してきたように、本発明の携帯電話100において、通常メモリ111上にロードされて実行される音楽再生プログラム153は、保護されるべき処理、具体的には、暗号化音楽データの復号の処理を、セキュアメモリ113上にロードされて実行される音楽復号プログラム176へ依頼する。
音楽復号プログラム176と、通常メモリ111上の音楽復号デーモン156とは対になって動作し、暗号化音楽データの復号に関する一連の処理のうち、保護されるべき処理は、音楽復号プログラム176が分担し、保護する必要のない処理は、音楽復号デーモン156が担う。
このように処理を分担することで、音楽復号プログラム176自体のプログラムサイズが小さくなり、音楽復号プログラム176の保持するデータ、変数なども減少する。さらに、音楽復号プログラム176からの依頼により、音楽復号デーモン156が、通常メモリ111上のライブラリに格納されている関数を使用する。このため、セキュアメモリ113上にライブラリを持つ必要がなくなる。
従って、音楽復号プログラム176及び音楽復号デーモン156による一連の復号処理において、確保すべきセキュアメモリ113の容量を削減することになり、セキュアメモリ113を保護する保護機構の負荷を軽減することができる。
セキュアOS171に管理される、保護されるべきデバイスである暗号処理デバイス117の制御に関する処理について、保護する必要のない排他制御、休眠、割込の通知については、通常メモリ111上にロードされて実行される暗号エントリデバイスドライバ159が実行する。
この動作を、時間の経過に沿って、考察すると、通常OS151は、音楽復号デーモン156からのシステムコールにより、暗号エントリデバイスドライバ159を実行状態に遷移させる。暗号エントリデバイスドライバ159は、排他制御を行い、音楽復号デーモン156を呼び出す。音楽復号デーモン156は、通常OS151及び、セキュアOS171を介して、暗号デバイスドライバ179を呼び出す。セキュアOS171は、暗号デバイスドライバ179を実行状態に遷移させる。暗号デバイスドライバ179は、暗号処理デバイス117に復号処理を指示した後、休眠要求を出力する。暗号エントリデバイスドライバ159は、セキュアOS171、通常OS151及び音楽復号デーモン156を介して、休眠要求を受け取ると、通常OS151へ休眠処理を依頼し、通常OS151は、暗号エントリデバイスドライバ159を休眠状態に遷移させる。
次に、暗号処理デバイス117による処理が終了し、割込が発生し、通常OS151は、音楽復号デーモン156の休眠を解除し、実行状態に遷移させる。暗号エントリデバイスドライバ159は、割込通知を出力し、音楽復号デーモン156は、通常OS151及びセキュアOS171を介して割込通知を、暗号デバイスドライバ179へ出力する。通常OS151は、暗号デバイスドライバ179にCPU102を割り当て、実行状態にする。
このように、暗号デバイスドライバ179と暗号エントリデバイスドライバ159は、対応して状態遷移する。従って、通常OS151は、暗号エントリデバイスドライバ159を介して、セキュアOS171によって管理されている暗号処理デバイス117の使用状態を管理することが可能になった。
セキュアOS171により管理されるデバイスであるセキュア入出力デバイス133についても、同様に、セキュア入出力エントリデバイスドライバ158を制御することにより、通常OS151は、セキュア入出力デバイス133の動作を監視し、制御することが可能になった。
1.4 携帯電話100のその他の動作
携帯電話100の初期動作及び仮想メモリ空間の構築について以下に説明する。
(1)ブートプログラム
図43は、通常メモリ111に記憶されているデータの一例を示している。これは、携帯電話100の起動直後の通常メモリ111内の様子を示している。
通常OS151、ライブラリ152、通常入出力デバイスドライバ157、セキュア入出力エントリデバイスドライバ158、暗号エントリデバイスドライバ159、通常切替デバイスドライバ160、通常割込ハンドラ161は、既に説明したとおりである。
ブートプログラム162は、通常メモリ111を構成するROMに予め記憶されておりブートプログラム162は、具体的には図示されていないが、携帯電話100に、含まれる起動部により読み出され実行されるプログラムである。
起動部は、携帯電話100に電源が投入された直後に通常メモリ111からブートプログラム162を読み出し、読み出したブートプログラム162に従って動作する。以下、ブートプログラム162に従う起動部の動作によって、ブートプログラムについて説明する。
先ず、ブートプログラム162は、CPU102のレジスタ、MMU103をクリアし、切替制御部106へ初期化要求を出力する。切替制御部106から、セキュアメモリ113上のプログラムの初期化が終了したことを通知する初期化終了通知を受け取り、次に、通常OS151、通常切替デバイスドライバ160などを、通常メモリ111上にロードし、初期化する。
(2)携帯電話100の初期動作
携帯電話100は、起動時に切替制御部106及びブートプログラムによって、初期化される。携帯電話100の起動時の動作について、図44に示すフローチャートを用いて説明する。
携帯電話100の電源がONの状態になり、電力供給が開始されると(ステップS651)、起動部は、ブートプログラム162を起動する(ステップS652)。ブートプログラム162は、先ず、CPU102及びMMU103のレジスタをクリアすることで初期化する(ステップS653)。次に、切替制御部106へ、初期化要求を出力する(ステップS654)。
切替制御部106は、初期化要求を受け取り、二次記憶部104から暗号化セキュアOSを読み出す(ステップS656)。読み出した暗号化セキュアOSを復号してセキュアOSを生成する(ステップS657)。次に、メモリ保護部114により、バス130とセキュアメモリ113とを接続する(ステップS658)。生成したセキュアOSをセキュアメモリ113上に書き込み、初期化する(ステップS659)。続いて、セキュア切替デバイスドライバを、二次記憶部104から読み出し、セキュアメモリ113上にロードする(ステップS661)。
次に、メモリ保護部114により、セキュアメモリ113とバス130とを切断し(ステップS662)、初期化終了通知をブートプログラム162へ出力する(ステップS663)。
ブートプログラム162は、切替制御部106から、初期化終了通知を受け取り、次に、通常OS151、通常切替デバイスドライバ160などのプログラムを通常メモリ上にロードし、初期化する(ステップS664)。
なお、上記の説明では、暗号化セキュアOS、セキュア切替デバイスドライバは、二次記憶部104上に記憶されているとして説明したが、外部の記録メディアなどに記憶されているとしてもよい。
(3)通常OS151及びセキュアOS171による初期化動作
通常入出力デバイスドライバ157、セキュア入出力エントリデバイスドライバ158、暗号エントリデバイスドライバ159は、通常OS151の管理下で、通常メモリ111上に常駐するプログラムである。
また、セキュア入出力デバイスドライバ178及び暗号デバイスドライバ179は、セキュアOS171の管理下でセキュアメモリ113上に常駐するプログラムである。
ブートプログラム162は、通常OS151及び通常切替デバイスドライバ160などを通常メモリ111上にロードし、初期化し終えると、通常OS151を起動する。
通常OS151は、起動すると、先ず、通常メモリ111上にロードされているプログラムをサーチし、通常入出力デバイスドライバ157、セキュア入出力エントリデバイスドライバ158、暗号エントリデバイスドライバ159がロードされているか否かを判断し、ロードされていなければ、二次記憶部104から読み出し、ロードする。
通常OS151が、セキュア入出力エントリデバイスドライバ158及び暗号エントリデバイスドライバ159をロードする際に、セキュアOS171によって、セキュア入出力デバイスドライバ178及び暗号デバイスドライバ179もセキュアメモリ113上にロードされる。
通常OS151及びセキュアOS171による、この動作は、既に説明した音楽復号プログラムの登録処理と類似しているので、ここでは、簡単に説明する。なお、二次記憶部104は、各デバイスドライバ及び、エントリデバイスドライバを暗号化して生成された暗号化エントリデバイスドライバを、予め記憶しているものとする。
セキュア入出力エントリデバイスドライバが、ロードされていないと判断すると、通常OS151は、二次記憶部104から、セキュア入出力エントリデバイスドライバを読み出し、通常メモリ111に書き込む。書き込み先のアドレスとセキュア入出力エントリデバイスドライバ158とを対応付けて記憶する。次に、共有メモリ112にデバイスドライバのロードを指示するデバドラ登録要求とセキュア入出力デバイスドライバを示すデバイスID_Bとを書き込む。次に、通常切替デバイスドライバ160へ切替指示を出力する。
切替処理が終了し、セキュアOS171は、CPU102に復帰する。共有メモリ112から、デバドラ登録要求とデバイスID_Bとを読み出す。デバイスID_Bと対応する暗号化セキュア入出力エントリデバイスドライバを読み出し、暗復号プログラム174によって、読み出した暗号化エントリデバイスドライバを復号して、セキュア入出力エントリデバイスドライバを生成し、セキュアメモリ113に書き込む。書き込み先のアドレスとデバイスID_Bとを対応付けて記憶する。
次に、共有メモリ112に、デバドラ登録完了通知を書き込み、セキュア切替デバイスドライバ180へ切替指示を出力する。
切替処理が終了し、CPU102に復帰すると、通常OS151は、共有メモリ112から、デバドラ登録完了通知を読み出す。
続いて、暗号エントリデバイスドライバついても、同様にして、ロードする。
(4)MMU制御プログラム184による仮想記憶空間
セキュアOS171は、これまで言及していないが、図45に示すようにMMU制御プログラム184を含んでいる。MMU制御プログラム184は、MMU103により実行されるプログラムであり、セキュアメモリ113、共有メモリ112及び二次記憶部104の物理アドレスと論理アドレスとを変換することにより、仮想記憶空間を構築する。
図46は、MMU制御プログラム184により、実現される仮想記憶空間の一例を示している。図45に示すように、セキュアメモリ113上には、音楽復号プログラム176と通信鍵生成プログラム185とがロードされていると想定する。音楽復号プログラム176及び通信鍵生成プログラム185は、セキュアアプリケーションである。
音楽復号プログラム176及び通信鍵生成プログラム185は、それぞれ、仮想空間201、仮想空間204にロードされている。それぞれのプログラムには、個別に、通常共有空間202及び通常共有空間206が割り当てられている。通常共有空間202及び通常共有空間206は、それぞれのプログラムが、通常メモリ111上のプログラムと共有する仮想空間である。
音楽復号プログラム176は、仮想空間204及び通常共有空間206へアクセスすることはできない。また、通信鍵生成プログラム185は、仮想空間201及び通常共有空間202へアクセスすることはできない。
セキュア共有空間207は、音楽復号プログラム176及び通信鍵生成プログラム185のいずれからもアクセス可能であるが、通常OS151の管理下で動作するプログラムからはアクセスできない仮想空間である。
セキュアOS171は、仮想空間208にロードされている。セキュアOS171は、仮想空間201及び204へアクセス可能であるが、音楽復号プログラム176及び通信鍵生成プログラム185から仮想空間208へアクセスすることはできない。
このようにして、MMU制御プログラム184は、それぞれのアプリケーションごとに、個別の仮想空間を割り当て、お互いにアクセスできないように制御する。
なお、MMU制御プログラム184は、上述した仮想記憶空間を、セキュアメモリ113、共有メモリ112及び二次記憶部104上に実現する。MMU制御プログラム184は、暗号処理プログラムを含んでおり、セキュアメモリ113上に記憶されているデータを二次記憶部104上にページアウトする際には、データを暗号化し、二次記憶部104から、セキュアメモリ113上へ、ページインする際には、復号するとしてもよい。
また、音楽復号プログラム176及び通信鍵生成プログラム185は、それぞれの通常共有空間に互いにアクセスできるとしてもよい。
1.5 実施の形態1の変形例
(1) 実施の形態1において、音楽復号プログラム176と音楽復号デーモン156とが対になって動作することにより、暗号化音楽データの復号処理を達成するとして説明してきたが、図47に示すような構成であっても良い。
この構成では、通常メモリ111上には、音楽再生プログラム153に代わって音楽再生プログラム153bがロードされている。音楽再生プログラム153bは、外部処理マネージャ156bを含んで構成され、外部処理マネージャ156bは、上述の音楽復号デーモン156と同様に、暗号化音楽データの復号処理のうち、保護される必要のない処理を分担する。また、音楽復号プログラム176と通常OS151との間の各種の情報及びコマンドの入出力を行う。
この構成の場合、アプリ管理表166の各エントリは、ハンドル値とアプリコンテキストアドレスとから構成される。通常OS151は、受け取り先を示す識別情報としてハンドル値「1」を含むコマンドを受け取ると、アプリ管理表166を基に、音楽再生プログラム153のコンテキストを復帰させ、外部処理マネージャのスレットにCPU102を割り当てる。
このような構成によると、音楽再生プログラム153が外部処理マネージャ156bを含んでいるため、音楽復号プログラムの登録処理の際に、音楽復号デーモン156を、通常メモリ上にロードする必要がなく、実施の形態1において説明した登録処理を短縮することができる。
(2) なお、本実施の形態において、セキュア入出力エントリデバイスドライバ158とセキュア入出力デバイスドライバ178とを同一の識別情報デバイスID_Bによって識別しているが、異なる識別情報にによって識別するとしても良い。暗号エントリデバイスドライバ159と暗号デバイスドライバ179についても同様である。
具体的には、通常OS151及びセキュアOS171は、制御データとして、それぞれの記憶領域に、図48に示すセキュアデバイスドライバ管理表231を有する。
図48に示すセキュアデバイスドライバ管理表231は、2つのセキュアデバイスドライバ管理情報232、234を含む。各セキュアデバイスドライバ管理情報は、エントリデバイスドライバ識別子とセキュアデバイスドライバ識別子とから構成される。セキュアデバイスドライバ識別子は、セキュアOS171に管理されるデバイスを制御するデバイスドライバを示す識別情報であり、エントリデバイスドライバ識別子は、前記デバイスドライバと対になって動作する通常メモリ111上のプログラムを示す識別情報である。具体的には、セキュアデバイスドライバ管理情報232は、セキュア入出力エントリデバイスドライバ158を識別する情報であるデバイスID_Bと、セキュア入出力エントリデバイスドライバ158と対になって動作するセキュア入出力デバイスドライバ178を識別する情報である「100」から構成される。セキュアデバイスドライバ管理情報234は、暗号エントリデバイスドライバ159を示す識別情報デバイスあるデバイスID_Cと、暗号エントリデバイスドライバ159と対になって動作する暗号デバイスドライバ179を示す識別情報「101」とを含む。
セキュアデバイスドライバ管理表231は、通常OS151及びセキュアOS171の起動時に生成されるものであり、通常OS151は、通常メモリ111上にセキュア入出力エントリデバイスドライバをロードすると、セキュア入出力エントリデバイスドライバを示す識別情報であるデバイスID_Bを共有メモリ112に書き込み、切替処理に移る。
切替処理が終了すると、セキュアOS171は、共有メモリ112からデバイスID_Bを読み出し、次に、二次記憶部104から暗号化セキュアデバイスドライバを読み出し、復号して、セキュアメモリ113上にロードする。ここで、ロードしたセキュア入出力デバイスドライバを示す識別情報「100」と受け取ったデバイスID_Bとを含むセキュアデバイスドライバ管理情報232を生成し、セキュアメモリ113上に書き込む。次に、識別情報「100」を共有メモリ112に書き込み、切り替え処理に移る。
切り替え処理が終了すると、通常OS151は、共有メモリ112から識別情報「100」を読み出し、読み出した識別情報「100」と、セキュア入出力エントリデバイスドライバ158を示すデバイスID_Bとからなるセキュアデバイスドライバ管理情報を生成し、通常メモリ111上に書き込む。
セキュアデバイスドライバ情報234についても同様である。
通常OS151、上記のようにして生成した、セキュアデバイスドライバ管理表231を用いて、セキュア入出力エントリデバイスドライバ158及び暗号エントリデバイスドライバ159を管理する。また、セキュアOS171は、セキュアデバイスドライバ管理表231を用いて、セキュア入出力デバイスドライバ178及び暗号デバイスドライバ179を管理する。
(3) 上記の実施の形態において、セキュアOS171は、デバッグ無効化プログラムを含んでいるが、セキュア切替デバイスドライバ180が、この機能を備えているとしてもよい。
この構成では、セキュア切替デバイスドライバ180は、切替制御部106から呼び出される度に、先ず、デバッガIF101を無効化し、次に、セキュアOS171のコンテキストを復帰させる。
また、セキュアOS171から切替指示を受け取ると、セキュアOS171のコンテキストを保存した後、デバッガIF101を有効にし、切替制御部106へ切替指示を出力する。
このようにして、セキュアOS171がCPU102に復帰する前に、デバッガIF101を無効化することで、セキュアOS171の動作を、外部のデバッグ装置に検出、操作されることを、より確実に防ぐことができる。
また、セキュアメモリ113上のプログラムに代わって、切替制御部106が、デバッガIF101を無効化、有効化するとしても良い。
(4)上記の実施の形態1では、通常入出力デバイスドライバ157及び暗号エントリデバイスドライバ159は、排他フラグを用いて排他制御を行っており、排他フラグが「1」であれば、エラー通知を出力するとしている。しかし、各ドライバが動作している間に受け取った処理の依頼をストックしておくとしても良い。
この場合、通常入出力デバイスドライバ157及び暗号エントリデバイスドライバ159は、受け取った処理の依頼を記憶するQUEUEを備えており、処理の要求を受け取ると、排他フラグを確認する代わりに、受け取った処理依頼をQUEUEに格納する。
通常入出力デバイスドライバ157は、通常入出力デバイス132が処理を終え、処理結果を取得する。次に、QUEUEから次の処理依頼を読み出し、通常入出力デバイス132へ出力する。
暗号エントリデバイスドライバ159は、処理結果を受け取り、受け取った処理結果を出力すると、QUEUEから次の処理依頼を読み出す。読み出した処理依頼を、暗号デバイスドライバ179へ、出力する。
また、QUEUEに代わって、暗号エントリデバイスドライバ159専用のバッファ領域を備え、バッファ領域に受け取った処理依頼と、受け取った処理依頼の優先度とを対応付けて書き込むとしてもよい。
この場合、暗号処理デバイス117による処理が終了し、処理結果を受け取ると、暗号デバイスドライバ179は、優先度の高い処理依頼を読み出し、暗号処理デバイス117へ出力する。
(5)上記の実施の形態では、セキュア切替デバイスドライバ180が、セキュアOS171のコンテキストの保存及び復帰を行っているが、これを通常切替デバイスドライバ160が行っても良い。
この場合、セキュアOS171から通常OS151への切替処理2の際に、セキュアOS171は、切替制御部106へ切替指示を出力する。切替制御部106は、メモリ保護部114に切断指示を出力し、セキュアメモリ113とバス130とを切断する。次に、通常切替デバイスドライバ160を呼び出す。通常切替デバイスドライバ160は、CPU102のレジスタ、MMU103の内容などを含むセキュアOS171のコンテキストを通常メモリ111上に保存し、CPU102及びMMU103をクリアし、通常OS151のコンテキストを復帰させる。
通常OS151からセキュアOS171への切替処理1の際には、通常OS151から切替指示を受けると、通常切替デバイスドライバ160は、通常OS151のコンテキストを保存し、CPU102及びMMU103をクリアする。次に、セキュアOS171のコンテキストを復帰させ、切替制御部106へ切替指示を出力する。
このようにして、セキュアOS171のコンテキストの保存と復帰を通常メモリ111上の通常切替デバイスドライバ160が行うことにより、セキュアメモリ113上にセキュア切替デバイスドライバ180が不要になる。従って、セキュアメモリ113の容量を削減することができる。
(6)上記の実施の形態及び変形例では、携帯電話100は、MMU103により仮想記憶空間を形成している。しかし、仮想記憶空間を使用しない構成であっても良い。この場合、各メモリに記憶されているデータ及びプログラムは物理アドレスによって管理されている。
従って、このような構成の場合、コンテキストの保存及び復帰に係るMMUの内容の保存を行う必要がなくなる。
また、この場合、セキュアOS171のコンテキストを保存しない構成であってもよい。セキュア切替デバイスドライバ180は、切替制御部106から呼び出されると、セキュアOS171の先頭アドレスをCPU102に復帰させ、セキュアOS171を最初から起動する。
(7)また、上記の実施の形態1において、携帯電話100は、通常メモリ111上にロードされる通常OS151とセキュアメモリ113上にロードされて実行されるセキュアOS171とを備えているが、通常OS151を備えていない構成であっても良い。
携帯電話100の初期動作において説明したように、電源投入後に、先ず、ブートプログラム162が起動する。ブートプログラム162は、CPU102及びMMU103を初期化した後、切替制御部106へ、初期化要求を出力し、切替制御部106が、セキュアOS171及びセキュア切替デバイスドライバ180をセキュアメモリ113上にロードする。
セキュアOS171が、セキュアメモリ113及び通常メモリ111上に、各種のプログラムをロードする。
通常メモリ111上の各プログラムは、システムコールを含む全てのコマンドを、通常OS151に代わって、通常切替デバイスドライバ160へ出力する。
通常切替デバイスドライバ160は、通常メモリ111上のプログラムから、コマンドを受け取ると、受け取ったコマンドを、所定の記憶領域に書き込み、切替処理を行う。セキュアOS171は、CPU102に復帰すると、所定の記憶領域から、コマンドを読み出す。
このようにして、セキュアOS171が、通常メモリ111及びセキュアメモリ113上の各プログラムを制御する。
また、逆に、セキュアOS171を備えていない構成であっても良い。この場合、セキュア切替デバイスドライバ180又は切替制御部106がデバッガ無効化プログラムを備えている。
セキュアメモリ113上の各プログラムは、システムコールを含む全てのコマンドをセキュア切替デバイスドライバ180へ出力する。セキュア切替デバイスドライバ180は、共有メモリ112上のコマンド領域に受け取ったコマンドを書き込み、切替制御部106へ切替指示を出力する。
通常OS151は、CPU102に復帰すると、共有メモリ112のコマンド領域から、セキュアメモリ113上のプログラムから出力されたコマンドを読み出す。
このようにして、通常OS151が、通常メモリ111及びセキュアメモリ113上の各プログラムを制御するとしてもよい。
(8)上記の実施の形態及び変形例において、切替制御部106及びメモリ保護部114は、セキュアメモリ113とバス130とを切断することで、セキュアメモリ113上のプログラム及びデータを外部のアクセスから保護している。
これに代わって、メモリ保護部114が、セキュアメモリ113内のデータを暗号化及び復号することによって、保護しても良い。切替制御部106は、メモリ保護部114へ、接続指示又は切断指示に代わって、暗号化又は復号を指示する。
メモリ保護部114は、切替制御部106の指示によって、セキュアメモリ113内のデータを暗号化又は復号する。
また、セキュアメモリ113内のデータを全てではなく、必要に応じて、音楽再生プログラム153のコード部分のみ、データ部分のみ又はスタック部分のみを暗号化するとしても良い。セキュアOS171、暗号デバイスドライバ179、セキュア入出力デバイスドライバ178などについても同様である。
(9)上記の実施の形態及び変形例では、通常OS151が、アプリ管理表166を管理し、アプリ管理表166を用いて、該当するアプリケーション及びセキュアアプリケーションと対応するプログラム(例えば音楽復号デーモン156)を呼び出している。しかし、音楽再生プログラム153と同様にセキュアアプリケーションに処理を依頼するアプリケーションが多数存在する場合、通常OS151とは別に、アプリ管理表166の管理と、プログラムの呼び出しを行うプログラムを備える構成であっても良い。このプログラムをデーモン制御プログラムと呼ぶ。
この場合、通常切替デバイスドライバ160は、切替制御部106から呼び出されると、通常OS151に代わって、デーモン制御プログラムを起動する。デーモン制御プログラムは、共有メモリ112から、コマンドを読み出し、読み出したコマンドに含まれる識別情報によって、該当するプログラムを呼び出す。
また、各アプリケーション及び、音楽復号デーモン156を初めとするプログラムは、通常OS151に代わって、セキュア処理要求をデーモン制御プログラムに出力する。
デーモン制御プログラムは、受け取ったセキュア処理要求を共有メモリ112に書き込み、通常切替デバイスドライバ160へ、切替指示を出力する。
(10)ここまで、本発明のひとつの実施の形態として携帯電話100について説明してきたが、同様の機能を有する情報処理装置、例えばパーソナルコンピュータなどであってもよい。
この場合、通常メモリ111及びセキュアメモリ113は、RAM及びハードディスクを含んで構成される。上記の説明では、セキュアOS171及び音楽復号プログラム176は暗号化されて、二次記憶部104に記憶されているが、予め、セキュアメモリ113上のハードディスク部分に記憶されているとしてもよい。
2. 実施の形態2
本発明の実施の形態2について、以下に説明する。
図49は、本発明の実施の形態2の携帯電話400の使用例を示している。携帯電話400は、基地局15、携帯電話網10、インターネット20を介して、無効化リスト発行装置250と接続されている。
無効化リスト発行装置250は、無効化されたプログラムに係る情報を管理しており、これらのプログラムを示す無効化リストを生成し、インターネット20を介して、生成した無効化リストを携帯電話400へ送信する。
携帯電話400は、無効化リスト発行装置250から無効化リストを受信し、受信した無効化リストを基に、自身の記憶しているプログラムが無効であるか否かを判断する。
2.1 無効化リスト発行装置250
無効化リスト発行装置250は、図50に示すように、通信部251、署名生成部252、鍵記憶部253、ハッシュ生成部254、制御部257、情報記憶部260、入力部262及び表示部263から構成される。
無効化リスト発行装置250は、具体的には、マイクロプロセッサ、RAM、ROMを含んで構成されるコンピュータシステムである。RAM、ROMにはコンピュータプログラムが記憶されており、前記マイクロプロセッサが前記コンピュータプログラムに従って動作することにより、無効化リスト発行装置250は、その機能を達成する。
(1)情報記憶部260
情報記憶部260は、図50に示すように、OS無効化リスト266及びアプリ無効化リスト276を記憶している。
OS無効化リスト266は、発行者ID267、リストID268及び無効化ID269、270、271・・・から構成される。
発行者ID267は、OS無効化リストの発行者を示しており、一例として、無効化リスト発行装置250の装置ID、無効化リスト発行装置250の管理者の識別情報などである。
リストID268は、OS無効化リスト266の新旧を示す情報であり、ここでは、OS無効化リスト266の作成日「20041015」を、リストID268としている。
無効化ID269、270、271・・・は、無効化されたオペレーティングシステムの識別情報である。
アプリ無効化リスト276は、発行者ID277、リストID278、無効化ID279、280、281・・・から構成される。発行者ID277は、アプリ無効化リストの発行者を示す情報であり、一例として、無効化リスト発行装置250の装置ID、無効化リスト発行装置250の管理者の識別情報などである。
リストID278は、アプリ無効化リスト276の新旧を示す情報である。ここでは、アプリ無効化リスト276の作成日「20041009」をリストID278としている。
無効化ID279、280、281・・・は、無効化されたアプリケーションの識別情報である。
(2)通信部251
通信部251は、インターネット20と接続されており、制御部257とインターネット20に接続されている外部機器との間で、情報の送受信を行う。ここで、外部機器とは携帯電話400である。
(3)ハッシュ生成部254
ハッシュ生成部254は、制御部257から、OS無効化リスト266とハッシュ生成指示とを受け取る。また、アプリ無効化リスト276とハッシュ生成指示とを受け取る。
ハッシュ生成指示を受け取ると、受け取ったOS無効化リスト266又はアプリ無効化リスト276をハッシュ関数に代入し160バイトのOSダイジェストデータ又はアプリダイジェストデータを生成する。ここで、ハッシュ関数には、一例としてSHA−1を用いる。ハッシュ関数SHA−1については、公知の技術であるので説明を省略する。また、他のハッシュ関数を用いても良い。
生成した、OSダイジェストデータ又はアプリダイジェストデータを制御部257へ出力する。
(4)鍵記憶部253及び署名生成部252
鍵記憶部253は、無効化リスト発行装置250に固有の発行装置秘密鍵と、前記発行装置秘密鍵と対応する発行装置公開鍵とを記憶している。
署名生成部252は、制御部257から、OSダイジェストデータ又はアプリダイジェストデータを受け取り、署名生成を指示される。
OSダイジェストデータを受け取り、署名生成を指示されると、鍵記憶部253から、発行装置秘密鍵を読み出し、読み出した発行装置秘密鍵を用いて、受け取ったOSダイジェストデータに署名生成アルゴリズムSを施して、署名データを生成し、生成した署名データを、制御部257へ出力する。署名生成アルゴリズムSは、一例として、楕円DSA署名、RSA(RivestShamirAdleman)署名などを用いる。
アプリダイジェストデータを受け取り、署名生成を指示された場合についても同様にして署名データを生成し、制御部257へ出力する。
(5)制御部257
制御部257は、通信部251及びインターネット20を介して携帯電話400から、最新のOS無効化リスト及びアプリ無効化リストの送信を要求するリスト要求を受信する。
リスト要求を受信すると、情報記憶部260からOS無効化リスト266を読み出し、読み出したOS無効化リスト266をハッシュ生成部254へ出力し、ハッシュ生成指示を出力する。次に、ハッシュ生成部254から、OSダイジェストデータを受け取る。受け取ったOSダイジェストデータを署名生成部252へ出力し署名生成を指示する。次に、署名生成部252から署名データを受け取る。受け取った署名データを、OS無効化リスト266に付加して、署名付OS無効化リストを生成する。
アプリ無効化リスト276についても同様にして、ハッシュ生成部254及び署名生成部252へ指示して署名データを生成する。生成した署名データをアプリ無効化リスト276に付加して、署名付アプリ無効化リストを生成する。
次に、通信部251及びインターネット20を介して携帯電話400へ、生成した署名付OS無効化リストと署名付アプリ無効化リストとを送信する。
また、制御部257は、入力部262を介して、操作者による各種の指示及びデータを受け取り、受け取った指示に従って動作する。
(6)入力部262及び表示部263
入力部262は、無効化リスト発行装置250の操作者による指示及びデータの入力を受け付け、受け付けた指示及びデータを制御部257へ出力する。
表示部263は、制御部257の指示により各種の画面を表示する。
2.2 携帯電話400
携帯電話400のハード構成は、図2に示す携帯電話100の構成とほぼ同様であり、デバッガIF、CPU、MMU、二次記憶部、切替制御部106、割込コントローラ、入力部、表示部、通常メモリ、共有メモリ、セキュアメモリ413、メモリ保護部414、入出力部、暗号処理デバイス、無線通信制御部、マイク、スピーカ、通信部、バッファ、符号処理部、D/A変換部から構成される。
セキュアメモリ413、メモリ保護部414以外の各部については、携帯電話100と同様であるので、詳細な説明を省略し、ここでは、携帯電話100と異なる部分についてのみ説明する。
(1)セキュアメモリ413
セキュアメモリ413は、図51に示すように、音楽復号プログラム446、セキュアOS441などの各種のプログラムを記憶している。
音楽復号プログラム446は、実施の形態1の音楽復号プログラム176と同様に、暗号化音楽データの復号の手順を含んでおり、この手順については、説明を省略する。
音楽復号プログラム446は、ヘッダ部分にアプリID447及び無効フラグ448を含んでいる。アプリID447は、音楽復号プログラム446に固有の識別情報である。無効フラグ448は、音楽復号プログラム446が、無効化されているか否かを示すフラグであり、無効フラグ「1」は、音楽復号プログラム446が無効化されていることを示しており、無効フラグ「0」は、無効化されていないことを示す。
セキュアOS441は、実施の形態1のセキュアOS171と同様の処理を実行する本ソフトウェアであるので、セキュアOS441の動作については説明を省略する。ただし、セキュアOS441は、セキュアメモリ413上の各アプリケーションを起動又はCPUに復帰させる際に、各アプリケーションのヘッダ部分の無効フラグを読み出し、無効フラグが「1」である場合、そのアプリケーションの起動又は復帰を中止する。
セキュアOS441は、ヘッダ部分にセキュアOSID442及び無効フラグ443を含んでいる。
セキュアOSID442は、セキュアOS171をと対応する識別情報である。無効フラグ443は、セキュアOS441が無効化されているか否かを示すフラグであり、無効フラグ「1」は、音楽復号プログラム446が無効化されていることを示しており、無効フラグ「0」は、無効化されていないことを示す。
また、本実施の形態において、セキュアメモリ413上にロードされ切替処理を行うセキュア切替デバイスドライバは、セキュアOS441のコンテキストをCPUに復帰させる前に、セキュアOS441の無効フラグ443を読み出し、無効フラグが「1」であった場合には、セキュアOS441の復帰を中止する。
(2)メモリ保護部414
メモリ保護部414は、図51に示すように、無効化リスト記憶部421、無効化リスト更新部424、アプリ検証部428、アプリ無効化部429、OS検証部431及びOS無効化部432から構成される。
<無効化リスト記憶部421>
無効化リスト記憶部421は、アプリ無効化リスト422及びOS無効化リスト423を記憶している。
アプリ無効化リスト422及びOS無効化リスト423は、それぞれ、無効化リスト発行装置250の情報記憶部260に記憶されているアプリ無効化リスト276及びOS無効化リスト266と同様の構成である。
<無効化リスト更新部424>
無効化リスト更新部424は、予め、署名検証鍵426を記憶している。署名検証鍵426は、無効化リスト発行装置250の鍵記憶部253に記憶されている発行装置公開鍵と同一の鍵である。
無効化リスト更新部424は、切替制御部106から、セキュアメモリ413とバス130との接続を指示する接続指示を受け取る。接続指示を受け取ると、無線通信制御部、通信部を介して、最新のアプリ無効化リスト及びOS無効化リストの送信を要求するリスト要求を、無効化リスト発行装置250へ送信する。
次に、無線通信制御部、通信部を介して、無効化リスト発行装置250から、署名付OS無効化リストと署名付アプリ無効化リストとを受信する。
受信した署名付OS無効化リストの署名データに、署名検証鍵を用いて、署名検証を行う。具体的には、署名データに、署名検証鍵を用いて、署名検証アルゴリズムVを施してチェックデータを生成する。署名検証アルゴリズムVは、署名生成アルゴリズムSによって生成された署名データを検証するアルゴリズムである。
次に、受信したOS無効化リストをハッシュ関数に代入し、OSダイジェストデータを生成する。生成したチェックデータとダイジェストデータとを比較し、両者が一致する場合、署名検証が成功であると判断し、一致しない場合、失敗であると判断する。署名検証に失敗した場合には、以下に説明する、リストIDの比較及びOS無効化リストの更新を中止する。
受信した署名付アプリ無効化リストについても、同様にして署名検証を行う。署名検証が失敗であった場合には、以下に説明するアプリIDの比較及びアプリ無効化リストの更新を中止する。
次に、受信したOS無効化リストと、無効化リスト記憶部421の記憶しているOS無効化リスト423とに含まれるリストIDを比較する。両者が同一であれば、受信したOS無効化リストを破棄する。受信したOS無効化リストのリストIDが、無効化リスト記憶部421の記憶しているOS無効化リスト423のリストIDよりも新しい日付を示していれば、無効化リスト記憶部421の記憶しているOS無効化リスト423を、受信したOS無効化リストにより更新する。
アプリ無効化リストについても、同様にして、受信したアプリ無効化リストと、無効化リスト記憶部421の記憶しているアプリ無効化リスト422の新旧を比較し、アプリ無効化リスト422の方が古い場合は、受信したアプリ無効化リストにより、無効化リスト記憶部421内のアプリ無効化リスト422を更新する。
<OS検証部431及びOS無効化部432>
OS検証部431は、セキュアOS441のヘッダ部分からセキュアOSID442を読み出す。次に、無効化リスト記憶部421からOS無効化リスト423を読み出し、読み出したセキュアOSID442が、OS無効化リスト423の無効IDに含まれているか否かを判断する。セキュアOSID442が、OS無効化リスト423に含まれている場合には、セキュアOS441が無効であると判断し、OS無効化部432へ無効化を指示する。
セキュアOSID442が、OS無効化リスト423に含まれていなければ、有効であると判断する。
OS無効化部432は、OS検証部431から無効化を指示され、セキュアOS441のヘッダ部分の無効フラグを「1」に書き換える。
<アプリ検証部428及びアプリ無効化部429>
アプリ検証部428は、セキュアメモリ413上の音楽復号プログラム446のヘッダ部分からアプリID447を読み出す。次に、無効化リスト記憶部421からアプリ無効化リスト422を読み出し、アプリID447がアプリ無効化リスト422に含まれているか否かを判断する。アプリID447がアプリ無効化リスト422に含まれている場合、音楽復号プログラム446が無効なプログラムであると判断し、アプリ無効化部429へ無効化を指示する。
アプリID447がアプリ無効化リストに含まれていなければ、音楽復号プログラム446が有効なプログラムであると判断する。
アプリ無効化部429は、アプリ検証部428から、無効化の指示を受け、音楽復号プログラム446の無効フラグを「1」に設定する。
セキュアメモリ413上に、複数のアプリケーションが存在する場合、全てのアプリケーションについて、アプリ検証部428及びアプリ無効化部429は、同様にして、アプリケーションが無効であるか否かの判断、無効であった場合の無効フラグの設定を繰り返す。
(3)メモリ保護部の検証動作
図52〜53に示すフローチャートを用いて、メモリ保護部414によるプログラムの検証動作について、説明する。
切替制御部106から、接続指示を受ける(ステップS671)。接続指示を受け取ると、無効化リスト更新部424は、無線通信制御部118及び通信部121を介して無効化リスト発行装置250へ、リスト要求を送信する(ステップS672)。次に、通信部及び無線通信制御部を介して、署名付OS無効化リストと署名付アプリ無効化リストとを取得する(ステップS673)。
無効化リスト更新部424は、署名検証鍵426を読み出し、読み出した署名検証鍵を用いて、取得した署名付OS無効化リスト及び署名付アプリ無効化リストの署名検証を行う(ステップS674)。署名検証が失敗であれば(ステップS676のNO)、OS検証部によるステップS681へ処理を移す。
署名検証が成功であれば(ステップS676のYES)、無効化リスト記憶部に記憶されているOS無効化リスト423及びアプリ無効化リスト422のリストIDを読み出す(ステップS677)。読み出したOS無効化リスト423リストIDと、受信したOS無効化リストのリストIDと比較し、アプリ無効化リスト422のリストIDと受信したアプリ無効化リストのリストIDを比較することで、OS無効化リスト423及びアプリ無効化リスト422が最新版であるか否かを判断する(ステップS678)。最新版でないと判断すると(ステップS678のNO)、受信したOS無効化リスト及び受信したアプリ無効化リストにより、無効化リスト記憶部421に記憶されているOS無効化リスト423及びアプリ無効化リスト422を更新する(ステップS679)。
最新版であると判断すると(ステップS678のYES)、ステップS679の処理を省略する。
ステップS672〜679の無効化リスト更新部424による処理が終了すると、OS検証部431は、セキュアメモリ413から、セキュアOSID442を読み出し(ステップS681)、読み出したセキュアOSID442が、OS無効化リスト423に登録されているか否かによって、セキュアOS441が無効であるか有効であるかを判定する(ステップS682)。
有効であると判定すると(ステップS683のYES)、アプリ検証部428によるステップS686の処理に移る。
無効であると判断されると(ステップS683のNO)、OS無効化部432は、セキュアOS441の無効フラグ443を「1」に設定する(ステップS684)。
OS検証部431及びOS無効化部432によるステップS684までの処理が終了すると、アプリ検証部428は、セキュアメモリ413上の音楽復号プログラム446のアプリID447を読み出し(ステップS686)、読み出したアプリIDがアプリ無効化リスト422に登録されているか否かによって、音楽復号プログラム446が有効であるか無効であるかを判定する(ステップS687)。
有効であると判定されると(ステップS688のYES)、検証処理を終了する。無効であると判定されると(ステップS688のNO)、アプリ無効化部429は、音楽復号プログラム446の無効フラグを「1」に設定する(ステップS689)。
2.3 まとめ・効果
以上、説明してきたように、本実施の形態の携帯電話400は、無効化リスト発行装置250から、随時最新のOS無効化リスト及びアプリ無効化リストを取得する。取得したOS無効化リスト及びアプリ無効化リストを基に、自身の記憶しているセキュアOS441、音楽復号プログラム446を初めとするセキュアメモリ413上にロードされているアプリケーションが有効であるか否かを判断し、無効化されているプログラムの実行を中止する。
このような構成にすることで、携帯電話400が発売された後、後発的に無効化すべきであることが判明したプログラムについても、その実行を中断することが可能となり、不正なプログラムの実行による、データの不正使用を防止することができる。
2.4 実施の形態2の変形例1
本発明の実施の形態2について、以下のような構成であっても良い。
(1)無効化リスト発行装置250
無効化リスト発行装置250は、OS無効化リスト及びアプリ無効化リストを記憶しているが、OS無効化リストは、無効化ID269、270、271・・・に代わって、無効化されたオペレーティングシステムのセキュアOS証明書(後述する)の証明書IDを含んで構成される。
アプリ無効化リストについても、無効化ID279、280、281・・・に代わって、無効化されたアプリケーションのアプリ証明書(後述する)の証明書IDを含んで構成される。
(2)携帯電話400
携帯電話400は、メモリ保護部414に代わってメモリ保護部454を備え、セキュアメモリ413に代わってセキュアメモリ453を備えている。メモリ保護部414が、セキュアメモリ413上の各プログラムに固有のIDによって、各プログラムが有効であるか無効であるかを判定する代わりに、メモリ保護部454は、セキュアメモリ453上の各プログラムに固有の証明書を用いて判定する。
以下に、この機能を実現する構成について説明する。
(2−1)セキュアメモリ453
セキュアメモリ453は、一例として、図54に示すように、音楽復号プログラム476、セキュアOS481を含んでいる。
セキュアOS481は、ヘッダ部分に、セキュアOS証明書482及び無効フラグ483を含んでいる。
セキュアOS証明書482は、X.509に従った公開鍵証明書であり、図55に示すように、発行者ID484、証明書ID487、セキュアOS公開鍵488、署名アルゴリズム489及びCA署名491を含んで構成される。
発行者ID484は、セキュアOS証明書482の発行元である認証局(以下、CA:Certificate Authorityと呼ぶ)の識別子である。セキュアOS公開鍵488は、セキュアOS証明書482によって正当性を証明されるセキュアOS481に固有の公開鍵である。署名アルゴリズム489は、CA署名491の生成に使用されたアルゴリズムを示す識別情報である。CA署名491は、セキュアOS証明書482の発行元であるCAの秘密鍵を用いて、上記の発行者ID484、証明書ID487・・・に、署名アルゴリズム489の示すアルゴリズムS1を施して生成された署名データである。
無効フラグ483は、セキュアOS481が有効であるか無効であるかを示している。
音楽復号プログラム476は、そのヘッダ部分にアプリ証明書477と無効フラグ478とを含んでいる。
アプリ証明書477は、図55のセキュアOS公開鍵488を、アプリ公開鍵に置き換えた構成である。
無効フラグ478は、音楽復号プログラム476が無効であるか有効であるかを示している。
(2−2)メモリ保護部454
メモリ保護部454は、図54に示すように、無効化リスト記憶部461、無効化リスト更新部424、鍵格納部464、アプリ検証部468、アプリ無効化部429、OS検証部471及びOS無効化部432から構成される。
無効化リスト更新部424、OS無効化部432及びアプリ無効化部429の動作は、上記の実施の形態2の無効化リスト更新部424、OS無効化部432及びアプリ無効化部429と同様であるので、ここでは説明を省略する。
<無効化リスト記憶部461>
無効化リスト記憶部461は、図54に示すようにOS無効化リスト463及びアプリ無効化リスト462を含んでいる。
OS無効化リスト463は、無効化リスト発行装置250の記憶しているOS無効化リストと同様の構成であり、無効化されたオペレーティングシステムの証明書IDを含んでいる。
アプリ無効化リスト462は、無効化リスト発行装置250の記憶しているアプリ無効化リストと同様の構成であり、無効化されたアプリケーションの証明書IDを含んでいる。
<鍵格納部464>
鍵格納部464は、CA公開鍵466を記憶している。CA公開鍵466は、セキュアOS証明書482及びアプリ証明書477の発行元であるCAの公開鍵であり、セキュアOS証明書482及びアプリ証明書477に含まれるCA署名の生成に用いられたCAの秘密鍵と対になる鍵である。
<OS検証部471>
OS検証部471は、無効化リスト更新部424によるOS無効化リスト及びアプリ無効化リストの更新の処理が終了すると、セキュアメモリ453から、セキュアOS481に含まれるセキュアOS証明書482を読み出す。鍵格納部464からCA公開鍵466を読み出し、読み出したCA公開鍵466を用いて、セキュアOS証明書482に含まれるCA署名491に署名検証アルゴリズムV1を施して署名検証を行う。署名検証アルゴリズムV1は、署名生成アルゴリズムS1により生成された署名データを検証するアルゴリズムである。
署名検証の結果が失敗であれば、以降の処理を中止し、OS無効化部432へ、セキュアOS481の無効化を指示する。
署名検証の結果が成功であれば、次に、セキュアOS証明書482に含まれる証明書ID487が、OS無効化リスト463に登録されているか否かによって、セキュアOS481が無効であるか否かを判定する。登録されていれば、セキュアOS481が無効なプログラムであると判定し、OS無効化部432へ、セキュアOS481の無効化を指示する。
登録されていなければ、OS検証部471は、セキュアOS481が、有効なプログラムであると判定する。
なお、本実施の形態において、セキュアOS証明書482の署名検証を行い、署名検証が成功の場合に、証明書ID487が、OS無効化リスト463に登録されているか否かを判定しているが、証明書ID487が、OS無効化リスト463に登録されているか否かを判定し、登録されていない場合に、署名検証を行うとしてもよい。
<アプリ検証部468>
アプリ検証部468は、OS検証部471によるセキュアOS481の検証が終了すると、セキュアメモリ453から、音楽復号プログラム476に含まれるアプリ証明書477を読み出す。鍵格納部464からCA公開鍵466を読み出し、読み出したCA公開鍵466を用いて、アプリ証明書477に含まれるCA署名に署名検証アルゴリズムV1を施して署名検証を行う。
署名検証の結果が失敗であれば、以降の処理を中止し、アプリ無効化部429へ、音楽復号プログラム476の無効化を指示する。
署名検証の結果が成功であれば、次に、アプリ証明書477に含まれる証明書IDが、アプリ無効化リスト462に登録されているか否かによって、音楽復号プログラム476が無効であるか否かを判定する。登録されていれば、音楽復号プログラム476が無効なプログラムであると判定し、アプリ無効化部429へ、音楽復号プログラム476の無効化を指示する。
登録されていなければ、音楽復号プログラム476は、有効なプログラムであると判定する。
なお、上記の署名検証と証明書IDが、アプリ無効化リスト462に登録されているか否かの判定の順序は逆でもよい。
2.5 実施の形態2の変形例2
上記の変形例1において、音楽復号プログラム476は、階層構造を構成する複数の証明書を含んでいるとしても良い。
図56は、音楽復号プログラム476の有する複数の証明書の構成及び、これらの証明書の階層構造を表している。
音楽復号プログラム476は、図56に示すように、アプリ証明書501、メーカー証明書511及びCA証明書521を含んでいる。
アプリ証明書501は、発行元502、証明書ID503、アプリ公開鍵504、署名アルゴリズム506及びメーカー署名508を含んで構成される。
発行元502は、アプリ証明書501の発行元であるアプリメーカーを示す識別情報である。図56には説明の便宜上「アプリメーカー」と記載している。証明書ID503は、アプリ証明書501に固有の識別情報である。アプリ公開鍵504は、音楽復号プログラム476に固有の公開鍵であり、アプリ証明書501によって、その正当性を証明される。署名アルゴリズム506は、メーカー署名508の生成に使用された署名生成アルゴリズムを示す識別情報である。メーカー署名508は、音楽復号プログラム476の製造メーカーに固有のアプリメーカー秘密鍵519を用いて、発行元502、証明書ID503、アプリ公開鍵504、署名アルゴリズム506などのアプリ証明書501に含まれる情報に、署名生成アルゴリズムS2を施して生成された署名データである。
メーカー証明書511は、発行元512、証明書ID513、メーカー公開鍵514、署名アルゴリズム516及びCA署名518を含んで構成される。
発行元512は、メーカー証明書511の発行元であるCAを示す識別情報である。図56には説明の便宜上「CA」と記載している。証明書ID513は、メーカー証明書511に固有の識別情報である。メーカー公開鍵514は、音楽復号プログラム476の製造メーカーの公開鍵であり、メーカー証明書511によって、その正当性を証明される。メーカー公開鍵514は、アプリメーカー秘密鍵519と対応する鍵である。署名アルゴリズム516は、CA署名518の生成に使用された署名生成アルゴリズムを示す識別情報である。CA署名518は、CA秘密鍵529を用いて、発行元512、証明書ID513、メーカー公開鍵514、署名アルゴリズム516などのメーカー証明書511に含まれる情報に、署名生成アルゴリズムS3を施して生成された署名データである。
CA証明書521は、発行元522、証明書ID523、CA公開鍵524、署名アルゴリズム526及びルートCA署名528を含んで構成される。
発行元522は、CA証明書521の発行元であるルートCAを示す識別情報である。図56には説明の便宜上「ルートCA」と記載している。証明書ID523は、CA証明書521に固有の識別情報である。CA公開鍵524は、CAの公開鍵であり、CA証明書521によって、その正当性を証明される。CA公開鍵524は、CA秘密鍵529と対応する鍵である。署名アルゴリズム526は、ルートCA署名528の生成に使用された署名生成アルゴリズムを示す識別情報である。ルートCA署名528は、ルートCA秘密鍵531を用いて、発行元522、証明書ID523、CA公開鍵524、署名アルゴリズム526などのCA証明書521に含まれる情報に、ルートCA秘密鍵531を用いて、署名生成アルゴリズムS4を施して生成された署名データである。ルートCA秘密鍵531は、ルートCAに固有の秘密鍵である。
ここで、一例として、CAには携帯電話400の販売メーカー、ルートCAには、公的な証明書発行機関が該当する。また、メーカー証明書511に代わって、音楽復号プログラム476を制御するセキュアOS481のOS証明書482、携帯電話400に割り当てられる証明書、セキュアOS481の製造メーカーの証明書を用いるとしても良い。
この変形例において、鍵格納部464は、CA公開鍵466に代わって、ルートCA公開鍵を記憶している。ルートCA公開鍵は、ルートCA秘密鍵531と対応する鍵である。また、無効化リスト記憶部461は、アプリ無効化リスト462に加えて、メーカー無効化リスト及び、CA無効化リストを記憶している。メーカー無効化リストは、無効化されたメーカー証明書の証明書IDを含むリストであり、CA無効化リストは、無効化されたCA証明書の証明書IDを含むリストである。
アプリ検証部468は、先ず、CA証明書521とルートCA公開鍵を読み出し、読み出したルートCA公開鍵を用いてCA証明書521に含まれるルートCA署名528に署名検証アルゴリズムV4を施して署名検証を行う。署名検証アルゴリズムV4は、署名生成アルゴリズムS4により生成された署名データを検証するアルゴリズムである。
署名検証が失敗であれば、アプリ検証部468は、以下の処理を中止して、アプリ無効化部429へ、音楽復号プログラム476の無効化を指示する。
署名検証が成功であれば、次に、CA証明書521に含まれる証明書ID523がCA無効化リストに登録されているか否かを判断し、登録されていれば、アプリ検証部468は、以下の処理を中止して、アプリ無効化部429へ、音楽復号プログラム476の無効化を指示する。
登録されていなければ、次に、メーカー証明書511を読み出し、CA証明書521に含まれるCA公開鍵524を用いて、読み出したメーカー証明書511に含まれるCA署名518に署名検証アルゴリズムV3を施して署名検証を行う。署名検証アルゴリズムV3は、署名生成アルゴリズムS3により生成された署名データを検証するアルゴリズムである。
署名検証が失敗であれば、アプリ検証部468は、以下の処理を中止して、アプリ無効化部429へ、音楽復号プログラム476の無効化を指示する。
署名検証が成功であれば、次に、メーカー証明書511に含まれる証明書ID513がメーカー無効化リストに登録されているか否かを判断し、登録されていれば、アプリ検証部468は、以下の処理を中止して、アプリ無効化部429へ、音楽復号プログラム476の無効化を指示する。
登録されていなければ、次に、アプリ証明書501を読み出す。メーカー証明書511に含まれるメーカー公開鍵514を用いて、読み出したアプリ証明書501に含まれるメーカー署名508に署名検証アルゴリズムV2を施して署名検証を行う。署名検証アルゴリズムV2は、署名生成アルゴリズムS2により生成された署名データを検証するアルゴリズムである。
署名検証が失敗であれば、アプリ検証部468は、以下の処理を中止して、アプリ無効化部429へ、音楽復号プログラム476の無効化を指示する。
署名検証が成功であれば、次に、アプリ証明書501に含まれる証明書ID503がアプリ無効化リストに462に登録されているか否かを判断し、登録されていれば、アプリ検証部468は、アプリ無効化部429へ、音楽復号プログラム476の無効化を指示する。
登録されていなければ、音楽復号プログラム476が有効なプログラムであると判定する。
このように、2重、3重の検証をすることで、より高いセキュリティを確保することができる。また、メーカー証明書を導入したことにより、同一のメーカーにより開発されたプログラム全てを無効化することができる。
セキュアOS481についても、同様に複数の証明書による検証を行っても良い。
2.6その他の変形例
(1)上記の実施の形態2において、OS無効化リストは、リストIDとして、OS無効化リストの生成された日付を含んでいるが、図57に示すOS無効化リスト541のようにバージョン番号をリストID543として含んでいても良い。バージョン情報とは、OS無効化リストの世代を示す番号であり、値が大きいほど新しいことを示す。
また、OS無効化リスト551に示すように、無効化IDの総数をリストID553として含んでいるとしても良い。無効化されるプログラムの総数は、減少することはありえないため、無効化IDの総数をリストIDとすることで、リストIDの値の大きいものほど新しいOS無効化リストであると、判断することができる。
(2)上記の説明において、無効化リスト発行装置250は、OS無効化リスト及びアプリ無効化リストを生成しているが、アプリ無効化リストとOS無効化リストの発行元は別々でも良い。
例えば、OS無効化リストは、オペレーティングシステム開発メーカーの管理する無効化リスト発行装置により、生成され発行される。アプリ無効化リストは、アプリケーションの開発メーカーの管理する無効化リスト発行装置により生成され発行される。
(3)上記の実施の形態及び変形例において、OS検証がセキュアアプリケーションを検証し、アプリ検証部がセキュアOSを検証するとしてもよい。
セキュアアプリケーションとセキュアOSの開発メーカーは異なる場合、このように相互に検証しあうことで、より安全性を高めることができる。
(4)また、無効化リスト発行装置250が送信するアプリ無効化リスト及びOS無効化リストは、必ず最新のものであり、無効化リスト記憶部421が記憶しているアプリ無効化リスト422及びOS無効化リスト423がこれらよりも新しいことはありえない。従って、無効化リスト更新部424は、アプリ無効化リスト及びOS無効化リストの更新を行う際に、上述したようなリストIDの比較を省略し、署名検証に成功すれば、無条件に、無効化リスト発行装置250から受信したアプリ無効化リスト及びOS無効化リストにより、アプリ無効化リスト422及びOS無効化リスト423を更新するとしてもよい。
(5)上記の実施の形態において、切替制御部106から接続指示が出力されると、セキュアメモリ413に記憶されている各プログラムの検証を行っているが、検証のタイミングは、これに限るものではなく、携帯電話400の電源投入時、各プログラムの起動時などでもよい。
3.実施の形態3
以下に、本発明に係る実施の形態3について説明する。
本実施の形態の携帯電話は、実施の形態2と同様に、携帯電話網及びインターネットを介して、無効化リスト発行装置と接続されている。
3.1無効化リスト発行装置
本実施の形態の無効化リスト発行装置は、実施の形態2における無効化リスト発行装置250と同様に、通信部、署名生成部、鍵記憶部、ハッシュ生成部、制御部、情報記憶部610、入力部及び表示部から構成される。
通信部、署名生成部、鍵記憶部、ハッシュ生成部、入力部及び表示部の構成及び動作は、無効化リスト発行装置250に含まれる通信部251、署名生成部252、鍵記憶部253、ハッシュ生成部254、入力部262及び表示部263とほぼ同様であり、ハッシュ生成部は、OS無効化リスト及びアプリ無効化リストに代わって、OSマトリクス無効化リスト(後述する)からOSダイジェストデータを生成し、アプリマトリクス無効化リスト(後述する)からアプリダイジェストデータを生成する。これらの各部については、説明を省略し、本実施の形態の特徴である。情報記憶部610及び制御部についてのみ説明する。
(1)情報記憶部610
情報記憶部610は、図58に示すように、アプリ発行鍵マトリクス601、OS発行鍵マトリクス602、アプリ無効化情報604、606・・・、アプリマトリクス無効化リスト611及びOSマトリクス無効化リスト621を記憶している。
<アプリ発行鍵マトリクス601及びOS発行鍵マトリクス602>
アプリ発行鍵マトリクス601は、図58に示すように4行×4列の行列の各行列要素として、16個の発行鍵Key_11、Key_12、Key_13・・・を配置したものである。各発行鍵は、一例として擬似乱数を用いて生成される、64ビット長の鍵データである。
アプリ発行鍵マトリクス601は、縦方向に上から順に行番号「1」、「2」、「3」、「4」を配置し、横方向に左から順に、列番号「1」、「2」、「3」、「4」を配置している。
行番号「1」、列番号「1」と対応する行列要素661は、発行鍵Key_11であり、行番号「1」、列番号「2」と対応する行列要素662は、発行鍵Key_12である。行番号「1」、列番号「3」と対応する行列要素663は、発行鍵Key_13であり、行番号「1」、列番号「4」と対応する行列要素664は、発行鍵Key_14である。
同様に、行番号「2」、列番号「1」〜「4」の行列要素665〜668は、それぞれ、発行鍵Key_21、Key_22、Key_23、Key_24である。行番号「3」、列番号「1」〜「4」の行列要素669〜672は、発行鍵Key_31、Key_32、Key_33、Key_34である。行番号「4」、列番号「1」〜「4」の行列要素673〜676は、Key_41、Key_42、Key_43、Key_44である。
本実施の形態において、各セキュアアプリケーションには、アプリ発行鍵マトリクス601の各列から1個ずつ、計4個の発行鍵が割り当てられている。4個の発行鍵の組み合わせは、セキュアアプリケーションごとに異なる。
一例として、携帯電話において実行される音楽復号プログラム(後述する)には、アプリ発行鍵マトリクス601において、実線円677、678、679、680で囲まれている、発行鍵Key_11、Key_32、Key_23、Key_14が割り当てられている。また、音楽復号プログラムとは別のセキュアアプリケーション(アプリBと呼ぶ)には、点線円681、682、683、684で囲まれている、発行鍵Key_21、Key_32、Key_33、Key_44が割り当てられている。
OS発行鍵マトリクス602は、アプリ発行鍵マトリクス601と同様の構成であり、16個の発行鍵を4行×4列の行列の、行列要素として格納したものである。
<アプリ無効化情報604、606・・・>
アプリ無効化情報604、606・・・についての説明を容易にするために、アプリ固有鍵マトリクス及びOS固有鍵マトリクスについて先ず説明する。
図59は、本実施の形態の携帯電話に記憶されている暗号化音楽復号プログラム591(後述する)に含まれるアプリ固有鍵マトリクス592及び暗号化セキュアOS596(後述する)に含まれるOS固有鍵マトリクス597である。
アプリ固有鍵マトリクス592は、暗号化音楽復号プログラム591を復号して生成される音楽復号プログラムと1対1に対応しており、音楽復号プログラムに割り当てられた4個の発行鍵を含んでいる。アプリ固有鍵マトリクス592は、4つの鍵情報901、902、903、904から構成される。各鍵情報は、列番号と行番号と発行鍵を含んでおり、鍵情報901は、アプリ発行鍵マトリクス601の1列目の行列要素から音楽復号プログラムに割り当てられた発行鍵Key_11と、アプリ発行鍵マトリクス601上でKey_11と対応する行番号「1」と列番号「1」とを含んでいる。鍵情報902は、アプリ発行鍵マトリクス601の2列目の行列要素から音楽復号プログラムに割り当てられた発行鍵Key_32と、アプリ発行鍵マトリクス601上でKey_32と対応する行番号「3」と列番号「2」とを含んでいる。鍵情報903は、アプリ発行鍵マトリクス601の3列目の行列要素から音楽復号プログラムに割り当てられた発行鍵Key_23と、アプリ発行鍵マトリクス601上でKey_23と対応する行番号「2」と列番号「3」とを含んでいる。鍵情報904は、アプリ発行鍵マトリクス601の4列目の行列要素から音楽復号プログラムに割り当てられた発行鍵Key_14と、アプリ発行鍵マトリクス601上でKey_14と対応する行番号「1」と列番号「4」とを含んでいる。
OS固有鍵マトリクス597は、アプリ固有鍵マトリクスと同様の構成であり、鍵情報906、907、908、909から構成され、各鍵情報は、列番号、行番号発行鍵を含む。
本実施の形態に記憶されている暗号化セキュアOS596を復号して生成されるセキュアOSには、OS発行鍵マトリクス602の各列から1個ずつ、計4個の発行鍵が割り当てられている。この4個の発行鍵の組み合わせは、オペレーティングシステムごとに異なる。
鍵情報906〜909は、それぞれ、OS固有鍵マトリクス602の各列から、セキュアOSに割り当てられた固有鍵と固有鍵に対応するOS固有鍵マトリクス602上の列番号と行番号とを含んでいる。
アプリ無効化情報604、606・・・は、無効化されたアプリケーションのアプリ固有鍵マトリクスの各鍵情報から列番号及び行番号を抽出したものである。
一例として、アプリ無効化情報604は、上述のアプリBと対応する。アプリ無効化情報604は、図58に示すように、4個の列番号「1」_931、「2」_932、「3」_933、「4」_934と、それぞれの列番号と対応する行番号935〜938から構成される。列番号「1」_931と行番号「2」_935は、アプリ発行鍵マトリクス601の1列目から、アプリBに割り当てられた発行鍵Key_21と対応している。列番号「2」_932と行番号「3」_936、プリ発行鍵マトリクス601の2列目から、アプリBに割り当てられた発行鍵Key_32と対応している。同様に、列番号「3」_933と行番号「3」_937は、発行鍵Key_33と対応しており、列番号「4」と行番号「4」は、発行鍵Key_44と対応している。
また、具体的には図示していないが、情報記憶部610は、無効化されたオペレーティングシステムのOS固有鍵マトリクスの各鍵情報から列番号及び行番号を抽出したOS無効化情報を記憶している。
<アプリマトリクス無効化リスト611及びOSマトリクス無効化リスト621>
アプリマトリクス無効化リスト611は、図60に示すように、16個の行列要素911〜926を、4行×4列の行列状に配置して構成される。説明の便宜上、i行j列目の行列要素に格納される行列要素を変数Mijを用いて表現する。
変数Mijは、アプリ発行鍵マトリクス601上のi行j列目の発行鍵を用いて、暗号化音楽復号プログラム591を初めとする暗号化アプリケーションを復号するための復号鍵に暗号化アルゴリズムE2を施して生成されたものである。図中のEnc(Key_ij,復号鍵)は、復号鍵を、発行鍵Key_ijを用いて暗号化して生成されたものであることを示している。例えば、行番号「1」、列番号「1」の行列要素911である変数M11は、アプリ発行鍵マトリクス601上の、行番号「1」、列番号「1」の行列要素661の発行鍵Key_11を用いて、復号鍵を暗号化したものである。
ここで、アプリマトリクス無効化リスト611は、情報記憶部610に記憶されているアプリ無効化情報が、アプリ無効化情報604のみである場合に生成されたものである。このとき、アプリ無効化情報604に含まれる行番号及び列番号と対応する行列要素M21、M32、M33及びM44は、復号鍵に変わってダミーデータ「0000」を、発行鍵を用いて暗号化したものである。
OSマトリクス無効化リスト621は、アプリマトリクス無効化リスト611と同様の構成であり、16個の行列要素を4行×4列の行列状に配置したものである。i行j列目の行列要素は、暗号化セキュアOS596を含む各種の暗号化オペレーティングシステムを復号するための復号鍵を、OS発行鍵マトリクス602のi行j列目に配置された発行鍵を用いて暗号化したものである。ただし、OS無効化情報に含まれる行番号及び列番号と対応する行列要素は、前記復号鍵に代わって、ダミーデータを暗号化したものである。
また、具体的には図示していないが、アプリマトリクス無効化リスト611及びOSマトリクス無効化リストには、その新旧を示すリストIDが含まれている。
(2)制御部
制御部は、インターネットを介して、携帯電話から、リスト要求を受信する。リスト要求を受信すると、情報記憶部610から、OSマトリクス無効化リスト621及びアプリマトリクス無効化リスト611を読み出し、ハッシュ制御部、署名生成部によって生成された署名を付加した署名付OSマトリクス無効化リストと署名付アプリマトリクス無効化リストとを携帯電話へ送信する。これは、実施の形態2の制御部257による、署名付OS無効化リスト及び署名付アプリ無効化リストの生成及び送信と同様であるので、詳細な説明は省略する。
また、制御部は、入力部を介して、操作者により新たなアプリ無効化情報の入力及びアプリマトリクス無効化リストの生成の指示を受け付ける。受け付けた指示に従って、新たにアプリマトリクス無効化リストを生成する。
また、新たなOS無効化情報の入力及びOSマトリクス無効化リストの生成の指示を受け付ける。受け付けた指示に従って、新たにOSマトリクス無効化リストを生成する。
以下に図61に示すフローチャートを用いて、アプリマトリクス無効化リストの生成の動作について説明する。なお、本実施の形態では、アプリ発行鍵マトリクス601及びアプリマトリクス無効化リストは、16個の要素を4×4の行列状に配置して構成されるが、これに限るものではない。フローチャートにおいては、より一般的にp行n列の場合について説明している。(p、nは1以上の整数)
先ず、p×n個の各行列要素M11、M12・・・Mpnに復号鍵を代入する(ステップS721)。列番号を格納する変数j及び行番号を格納する変数iを0で初期化する(ステップS722)。
次に、アプリ無効化情報を読み出し(ステップS723)、変数jに1加算する(ステップS724)。読み出したアプリ無効化情報の列番号jと対応する行番号を抽出し、抽出した行番号を変数iに代入する(ステップS726)。
次に、行列要素Mijにダミーデータ「0000」を代入する(ステップS727)。次に、変数j=nであるか否かを判断する(ステップS729)。j=nでないと判断すると(ステップS729のNO)、ステップS724に戻って、j=nになるまでステップS724〜729を繰り返す。
変数j=nであると判断した場合(ステップS729のYES)、情報記憶部610に記憶されているアプリ無効化情報全てを読み出し終わっているか否かを判断し(ステップS731)、読み出し終えていなければ(ステップS731のNO)、ステップS722に戻り、次のアプリ無効化情報についても、ステップS722〜731の処理を繰り返す。
全てのアプリ無効化情報を読み出し終えていると判断すると(ステップS731のYES)、変数iに0を代入し(ステップS734)、変数jに0を代入する(ステップS736)。次に、変数iに1加算し(ステップS737)、変数jに1加算する(ステップS739)。
アプリ発行鍵マトリクス601のi行j列目の発行鍵Key_ijを読み出す(ステップS741)。読み出した発行鍵Key_ijを用いて、行列要素Mijに暗号化アルゴリズムE2を施して、Enc(Key_ij,Mij)を生成し、生成したEnc(Key_ij,Mij)をMijに代入する(ステップS742)。
変数j=nであれば(ステップS743のYES)、ステップS744に処理を移し、変数j=nでなければ(ステップS743のNO)、ステップS739へ戻り、変数j=nになるまで、ステップS739〜743の処理を繰り返す。
次に、変数i=pであれば(ステップS744のYES)、アプリマトリクス無効化リストの生成を終了する。
変数i=pでなければ(ステップS744のNO)、ステップS736に戻り、i=pになるまで、ステップS736〜744の処理を繰り返す。
なお、OSマトリクス無効化リストについても、OS発行鍵マトリクスとOS無効化情報を用いて、同様の手順で生成する。
3.2携帯電話
本実施の形態の携帯電話は、実施の形態2の携帯電話400と類似した構成である。従って、ここでは、実施の形態2と同様の部分の説明は省略し、本実施の形態の特徴部分についてのみ説明する。
(1)セキュアメモリ613
セキュアメモリ613には、一例として、図62に示すように暗号化音楽復号プログラム591及び暗号化セキュアOS596を記憶している。
暗号化音楽復号プログラム591は、実施の形態2の音楽復号プログラム446と同様の音楽復号の手順を含む音楽復号プログラムに、暗号化アルゴリズムE3を施して、生成されたものである。また、暗号化音楽復号プログラム591は、ヘッダ部分に、音楽復号プログラムに固有のアプリ固有鍵マトリクス592と無効フラグ593を含んでいる。アプリ固有鍵マトリクス592については、上記において、述べたとおりである。無効フラグ593は、前記音楽復号プログラムが無効であるか否かを示すフラグであり「0」であれば、有効であることを、「1」であれば無効であることを示している。
暗号化セキュアOS596は、実施の形態2のセキュアOS441と同様のオペレーティング機能を有するセキュアOSに、暗号化アルゴリズムE3を施して生成されたものである。暗号化セキュアOS596は、前記セキュアOSに固有のOS固有鍵マトリクス597及び無効フラグ598をヘッダ部分に含んでいる。OS固有鍵マトリクス597については、上記において、述べたとおりである。
無効フラグ598は、セキュアOSが無効であるか否かを示すフラグであり「0」であれば、有効であることを、「1」であれば無効であることを示している。
(2)メモリ保護部571
メモリ保護部571は、図62に示すように無効化リスト記憶部572、無効化リスト更新部575、アプリ検証部578、アプリ無効化部579、OS検証部581、OS無効化部582及び暗号・復号部586から構成される。
無効化リスト記憶部572は、アプリマトリクス無効化リスト573及びOSマトリクス無効化リスト574を記憶している。アプリマトリクス無効化リスト573及びOSマトリクス無効化リスト574は、無効化リスト発行装置の情報記憶部610に記憶されているアプリマトリクス無効化リスト611及びOSマトリクス無効化リストと同様の構成である。
無効化リスト更新部575の動作は、実施の形態2の無効化リスト更新部424と同様であり、アプリ無効化リスト及びOS無効化リストに代わって、アプリマトリクス無効化リスト及びOSマトリクス無効化リストを更新する。
アプリ無効化部579及びOS無効化部582の動作は、実施の形態2のアプリ無効化部429及びOS無効化部432と同様であるので、ここでは、改めて説明しない。
<アプリ検証部578及びOS検証部581>
アプリ検証部578は、暗号化音楽復号プログラム591に含まれるアプリ固有鍵マトリクス592及び、無効化リスト記憶部572に記憶されているアプリマトリクス無効化リスト573を用いて、暗号化音楽復号プログラム591の復号鍵を生成する。正しく復号鍵を生成することができた場合、音楽復号プログラムが有効であると判定し、生成できなかった場合、音楽復号プログラムが無効であると判断する。上記の、音楽復号プログラムの検証の詳細な手順については、後に説明する。
有効であると判断すると、暗号・復号部586へ生成した復号鍵を出力し、暗号化音楽復号プログラム176の復号を指示する。
無効であると判断すると、アプリ無効化部579へ無効化を指示する。
OS検証部581は、アプリ検証部578と同様にして、暗号化セキュアOS596を復号して生成されるセキュアOSが有効であるか無効であるかを判定する。ここでは、アプリ固有鍵マトリクス592、アプリマトリクス無効化リスト573に代わって、OS固有鍵マトリクス597、OSマトリクス無効化リスト574を用いる。
<暗号・復号部586>
暗号・復号部586は、OS検証部581から暗号化セキュアOS596の復号鍵を受け取り、復号を指示される。復号を指示されると、受け取った復号鍵を用いて、セキュアメモリ613上の暗号化セキュアOS596に、復号アルゴリズムD3を施してセキュアOSを生成する。
また、アプリ検証部578から暗号化音楽復号プログラム591の復号鍵を受け取り、復号を指示される。受け取った復号鍵を用いて、暗号化音楽復号プログラム591に復号アルゴリズムD3を施して音楽復号プログラムを生成する。
ここで、D3は、暗号化アルゴリズムE3によって生成された暗号文を復号するアルゴリズムであり、一例として、DES、AES(Advanced Encryption Standard)などを用いる。
また、切替制御部576から出力される、セキュアメモリ613とバス130との切断を指示する切断指示を検出する。切断指示を検出すると、受け取った復号鍵によって、音楽復号プログラム及びセキュアOSを暗号化して暗号化音楽復号プログラム591及び暗号化セキュアOS596を生成する。
(3)メモリ保護部571による検証動作
メモリ保護部571による、セキュアメモリ613上のプログラムの検証動作について、図63のフローチャートを用いて説明する。
メモリ保護部571は、接続指示を受け取る(ステップS701)。接続指示を受け取ると、無効化リスト更新部575は、インターネットを介して無効化リスト発行装置から、最新のアプリマトリクス無効化リストとOSマトリクス無効化リストとを取得し、無効化リスト記憶部572に記憶されているアプリマトリクス無効化リスト573及びOSマトリクス無効化リスト574を更新する(ステップS702)。無効化リスト更新部575によるステップS702の処理は、実施の形態2の無効化リスト更新部424によるステップS672〜679(図49)の処理と同様であり、OS無効化リストをOSマトリクス無効化リストに置き換え、アプリ無効化リストをアプリマトリクス無効化リストに置き換えればよい。
次に、OS検証部581は、セキュアOSの検証を行い(ステップS703)、セキュアOSが有効であると判定すると(ステップS706のYES)、暗号・復号部586へ暗号化セキュアOS596の復号を指示し、暗号・復号部586は、暗号化セキュアOS596を復号して、セキュアOSを生成する(ステップS707)。
セキュアOSが無効であると判定すると(ステップS706のNO)、OS無効化部582へ指示して、無効フラグ598を「1」に設定する(ステップS709)。
次に、アプリ検証部578は、音楽復号プログラムが有効であるか否かを検証する(ステップS711)。有効であると判定されると(ステップS712のYES)、暗号・復号部586は、暗号化音楽復号プログラム591を復号して音楽復号プログラムを生成する(ステップS713)。
無効であると判断されると(ステップS712のNO)、アプリ無効化部579は、無効フラグ593を「1」に設定する(ステップS716)。
(4)音楽復号プログラムの検証
以下に、図64のフローチャートを用いて、アプリ検証部578による音楽復号プログラムの検証処理について説明する。これは、図63のステップS711の詳細である。本実施の形態では、アプリマトリクス無効化リスト573は、4行×4列の行列を構成しており、アプリ固有鍵マトリクス592は、4個の鍵情報を含んで構成されているが、ここでは、より一般的に、アプリマトリクス無効化リスト573がn行p列のマトリクスを構成しており、アプリ固有鍵マトリクス592がp個の鍵情報から構成される場合について説明する。
アプリ検証部578は、アプリ固有鍵マトリクス573を読み出す(ステップS731)。説明の便宜上、行番号を示す変数iと列番号を示す変数jとを導入して説明する。
アプリ検証部578は、変数jに1を代入する(ステップS732)。アプリ固有鍵マトリクス592の、列番号jと対応する行番号を、変数iに代入する(ステップS733)。
次に、アプリマトリクス無効化リスト573から、行列要素Mijを読み出す(ステップS736)。アプリ固有鍵マトリクス592から発行鍵Key_ijを抽出し、抽出した発行鍵Key_ijを用いて、読み出した行列要素Mijに復号アルゴリズムD2を施して、復号する(ステップS737)。復号結果が「0000」でなければ(ステップS739のNO)、音楽復号プログラムが有効であると判定し(ステップS741)、復号結果つまり暗号化音楽復号プログラム591の復号鍵を、暗号・復号部586へ出力する(ステップS742)。
処理結果が「0000」であれば(ステップS739のYES)、次に、変数j=pであるか否かを判断し、j=pでなければ(ステップS744のNO)、変数jに1加算し(ステップS747)、ステップS733へ戻る。
変数j=pであれば(ステップS744のYES)、音楽復号プログラムが無効であると判定する(ステップS746)。
なお、ステップS703のOS検証部581によるセキュアOSの検証は、図61のフローチャートのアプリ固有鍵マトリクスをOS固有鍵マトリクスに置き換え、アプリマトリクス無効化リストをOSマトリクス無効化リストに置き換えたものであるので、説明を省略する。
3.3まとめ・効果
以上、説明してきたように、実施の形態3において、携帯電話のセキュアメモリ613上の暗号化音楽復号プログラム591及び暗号化セキュアOS596は、それぞれに固有のアプリ固有鍵マトリクス592、OS固有鍵マトリクス597を含んでいる。
メモリ保護部571は、アプリマトリクス無効化リスト573及びアプリ固有鍵マトリクス592により音楽復号プログラムが有効であるか否かを判定する。有効である場合にのみ、アプリマトリクス無効化リスト573から、復号鍵を生成することが可能である。
セキュアOSについても、同様に、OSマトリクス無効化リスト574及びOS固有鍵マトリクスを用いて、有効か否かを判定する。
アプリケーションの製造メーカーにおいて、複数のアプリケーションを同一の暗号鍵を用いて同一の方法で暗号化して出荷している場合について考える。
図58のアプリ発行鍵マトリクス601を構成する16個の鍵のうち、各アプリケーションには、各列から1個ずつ、合計4個の発行鍵が割り当てられる。このとき、異なるアプリケーションに割り当てられる発行鍵が4個とも一致することがないように割り当てられる。一例として、本実施の形態の音楽復号プログラムには、発行鍵Key_11、Key_32、Key_23、Key_14が割り当てられており、これらの発行鍵は、暗号化音楽復号プログラム591のアプリ固有鍵マトリクス592に含まれる。
音楽復号プログラムと同一の製造メーカーから出荷されるアプリケーション(アプリBと呼ぶ)には、発行鍵Key_21、Key_32、Key_33、Key_44が割り当てられており、暗号化アプリBのアプリ発行鍵マトリクスには、これらの4個の発行鍵が含まれる。
ここで、出荷後にアプリBが無効化すべきプログラムであることが判明すると、無効化リスト発行装置には、アプリ無効化情報604が追加される。アプリ無効化情報604は、アプリBに割り当てられた4個の発行鍵と対応する列番号と行番号から構成されている。アプリ無効化情報604に基づいて生成されたアプリマトリクス無効化リスト611は、図60に示すように、行列要素M21、M32、M33及びM44にダミーデータを含んでいるため、暗号化アプリBに割り当てられた4個の発行鍵では、復号鍵を生成することができない。
図58に示すように、音楽復号プログラムにもKey_32が割り当てられているが、図64のフローチャートを用いて説明した検証動作によると、その他の発行鍵によって、復号鍵を生成することができる。
このように、各アプリケーションに複数の発行鍵を割り当てておき、アプリ無効化リストと発行鍵とを用いて、復号鍵を生成する構成であれば、同一の方法で暗号化されていても、無効化すべきアプリケーションだけを無効化することができる。
さらに、暗号・復号部586は、セキュアメモリ613とバスとを切断する際にセキュアOS及び音楽復号プログラムを初めとするアプリケーションを再度暗号化する。従って、通常メモリ上のプログラムがCPUを使用している間、セキュアメモリ613上のプログラムをより確実に保護することができる。また、このような構成の場合メモリ保護部は、物理的にバスとセキュアメモリ613とを切断しなくてもよい。
3.4変形例
(1)実施の形態3において、メモリ保護部571は、切替制御部106から、接続指示を受ける度に、通信制御部を介して、最新のOSマトリクス無効化リスト及びアプリマトリクス無効化リストを取得して、これらを更新し、セキュアメモリ613上の各プログラムを検証している。しかし、OSマトリクス無効化リスト及びアプリマトリクス無効化リストの更新、セキュアメモリ613上の各プログラムの検証を行うタイミングは、これに限るものではない。
一例として、携帯電話の起動時でもよいし、1日に1回というように、定期的に行っても良い。また、起動時には、OSマトリクス無効化リスト及びアプリマトリクス無効化リストの更新を行い、起動時以降に接続指示を受け取った際に、プログラムの検証を行うとしても良い。
また、各プログラムを起動する際、例えば、通常OSからセキュアOSへの切替処理の際には、セキュアOSの検証を行い、セキュアOSが音楽復号プログラムを起動する際に音楽復号プログラムの検証を行うとしてもよい。
また、メモリ保護部571から無効化リスト発行装置へリスト要求を送信し、最新のOSマトリクス無効化リスト及びアプリマトリクス無効化リストを取得しているが、新たに無効化すべきプログラムが判明し、OSマトリクス無効化リスト及びアプリマトリクス無効化リストを作成しなおした際に、無効化リスト発行装置から携帯電話へ送信されるとしてもよい。
(2)携帯電話は、インターネットを介して、最新のOSマトリクス無効化リスト及びアプリマトリクス無効化リストを取得しているが、メモリカードなどの記録媒体から取得しても良い。
(3)これまで、本発明の1つの実施の形態として携帯電話について説明してきたが、以下に説明するようなLANを構成する通信機器であるとしてもよい。
LANを構成する機器のうちいずれかひとつが、最新の無効化リストを取得し、他の機器に配布するとしても良い。
一例として、図65に示すような、ホームネットワークを形成する機器である。ホームネットワークは、PC(Personal Computer)650、ノートPC651、DVDプレーヤー652、ホームサーバ653、電子レンジ654をバスによって接続して構成される。
各機器は、通常のオペレーティングシステムやアプリケーションからは、直接アクセスすることができないセキュアメモリを備えており、セキュアメモリ上にロードして実行する各種のアプリケーションやオペレーティングシステムの有効性を検証する機能を有する。
ホームサーバ653は、インターネット20と接続されており、定期的に無効化リスト発行装置250へ、アプリ無効化リスト及びOS無効化リストを要求する。インターネットを介して、無効化リスト発行装置250から最新のアプリ無効化リスト及びOS無効化リストを取得する。取得した無効化リストを、バスを介して、ホームネットワークを構成する各機器へ出力する。
4.実施の形態4
本発明の実施の形態4について、以下に説明する。
4.1携帯電話の構成
本実施の形態の携帯電話は、実施の形態1の携帯電話100と同様に、デバッガIF、CPU102、MMU、二次記憶部、切替制御部、割込コントローラ、入力部、表示部、通常メモリ、共有メモリ、セキュアメモリ713、メモリ保護部701、入出力部、暗号処理デバイス、無線通信制御部、マイク、スピーカ、通信部、アンテナ、バッファ、符号処理部、D/A変換部から構成され、各回路はバスに接続されている。
本実施の形態の携帯電話において、メモリ保護部701及びセキュアメモリ713以外の各部の構成及び動作は、実施の形態1と同様であるので、説明を省略し、ここでは、本実施の形態の特徴部分についてのみ説明する。
(1)セキュアメモリ713
セキュアメモリ713は、図66に示すように、音楽復号プログラム704、通信鍵生成プログラム706などのセキュアアプリケーション及びセキュアOS707を記憶している。
音楽復号プログラム704は、実施の形態1の音楽復号プログラム176と同様の音楽復号の処理手順を含むセキュアアプリケーションである。
通信鍵生成プログラム706は、携帯電話がインターネットを介してコンテンツの送受信を行う際の暗号鍵を生成するセキュアアプリケーションである。
セキュアOS707は、実施の形態1のセキュアOS171と同様のオペレーティングシステムである。
ここで、セキュアメモリ713上の各プログラムは、セキュアメモリ上に起動されると、自身のアクセス情報をアクセス管理部702へ出力する。アクセス情報とは、各プログラムがアクセス可能なメモリ領域のアドレスである。
(2)メモリ保護部701
メモリ保護部701は、図66に示すようにアクセス管理部702と信号監視部703とを含んで構成される。
アクセス管理部702は、セキュアメモリ713上の各プログラムからアクセス情報を受け取り、受け取ったアクセス情報を該当するプログラムと対応付けて記憶している。また、各プログラムごとに不正アクセスの回数を計数するカウンタを備えている。
信号監視部703は、予め、各プログラムの不正アクセスの許される回数(許容回数)を記憶している。信号監視部703は、セキュアメモリ713とCPUとの間のバス上の信号を監視し、CPUのアクセス対象となっているセキュアメモリ713上のアドレスを検出する。
次に、アクセス管理部702から、現在実行中のプログラムのアクセス情報を読み出し、読み出したアクセス情報と検出したアドレスとを比較する。検出したアドレスが、読み出したアクセス情報の示す記憶領域に含まれていれば、そのまま、監視を続ける。
含まれていなければ、アクセス管理部702が該当するプログラムと対応付けて記憶しているカウンタに1加算する。次に、カウンタと記憶している許容回数とを比較する。カウンタが許容回数以下であれば、そのまま監視を続ける。
カウンタが許容回数を超えていれば、該当するプログラムが不正であると判定する。
ここで、不正であると判定されたプログラムが音楽復号プログラム704であった場合、信号監視部703は、強制的に、音楽復号プログラム704の実行を中止し、セキュアOS707にCPU102の実行権を移す。
不正であると判定されたプログラムがその他のセキュアアプリケーションである場合も同様である。
不正であると判定されたプログラムがセキュアOS707である場合、信号監視部703は、強制的に、セキュアOS707の実行を中止し、CPU102及びMMUをクリアし、切替制御部へ切替指示を出力する。
4.2まとめ・効果
以上説明してきたように、本発明の携帯電話は、セキュアメモリ713にロードされている各プログラムの動作を監視し、不正の動作を繰り返すプログラムの実行を中止する。このようにすることで、万一、セキュアメモリ713中のプログラムに欠陥があった場合や、実行途中で不正な改ざんが加えられた場合でも、これらのプログラムの実行を停止することができる。
4.3実施の形態4の変形例
(1)上記の実施の形態では、メモリ保護部701は、信号監視部703により、バス上の信号を監視することで不正な動作を検出しているが、これに代わって、定期的にCPUのプログラムカウンタ値を監視するとしても良い。
(2)上記の実施の形態では、セキュアメモリ713上の各プログラムが、起動時に、各プログラムごとに異なるアクセス情報をアクセス管理部702出力し、信号監視部703は、これらのアクセス情報を基に、各プログラムの動作を監視しているが、予め、アクセス管理部702が、セキュアメモリ713上のアクセス禁止領域を示す情報を記憶しているとしてもよい。この場合、いずれのプログラムが実行中であっても、禁止領域にアクセスしようとすると、信号監視部は、CPU102によるプログラム実行を中止し、CPU102及びMMUをクリアし、切替制御部へ切替指示を出力する。
(2)本実施の形態において、メモリ保護部701は、実施の形態2において説明したように、無効化リスト記憶部、アプリ検証部、アプリ無効化部、OS検証部、OS無効化部を備えており、切替制御部から接続指示を受けると、セキュアメモリ上の各プログラムが有効であるか否かを判定するとしてもよい。
この構成において、信号監視部703は、動作途中に不正な動作を行うプログラムを発見し、そのプログラムの動作を停止させると共に、無効化リスト記憶部の記憶しているOS無効化リスト又はアプリ無効化リストに、不正動作を行ったプログラムと対応するセキュアOSID又はアプリIDを追加する。
このようにすることで、新たに発見された無効なプログラムを、再度、実行することがなくなる。
5.実施の形態
本発明の実施の形態5について以下に説明する。
実施の形態5の携帯電話750は、2枚のメモリカードを装着する。メモリカードのうち一方には、OS(オペレーティングシステム)及び、各種のアプリケーションが記憶されており、携帯電話750は、これらのプログラムを読み出して実行する。説明の便宜上このメモリカードを通常メモリカード800と呼ぶ。
もう一方のメモリカードには、保護されるべき処理を行うプログラムが暗号化されて記憶されている。各プログラムは、プログラム部分とデータ部分とから構成される。説明の便宜上、このメモリカードをセキュアメモリカード820と呼ぶ。
携帯電話750は、セキュアメモリカード820上の各プログラムが、他のプログラムのプログラム部分を読み出すことは許可するが、他のプログラムのデータ部分を読み出すことを禁止する。
5.1 セキュアメモリカード820
セキュアメモリカード820は、図67に示すように、入出力部821及び情報記憶部830から構成される。
セキュアメモリカード820は、具体的にはマイクロプロセッサ、RAM及びROMを含んで構成されるコンピュータシステムであり、前記RAM、ROMにはコンピュータプログラムが記憶されている。前記マイクロプロセッサが前記コンピュータプログラムに従って動作することにより、セキュアメモリカード820は、その機能の一部を達成する。
入出力部821は、外部機器との間で情報の入出力を行う。
情報記憶部830は、セキュアID850、暗号化音楽復号プログラム831、暗号化鍵生成プログラム841などを記憶している。
セキュアID850は、セキュアメモリカード820に固有の情報であり、セキュアメモリカード820がセキュアな処理を行うプログラムを格納していることを示している。
暗号化音楽復号プログラム831は、ID832「A」、暗号化復号プログラム834及び暗号化復号データ836を含む。ID832「A」は、暗号化音楽復号プログラム831に固有の識別情報である。
暗号化復号プログラム834は、音楽データを復号する手順を含む復号プログラムを暗号化して生成されたものであり、暗号化復号データ836は、復号プログラムが復号の処理に使用するパラメータなどのデータを暗号化したものである。
暗号化鍵生成プログラム841は、ID842「B」、暗号化生成プログラム844、暗号化鍵データ846を含んで構成される。
ID842「B」は、暗号化鍵生成プログラム841に固有の識別情報である。暗号化生成プログラム844は、暗号鍵を生成する手順を含む生成プログラムを暗号化したものであり、暗号化鍵データ846は、前記生成プログラムの使用するパラメータなどのデータを暗号化したものである。
5.2 通常メモリカード800
通常メモリカード800は、図68に示すように、入出力部801と情報記憶部802とを含んで構成される。
入出力部801は、情報記憶部802と外部機器との間で、各種のデータの入出力を行う。
情報記憶部802は、音楽再生プログラム808を初めとする各種のアプリケーション及びOS806を記憶している。情報記憶部802に記憶されているプログラムは、それぞれのプログラムが実行する処理の手順を含むコード部とデータ部とから構成される。また、それぞれのプログラムに固有のプログラムIDを有している。一例として、OS806は、プログラムID「OS」を有しており、音楽再生プログラム808は、プログラムID「E」を有している。
5.3 携帯電話750
携帯電話750は、図68に示すように、デバッガIF751、CPU752、MMU753、割込コントローラ757、入力部758、表示部759、メモリ761、メモリ保護部764、入出力部765、入出力部766、無線通信制御部768、通信部771、アンテナ772、マイク769、スピーカ770、バッファ773、符号処理部774、D/A変換部776をバス760によって接続して構成される。
デバッガIF751、MMU753、割込コントローラ757、入力部758、表示部759、無線通信制御部768、通信部771、アンテナ772、マイク769、スピーカ770、バッファ773、符号処理部774D/A変換部776の動作及び構成は実施の形態1と同様であるのでここでは説明を省略する。また、メモリ761は、各種のデータ及びプログラムを記憶しており、CPU752は、メモリ761、通常メモリカード800及びセキュアメモリカード820に記憶されているプログラムに含まれる命令を1個ずつフェッチし、フェッチした命令を解読し実行する。
以下に、本実施の形態の特徴部分であるメモリ保護部764、入出力部765、入出力部766について説明する。
(1)入出力部765及び入出力部766
入出力部765及び入出力部766は、2枚のメモリカードのいずれかと接続され、メモリカードとメモリ保護部764との間で、情報の入出力を行う。
(2)メモリ保護部764
メモリ保護部764は、図69に示すように、復号部781、復号鍵記憶部782、アクセス制御部783、鍵記憶部784、メモリ情報記憶部785及びID検出部786から構成される。
(2−1)鍵記憶部784
鍵記憶部784は、暗号化音楽復号プログラム831の復号鍵及び暗号化鍵生成プログラム841の復号鍵をそれぞれのプログラムのIDと対応付けて記憶している。
(2−2)復号部781及び復号鍵記憶部782
復号部781は、アクセス制御部783のから、復号指示及び暗号文を受け取る。復号指示を受け取ると、復号鍵記憶部782から復号鍵を読み出し、読み出した復号鍵を用いて、暗号化データを復号し、平文を生成する。生成した平文をCPU752へ出力する。
ここで復号部781が復号する暗号化データは、セキュアメモリカード820に記憶されている暗号化音楽復号プログラム831、暗号化鍵生成プログラム841を構成する暗号化データである。
復号鍵記憶部782は、復号部781の使用する復号鍵を1個だけ格納している。
(2−3)メモリ情報記憶部785
メモリ情報記憶部785は、図70に示すように、セキュアメモリ情報テーブル811及び通常メモリ情報テーブル861を記憶している。
セキュアメモリ情報テーブル811は、複数のセキュアメモリ情報812、813・・・から構成される。各セキュアメモリ情報は、プログラムID、コードアドレス及びデータアドレスを含む。
プログラムIDは、セキュアメモリカード820に記憶されている各プログラムのIDである。コードアドレスは、セキュアメモリカード820内に記憶されている暗号化アプリケーションのプログラム部分の格納されている領域を示すアドレスである。データアドレスは、暗号化アプリケーションのデータ部分が格納されている領域を示すアドレスである。
具体的には、セキュアメモリ情報812は、プログラムIDとして、暗号化音楽復号プログラム831のID「A」832と、コードアドレスとして、暗号化復号プログラム834の記憶されているアドレス「A000〜A111」と、データアドレスとして、暗号化復号データ836の記憶されているアドレス「A222〜A333」を含んでいる。
セキュアメモリ情報813は、プログラムIDとして、暗号化鍵生成プログラム841のID「B」842と、コードアドレスとして、暗号化生成プログラム844の記憶されているアドレス「A444〜A555」と、データアドレスとして、暗号化鍵データ846の記憶されているアドレス「A666〜A777」を含んでいる。
通常メモリ情報テーブル861は、複数の通常メモリ情報862、863・・・を含んで構成され、各通常メモリ情報は、プログラムID、コードアドレス及びデータアドレスを含む。
プログラムIDは、通常メモリカード800上に記憶されているプログラムのIDであり、コードアドレスは、プログラムIDと対応するプログラムのプログラム部分が記憶されている領域を示すアドレスであり、データアドレスは、データ部分が記憶されている領域のアドレスである。
具体的に、通常メモリ情報862は、通常メモリカード800上に記憶されているOS806と対応しており、通常メモリ情報863は、音楽再生プログラム808と対応している。
(2−4)ID検出部786
ID検出部786は、CPU752のプログラムカウンタ(以下PC)を常時監視しており、CPU752が、セキュアメモリカード820上のプログラムを実行している間は、CPU752が実行中のプログラムを示すプログラムIDを記憶している。
以下に、図71のフローチャートを用いて、ID検出部786の動作について説明する。なお、説明の便宜上ステップS801から説明を開始する。このとき、CPU752は、通常メモリカード800又はメモリ761上に記憶されているプログラムを実行している。
ID検出部786は、PCを監視し(ステップS801)、メモリ情報記憶部785の記憶しているセキュアメモリ情報テーブル811及び通常メモリ情報テーブル861に含まれる、各プログラムのコードアドレスと、PCの示すアドレスとを比較することにより、PCの示すアドレスがセキュアメモリカード820上のアドレスであるか否かを判断する(ステップS802)。
セキュアメモリカード820上のアドレスでなければ(ステップS802のNO)、PCの監視を継続する。
セキュアメモリカード820上のアドレスであると判断すると(ステップS802のYES)、次に、PCから検出したアドレスと対応するセキュアメモリ情報をセキュアメモリ情報テーブル811から選択し、選択したセキュアメモリ情報に含まれるプログラムIDを抽出する(ステップS803)。抽出したプログラムIDを記憶する(ステップS804)。次に、アクセス制御部783へ、セキュアメモリカード820上のプログラムの実行が開始されることを示すセキュアアクセス通知を出力する(ステップS805)。
次に、PCを監視し(ステップS806)、PCに格納されているアドレスがセキュアメモリカード820上のアドレスであるか否かを判断する(ステップS807)。
セキュアメモリカード820上のアドレスであると判断すると(ステップS807のYES)、PCから検出したアドレスと対応するセキュアメモリ情報をセキュアメモリ情報テーブル811から選択し、選択したセキュアメモリ情報に含まれるプログラムIDを抽出する(ステップS809)。抽出したプログラムIDとID検出部786自身の記憶しているプログラムIDとを比較する。両者が一致していれば(ステップS811のYES)、ステップS806へ戻って、PCの監視を続ける。
両者が一致していない場合(ステップS811のNO)、記憶しているプログラムIDを抽出したプログラムIDに書き換え(ステップS812)、ステップS806へ戻る。
ステップS807において、セキュアメモリカード820上のアドレスでないと判断すると(ステップS807のNO)、ID検出部786自身の記憶しているプログラムIDを消去し(ステップS814)、ステップS801へ戻る。
(2−5)アクセス制御部783
アクセス制御部783は、予め、セキュアメモリカード820に書き込まれているセキュアIDを記憶している。
入出力部765及び入出力部766を介して、メモリカードが装着されたことを検出する。メモリカードの装着を検出すると、メモリカードに書き込まれているデータを検索する。記憶しているセキュアIDと同一のセキュアID850を検出した場合、そのメモリカードがセキュアメモリカード820であることを検知する。ここでは、入出力部265が、通常メモリカード800と接続されており、セキュアメモリカード820がセキュアメモリカード820と接続されている場合を想定する。
アクセス制御部783は、入出力部765を介して通常メモリカード800の装着を検出すると、入出力部765を介して、通常メモリカード800に記憶されている情報をサーチし、通常メモリ情報テーブルを生成し、生成した通常メモリ情報テーブルをメモリ情報記憶部785へ格納する。
また、入出力部766を介して、セキュアメモリカード820の装着を検出すると、入出力部766を介して、セキュアメモリカード820に記憶されている情報をサーチし、セキュアメモリ情報テーブルを生成し、生成したセキュアメモリ情報テーブルをメモリ情報記憶部785に書き込む。
アクセス制御部783は、CPU752が通常メモリカード800へアクセスする際に、CPU752から出力される信号(以下アクセス信号と呼ぶ)を、そのまま通常メモリカード800へ仲介し、また、通常メモリカード800から、出力されるデータを受け取り、受け取ったデータをCPU752へ出力する。
CPU752がセキュアメモリカード820へアクセスする際には、アクセス信号からアクセス先のアドレスを抽出し、抽出したアドレスによって、セキュアメモリカード820データの読み出し又読み出しの禁止を行う。このような、アクセス制御部783の動作について、図71、72に示すフローチャートを用いて、詳細に説明する。なお、説明の便宜上、ステップS821から説明を始める。このとき、CPU752は、通常メモリカード800又はメモリ761上のプログラムを実行している。
アクセス制御部783は、CPU752と通常メモリカード800との間で、データの入出力を仲介する(ステップS821)。
ID検出部786から、セキュアメモリカード820上のプログラムの実行が開始されることを示すセキュアアクセス通知を受け取る(ステップS805)。
セキュアアクセス通知を受け取ると、アクセス制御部783は、デバッガIF751を無効化し(ステップS823)、ID検出部786に記憶されているプログラムIDを読み出す(ステップS824)。読み出したプログラムIDと対応する復号鍵を鍵記憶部784から読み出し(ステップS826)、読み出した復号鍵を復号鍵記憶部782へ書き込む(ステップS827)。
次に、CPU752から出力されるアクセス信号を受け取り、受け取ったアクセス信号から、アクセス先のアドレスを検出する(ステップS829)。
アクセス先のアドレスを検出すると、ID検出部786からプログラムIDを読み出す(ステップS831)。プログラムIDを読み出すと(ステップS832のYES)、コードアドレス又はデータアドレスに検出したアクセス先アドレスを含むセキュアメモリ情報を、セキュアメモリ情報テーブル811から選択し、選択したセキュアメモリ情報からプログラムIDを抽出する(ステップS834)。
抽出したプログラムIDとID検出部786から読み出したプログラムIDとを比較し、両者が一致していれば(ステップS836のYES)、ステップS844へ処理を移す。
両者が一致していない場合(ステップS836のNO)、アクセス制御部783は、さらに、検出したアドレスが、選択したセキュアメモリ情報のコードアドレスに含まれているのか、データアドレスに含まれているのかを判定する(ステップS838)。データアドレスに含まれていると判定した場合(ステップS838のNO)、アクセスが許可できないことを示すエラー通知をCPU752へ出力し、ステップS829へ戻る。
コードアドレスに含まれると判定した場合(ステップS838のYES)、抽出したプログラムIDと対応する復号鍵を、鍵記憶部784から読み出し、復号鍵記憶部782の記憶している復号鍵を、読み出した復号鍵に変更する(ステップS842)。
次に、入出力部766を介して検出したアドレスに該当する記憶領域に記憶されている情報を読み出す(ステップS844)。読み出した情報の復号を復号部781へ指示し(ステップS846)、ステップS829へ戻る。
ステップS832において、ID検出部786に記憶されているプログラムIDが存在しない場合(ステップS832のNO)、アクセス制御部783は、復号鍵記憶部782に記憶されている復号鍵を消去し(ステップS851)、デバッガIF751を有効にし(ステップS852)ステップS821へ戻る。
5.4 まとめ・効果
以上、説明してきたように、本発明の携帯電話は、通常メモリカード及びセキュアメモリカードに記憶されているプログラムを実行する。セキュアメモリカードに記憶されているプログラは予め暗号化されている。
メモリ保護部764は、CPU752がセキュアメモリカード820に記憶されているプログラムを実行する際に、実行中のプログラムによって、アクセスを許可する領域と、禁止する領域とを管理している。
音楽復号プログラムが実行される場合を例に説明すると、CPU752は、暗号化音楽復号プログラム831に含まれる暗号化音楽復号プログラム831の記憶されている領域と、暗号化鍵生成プログラムの暗号化生成プログラム844の記憶されている領域にアクセスすることはできるが、暗号化鍵生成プログラムの暗号化鍵データ846の記憶されている領域にはアクセスできない。
このようにして、セキュアメモリカード820上の各アプリケーションは、他のアプリケーションから、自身のデータ部にアクセスされ、不正にデータを読み出し、変更されることを回避できる。
また、セキュアメモリカード820に記憶されている情報は、暗号化されているため、セキュアメモリカード820上のプログラム以外のプログラムをCPU752が実行している途中に、セキュアメモリカード820にアクセスした場合でも、解読することができない。従って、セキュアメモリカード820上のデータを不正なアクセスから保護することができる。
5.5 実施の形態5に関する変形例
上記の実施の形態では、セキュアメモリカード820上のセキュアアプリケーションの実行中にCPU752が、他のアプリケーションのデータ部分にアクセスしようとした場合、アクセス制御部783は、CPU752にエラー通知を出力しているが、実施の形態4の場合と同様に、他のプログラム、例えばOS806にCPU752の実行権を移すとしても良い。この場合、アクセス制御部783は、復号鍵記憶部782に記憶されている復号鍵を消去し、OS806の記憶されているアドレスをCPU782のプログラムカウンタに設定する。
6. その他の変形例
以上、実施の形態1〜5によって、本発明について説明してきたが、本発明は、これらの実施の形態に限定されるものではなく、以下のような場合も含む。
(1)本発明は、上記の実施の形態1〜3及び変形例を実行する方法であってもよい。
(2)また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(3)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明を構成する各装置及び記録媒体は、保護される必要のある情報を取り扱う産業、例えば、映像及び音声を含むコンテンツの作成、配給に係る産業、及び、これらの情報を取り扱う電器機器を製造し、販売する産業において、経営的に、また継続的及び反復的に使用することができる。また、本発明を構成する各装置及び記録媒体は、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
図1は、実施の形態1の携帯電話100の使用例を示す。 図2は、携帯電話100及びメモリカード300の構成を示すブロック図である。 図3は、二次記憶部104に記憶されている情報の一例を示す。 図4は、通常メモリ111に記憶されている情報の一例を示す。 図5は、アプリ管理表166の詳細を示す。 図6は、セキュアメモリ113に記憶されている情報の一例を示す。 図7は、セキュアアプリ管理表186の詳細を示す。 図8は、通常メモリ111及びセキュアメモリ113に記憶されているプログラムの関連を示したブロック図である。 通常OS151及びセキュアメモリ113の取り扱うコマンドのデータ構成を示す。 通常OS151の動作を示すフローチャートである。 セキュアOS171の動作を示すフローチャートである。 音楽復号デーモン156の動作を示すフローチャートである。 通常OS151からセキュアOS171への切替処理を示したフローチャートである。 セキュアOS171から通常OS151への切替処理を示したフローチャートである。 携帯電話100の動作を示したフローチャートである。 音楽復号プログラムの登録処理における各プログラムの動作を示したフローチャートである。 音楽復号プログラムの登録処理における各プログラムの動作を示したフローチャートである。図16から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図18から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図19から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図20から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図21から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図22から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図23から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図24から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図25から続く。 音楽復号プログラム176への処理依頼における各プログラムの動作を示したフローチャートである。図26から続く。 通常OS151の実行中における、通常入出力デバイス132による割込発生時の処理を示すフローチャートである。図21ステップS239の詳細である。 セキュアOS171実行中における、通常入出力デバイス132による割込発生時の処理を示すフローチャートである。 通常OS151の実行中における、セキュアデバイス133による割込発生時の処理を示すフローチャートである。図23ステップS287の詳細である。 通常OS151の実行中における、セキュアデバイス133による割込発生時の処理を示すフローチャートである。図30から続く。 通常OS151の実行中における、暗号処理デバイス117による割込発生時の処理を示すフローチャートである。図27ステップS337の詳細である。 通常OS151の実行中における、暗号処理デバイス117による割込発生時の処理を示すフローチャートである。図32から続く。 通常OS151の実行中における、暗号処理デバイス117による割込発生時の処理を示すフローチャートである。図33から続く。 音楽復号プログラム176の削除処理を示したフローチャートである。 携帯電話100の動作において、プログラム間のコマンドの受け渡しを示す。 携帯電話100の動作において、プログラム間のコマンドの受け渡しを示す。 携帯電話100の動作において、プログラム間のコマンドの受け渡しを示す。図37から続く。 携帯電話100の動作において、プログラム間のコマンドの受け渡しを示す。図38から続く。 携帯電話100の動作において、プログラム間のコマンドの受け渡しを示す。図39から続く。 携帯電話100の動作において、プログラム間のコマンドの受け渡しを示す。図40から続く。 携帯電話100の動作において、プログラム間のコマンドの受け渡しを示す。図41から続く。 通常メモリ111に記憶されている情報の一例を示す。 携帯電話100の起動時の動作を示すフローチャートである。 セキュアメモリ113に記憶されている情報の一例を示す。 MMU制御プログラム184により形成される論理メモリ空間の一例を示す。 実施の形態1の変形例における、各プログラム間の関連を示すブロック図である。 実施の形態1の変形例において、通常OS151及びセキュアOS171が有するセキュアデバイスドライバ管理表231の構成を示す。 実施の形態2の携帯電話400の使用例を示す。 無効化リスト発行装置250の構成を示すブロック図である。 携帯電話400に含まれるメモリ保護部414及びセキュアメモリ413の構成を示すブロック図である。 メモリ保護部414の動作を示すフローチャートである。 メモリ保護部414の動作を示すフローチャートである。図52から続く。 実施の形態2の変形例におけるメモリ保護部454及びセキュアメモリ453の構成を示すブロック図である。 セキュアOS証明書の詳細を示す。 実施の形態2の変形例において、音楽復号プログラム476の備えるアプリ証明書501、メーカー証明書511、CA証明書521の構成及び関連を示す。 OS無効化リストの構成の一例を示す。 実施の形態3における無効化リスト発行装置の情報記憶部610に記憶されている情報の一例を示す。 アプリ固有鍵マトリクス592及びOS固有鍵マトリクス597の構成を示す。 アプリマトリクス無効化リスト611の詳細な構成を示す。 アプリマトリクス無効化リストの生成の処理手順を示すフローチャートである。 実施の形態3の携帯電話の備えるメモリ保護部571及びセキュアメモリ613の構成を示すブロック図である。 メモリ保護部571による検証動作を示すフローチャートである。 アプリ検証部578による音楽復号プログラム592の検証動作を示すフローチャートである。 実施の形態3の変形例のホームネットワークの構成を示す構成図である。 実施の形態4の携帯電話を構成するメモリ保護部701及びセキュアメモリ713の構成を示すブロック図である。 実施の形態5において、セキュアメモリカード820の構成及びセキュアメモリカード820に記憶されている情報の一例を示す。 実施の形態5の携帯電話750及び携帯電話750に装着される通常メモリカード800及びセキュアメモリカード820の構成を示すブロック図である。 メモリ保護部764の構成を示すブロック図である。 セキュアメモリテーブル811及び通常メモリテーブル861の構成を示す。 アクセス制御部783及びID検出部786の動作を示すフローチャートである。 アクセス制御部783動作を示すフローチャートである。図71から続く。
符号の説明
10 携帯電話網
15 基地局
20 インターネット
100 携帯電話
101 デバッガIF
102 CPU
103 MMU
104 二次記憶部
106 切替制御部
107 割込コントローラ
108 入力部
109 表示部
111 通常メモリ
112 共有メモリ
113 セキュアメモリ
114 メモリ保護部
116 入出力部
117 暗号処理デバイス
118 無線通信制御部
119 マイク
120 スピーカ
121 通信部
122 アンテナ
123 バッファ
124 符号処理部
126 D/A変換部
130 バス
131 アクセス部
132 通常入出力デバイス
133 セキュア入出力デバイス
300 メモリカード

Claims (61)

  1. 保護対象のセキュアリソースの利用が許可されるセキュアモードと、保護対象外の通常リソースの利用のみが許可される通常モードとを切り替えて、プログラムを実行するデータ処理装置であって、
    前記通常リソースを利用する1つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、
    前記セキュアリソースを利用する1つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段と、
    セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断手段と、
    セキュアモードにおいて、前記呼出命令であると判断される場合に、当該呼出命令により呼び出される前記通常プログラムを示す識別情報を出力する出力手段と、
    前記呼出命令であると判断される場合に、セキュアリソースを保護して、セキュアモードから通常モードに切り替える切替手段と、
    通常モードにおいて、前記識別情報を受け取る受取手段と、
    通常モードにおいて、受け取った前記識別情報により示される前記通常プログラムを前記通常記憶手段から読み出す読出手段と、
    通常モードにおいて、読み出した通常プログラムに従って動作する処理手段と
    を備えることを特徴とするデータ処理装置。
  2. 前記切替手段は、前記セキュアプログラムを制御するセキュアオペレーティングシステムを中断させ、前記通常プログラムを制御する通常オペレーティングシステムを起動することにより、セキュアモードから通常モードに切り替える
    ことを特徴とする請求項1に記載のデータ処理装置。
  3. 前記データ処理装置は、セキュアモード及び通常モードの両方において、アクセスが許可される共有記憶領域を備え、
    前記出力手段は、セキュアモードにおいて、前記識別情報を前記共有記憶領域に書き込むことにより、前記識別情報を出力し、
    前記受取手段は、通常モードにおいて、前記共有記憶領域から前記識別情報を読み出すことにより、前記識別情報を受け取る
    ことを特徴とする請求項2に記載のデータ処理装置。
  4. 前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出す
    ことを特徴とする請求項3に記載のデータ処理装置。
  5. 前記通常プログラムを構成する1つの処理手順は、ライブラリを構成する複数の関数を含み、他の処理手順は、前記複数の関数のうちのいずれかを呼び出し、
    前記処理手段は、前記他の処理手順に従って動作する場合に、当該他の処理手順により呼び出される関数に従って動作する
    ことを特徴とする請求項3に記載のデータ処理装置。
  6. 前記データ処理装置は、さらに、
    セキュアモードにおいて、前記セキュアプログラムの前記セキュア記憶手段への書き込みを示す書込指示を受け取る指示取得手段と、
    セキュアモードにおいて、前記書込指示を取得した場合に、前記セキュア記憶手段に前記セキュアプログラムを書き込み、前記書込みが終了したことを示す書込終了情報を出力するセキュアロード手段とを含み、
    前記切替手段は、さらに、前記書込終了情報が出力された場合、セキュアモードから通常モードへ切り替え、
    前記データ処理装置は、さらに、通常モードにおいて、前記書込終了情報を受け取り、前記通常記憶手段に前記通常プログラムを書き込む通常ロード手段とを含むことを特徴とする請求項2に記載のデータ処理装置。
  7. 前記読出手段は、さらに、通常モードにおいて、前記通常ロード手段により前記通常プログラムが前記通常記憶手段に書き込まれた場合に、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶する
    ことを特徴とする請求項6に記載のデータ処理装置。
  8. 前記データ処理装置は、さらに、
    セキュアモードにおいて、前記セキュアプログラムの削除を指示する削除指示を取得する削除指示取得手段と、
    前記削除指示を取得した場合に、セキュアモードにおいて、前記セキュアプログラムを前記セキュア記憶手段から削除し、前記削除が終了したことを示す削除終了情報を出力するセキュア削除手段とを含み、
    前記切替手段は、さらに、前記削除終了情報が出力された場合、セキュアモードから通常モードへ切り替え、
    前記データ処理装置は、さらに、
    通常モードにおいて、前記削除終了情報を取得し、前記通常記憶手段から前記通常プログラムを削除する通常削除手段を含む
    ことを特徴とする請求項6に記載のデータ処理装置。
  9. 前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出す
    ことを特徴とする請求項2に記載のデータ処理装置。
  10. 前記データ処理装置は、さらに、
    前記処理手段を含む当該データ処理装置の備える1以上のデバイスを初期化する初期化手順及び前記セキュアオペレーティングシステムを起動する起動手順を含むブートプログラムを記憶しているブートプログラム記憶手段と、
    前記ブートプログラム記憶手段から、前記ブートプログラムを読み出し、読み出した前記ブートプログラムに従って、前記デバイスを初期化し、初期化の完了後に、セキュアオペレーティングシステムを起動する初期化手段とを備える
    ことを特徴とする請求項2に記載のデータ処理装置。
  11. 前記データ処理装置は、さらに、
    通常モードにおいて、前記処理手段による処理結果と前記セキュアプログラムを示すセキュア識別情報とを出力する通常出力手段を含み、
    前記切替手段は、さらに、前記処理結果が出力された場合、通常モードからセキュアモードへ切り替え、
    前記データ処理装置は、さらに、
    セキュアモードにおいて、前記処理結果と前記セキュア識別情報とを受け取るセキュア受取手段と、
    受け取った前記セキュア識別情報に対応する前記セキュアプログラムを前記通常記憶手段から読み出すセキュア読出手段とを含み、
    前記処理手段は、さらに、セキュアモードにおいて、前記処理結果を用いて、前記セキュアプログラムに従って動作する
    ことを特徴とする請求項2に記載のデータ処理装置。
  12. 前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースと前記処理手段とを切断する
    ことを特徴とする請求項2に記載のデータ処理装置。
  13. 前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースに保持されているセキュア情報を暗号化する
    ことを特徴とする請求の範囲2に記載のデータ処理装置。
  14. 前記セキュアリソースに保持されている前記セキュア情報は、セキュアモードにおいて実行され、命令コード部分とデータ部分とスタック部分から構成されるプログラムを含んでおり、
    前記切替手段は、セキュアモードから通常モードに切り替える際に、前記命令コード部分を暗号化する
    ことを特徴とする請求の範囲13に記載のデータ処理装置。
  15. 前記セキュアリソースに保持されている前記セキュア情報は、セキュアモードにおいて実行され、命令コード部分とデータ部分とスタック部分から構成されるプログラムを含んでおり、
    前記切替手段は、セキュアモードから通常モードに切り替える際に、前記データ部分を暗号化する
    ことを特徴とする請求の範囲13に記載のデータ処理装置。
  16. 前記セキュアリソースに保持されている前記セキュア情報は、セキュアモードにおいて実行され、命令コード部分とデータ部分とスタック部分から構成されるプログラムを含んでおり、
    前記切替手段は、セキュアモードから通常モードに切り替える際に、前記スタック部分を暗号化する
    ことを特徴とする請求の範囲13に記載のデータ処理装置。
  17. 前記データ処理装置は、さらに、前記処理手段の動作を監視し、操作するデバッグ装置からデバッグ操作信号を受け付けるデバッグ受付手段を含み、
    前記切替手段は、セキュアモードから通常モードに切り替える際に、前記処理手段と前記デバッグ受付手段とを接続し、通常モードからセキュアモードに切り替える際に、前記処理手段と前記デバッグ受付手段とを切断する
    ことを特徴とする請求項2に記載のデータ処理装置。
  18. 前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出す
    ことを特徴とする請求項1に記載のデータ処理装置。
  19. 第1オペレーティングシステムと第2オペレーティングシステムとを切り替え、各オペレーティングシステムにおいて生成されるプロセスを実行状態、実行待ち状態、休止状態のいずれかに遷移させてプロセスを実行し管理する前記データ処理装置であって、
    前記第1オペレーティングシステムにおいて、第1プロセスを生成する第1生成手段と、
    前記第2オペレーティングシステムにおいて、前記第1プロセスと対応する第2プロセスを生成する第2生成手段と、
    前記第1オペレーティングシステムにおいて、前記第1プロセスの状態遷移を検出する第1検出手段と、
    前記第1オペレーティングシステムにおいて、検出された状態遷移を示す遷移情報を出力する第1出力手段と、
    前記第1オペレーティングシステムを前記第2オペレーティングシステムに切り替えるOS切替手段と、
    前記第2オペレーティングシステムにおいて、前記遷移情報を取得する第2取得手段と、
    取得した前記遷移情報に従って、前記第2プロセスの状態を遷移させる第2遷移手段と
    を備えることを特徴とする請求項1に記載のデータ処理装置。
  20. 前記データ処理装置は、さらに、
    前記第2オペレーティングシステムにおいて、前記第2プロセスの状態遷移を検出する第2検出手段と、
    前記第2オペレーティングシステムにおいて、検出された状態遷移を示す遷移情報を出力する第2出力手段とを含み、
    前記OS切替手段は、さらに、前記第2オペレーティングシステムを前記第1オペレーティングシステムに切り替え、
    前記データ処理装置は、さらに、
    前記第1オペレーティングシステムにおいて、前記遷移情報を取得する第1取得手段と、
    取得した前記遷移情報に従って、前記第1プロセスの状態を遷移させる第1遷移手段とを含むことを特徴とする請求項19に記載のデータ処理装置。
  21. 前記データ処理装置は、第1オペレーティングシステム及び第2オペレーティングシステムの両方において、アクセス可能な共有記憶領域を備え、
    前記第1出力手段は、前記共有記憶領域に前記遷移情報を書き込むことにより、前記遷移情報を出力し、
    前記第2取得手段は、前記共有記憶領域から前記遷移情報を読み出すことによって、前記遷移情報を取得する
    ことを特徴とする請求項20に記載のデータ処理装置。
  22. 前記第2出力手段は、前記共有記憶領域に前記遷移情報を書き込むことにより、前記遷移情報を出力し、
    前記第1取得手段は、前記共有記憶領域から前記遷移情報を読み出すことによって、前記遷移情報を取得する
    ことを特徴とする請求項21に記載のデータ処理装置。
  23. 前記データ処理装置は、前記第2オペレーティングシステムにおいて管理されて動作するデバイスを含み、
    前記第2プロセスは、前記デバイスの駆動を制御するデバイス駆動プログラムであり、
    前記第2検出手段は、前記デバイスの動作に伴う前記第2プロセスの状態遷移を検出する
    ことを特徴とする請求項22に記載のデータ処理装置。
  24. 前記第1オペレーティングシステムにおいて、前記第1プロセスが、休止状態から実行状態に遷移した場合、
    前記データ処理装置は、前記デバイスへの処理依頼の重複を回避する排他処理を行う前記第1プロセスに従って動作し、
    前記第1オペレーティングシステムにおいて、前記第1出力手段は、前記排他処理が終了した後に前記遷移情報を出力する
    ことを特徴とする請求項23に記載のデータ処理装置。
  25. 前記データ処理装置は、さらに、
    第1オペレーティングシステム及び第2オペレーティングシステムにおいて、割込の発生を検出する割込検出手段と、
    前記第1オペレーティングシステムにおいて、割込が検出された場合、割込発生要因を調査する割込調査手段と、
    前記第1オペレーティングシステムにおいて、割込調査手段により、前記デバイスによる割込であると判断された場合、前記第1プロセスを休止状態から実行状態に遷移させる割込遷移手段と
    を含むことを特徴とする請求項23に記載のデータ処理装置。
  26. 前記データ処理装置は、さらに、
    前記第2オペレーティングシステムにおいて、割込が検出された場合、割込の検出を示す割込通知情報を出力する通知手段を含み、
    前記OS切替手段は、前記第2オペレーティングシステムを前記第1オペレーティングシステムに切り替え、
    前記第1取得手段は、さらに、前記第1オペレーティングシステムにおいて、前記割込通知情報を取得し、
    前記割込調査手段は、さらに、第1オペレーティングシステムにおいて、前記割込通知情報を取得した場合、割込発生要因を調査する
    ことを特徴とする請求項25に記載のデータ処理装置。
  27. 前記通知手段は、割込が検出された場合、前記割込検出手段に対して、割込の検出を停止させ、
    前記第1取得手段は、前記割込通知情報を取得した場合、前記割込検出手段に対して、前記停止を解除する
    ことを特徴とする請求項26に記載のデータ処理装置。
  28. プログラムに従って動作する前記データ処理装置であって、
    複数の処理手順から構成されるプログラムを記憶している記憶手段と、
    前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断する正当性判断手段と、
    不正なものであると判断される場合に、前記プログラムを無効化する無効化手段と
    を備えることを特徴とする請求項1に記載のデータ処理装置。
  29. 前記正当性判断手段は、
    前記記憶手段に記憶されている前記プログラムを示すプログラム識別情報を取得するプログラム情報取得部と、
    無効化されたプログラムを示す無効化識別情報を取得する無効化情報取得部と、
    取得した前記プログラム識別情報と取得した前記無効化識別情報とが一致するか否かを判断する判断部とを含み、
    一致すると判断される場合に、前記プログラムが不正であると決定する
    ことを特徴とする請求項28に記載のデータ処理装置。
  30. 前記プログラム情報取得部は、
    前記プログラムを示すプログラム識別情報を記憶している識別情報記憶部と、
    前記識別情報記憶部から前記プログラム識別情報を読み出すことにより取得する読出部とを含み、
    前記無効化情報取得部は、
    無効化されたプログラムを示す無効化識別情報を記憶している無効化情報記憶部と、
    前記無効化情報記憶部から前記無効化識別情報を読み出すことにより取得する読出部とを含む
    ことを特徴とする請求項29に記載のデータ処理装置。
  31. 前記正当性判断手段は、前記プログラムに割り当てられた公開鍵の正当性を証明する公開鍵証明書に基づいて、前記プログラムが不正なものであるか否かを判断する
    ことを特徴とする請求項28に記載のデータ処理装置。
  32. 前記正当性判断手段は、
    前記公開鍵を識別する公開鍵識別情報を含む前記公開鍵証明書を記憶している証明書記憶部と、
    前記公開鍵証明書から前記公開鍵識別情報を取得する公開鍵情報取得部と、
    無効化された公開鍵を示す無効化識別情報を記憶している無効化情報記憶部と、
    前記無効化情報記憶部から無効化識別情報を読み出す無効化情報読出部と、
    取得した前記公開鍵識別情報と読み出した前記無効化識別情報とが一致するか否かを判断する判断部とを含み、
    一致すると判断される場合に、前記プログラムが不正であると決定する
    ことを特徴とする請求項31に記載のデータ処理装置。
  33. 前記正当性判断手段は、さらに、
    外部から最新の無効化識別情報を取得し、取得した無効化識別情報を前記無効化情報記憶部に書き込む更新部を含む
    ことを特徴とする請求項32に記載のデータ処理装置。
  34. 前記更新部は、前記記憶手段へのアクセス要求を検出する度に、最新の無効化識別情報を取得する
    ことを特徴とする請求項33に記載のデータ処理装置。
  35. 前記更新部は、CRL(Certificate Revocation List)発行装置から、ネットワークを介して、前記無効化識別情報を受信し、CRL発行装置から、ネットワーク及びサーバ装置を介して、前記無効化識別情報を受信し、又は記録媒体から前記無効化識別情報を読み出すことにより、取得する
    ことを特徴とする請求項33に記載のデータ処理装置。
  36. 前記更新部は、さらに、外部から、前記最新の無効化識別情報に対してデジタル署名を施して生成された署名データを取得し、取得した署名データに署名検証を施し、署名検証が成功した場合に、取得した前記無効化識別情報を前記無効化情報記憶部に書き込む
    ことを特徴とする請求項33に記載のデータ処理装置。
  37. 前記正当性判断手段は、
    少なくとも当該公開鍵に対してデジタル署名を施して生成された署名データを含む前記公開鍵証明書を記憶している証明書記憶部と、
    前記証明書記憶部から前記公開鍵証明書を取得する公開鍵証明書取得部と、
    取得した前記公開鍵証明書に含まれる署名データに、署名検証を施すことにより、取得した前記公開鍵証明書が正しいものであるか否かを検証する検証部とを含み、
    前記公開鍵証明書が正しいものでないと判断される場合に、前記プログラムが不正であると決定する
    ことを特徴とする請求項31に記載のデータ処理装置。
  38. 前記正当性判断手段は、少なくとも2個の公開鍵の正当性をそれぞれ証明する少なくとも2個の公開鍵証明書を用いて、前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断する
    ことを特徴とする請求項28に記載のデータ処理装置。
  39. 前記2個の公開鍵は、前記プログラムに割り当てられた第1公開鍵及び前記データ処理装置又は前記プログラムの動作を制御するオペレーティングシステムに割り当てられた第2公開鍵であり、
    前記正当性判断手段は、
    権威のある認証機関の秘密鍵を用いて、少なくとも前記第2公開鍵に対してデジタル署名を施して生成された第2署名データと、前記第2公開鍵とを含む第2公開鍵証明書と、
    前記データ処理装置又は前記オペーティングシステムの秘密鍵を用いて、少なくとも前記第1公開鍵に対してデジタル署名を施して生成された第1署名データと、前記第1公開鍵とを含む第1公開鍵証明書とを記憶している証明書記憶部と、
    前記証明書記憶部から前記第1公開鍵証明書及び前記第2公開鍵証明書を取得する公開鍵証明書取得部と、
    取得した前記第2公開鍵証明書に含まれる第2署名データに、前記認証機関の公開鍵を用いて、署名検証を施すことにより、取得した前記第2公開鍵証明書が正しいものであるか否かを検証し、
    正しいと判定された場合に、前記第2公開鍵証明書から前記第2公開鍵を取得し、
    取得した前記第1公開鍵証明書に含まれる第1署名データに、取得した前記第2公開鍵を用いて、署名検証を施すことにより、取得した前記第1公開鍵証明書が正しいものであるか否かを検証する検証部とを含み、
    前記第2公開鍵証明書が正しいものでないと判断される場合及び前記第1公開鍵証明書が正しいものでないと判断される場合に、前記プログラムが不正であると決定する
    ことを特徴とする請求項38に記載のデータ処理装置。
  40. 前記正当性判断手段は、前記記憶手段へのアクセス要求を検出する度に、前記判断をする
    ことを特徴とする請求項28に記載のデータ処理装置。
  41. 前記正当性判断手段は、前記記憶手段に記憶されているプログラムへのアクセス要求を検出する度に、前記判断をする
    ことを特徴とする請求項40に記載のデータ処理装置。
  42. 前記正当性判断手段は、当該データ処理装置へ電力供給が開始された直後に、前記判断をする
    ことを特徴とする請求項28に記載のデータ処理装置。
  43. 暗号化されたプログラムを復号して実行する前記データ処理装置であって、
    前記記憶手段は、前記プログラムに代えて、プログラム鍵を用いて、前記プログラムに暗号化アルゴリズムが施されて生成された暗号化プログラムを記憶しており、
    前記正当性判断手段は、
    p個の暗号鍵から選択されたm個の暗号鍵を記憶している暗号鍵記憶部と、
    前記m個の暗号鍵のそれぞれを用いて、前記プログラム鍵及び所定の検知情報のいずれかが暗号化されて生成されたm個の暗号化情報を、m個の前記暗号鍵に対応づけて記憶している暗号化情報記憶部と、
    前記m個の暗号鍵のそれぞれを用いて、対応する暗号化情報に復号アルゴリズムを施して、m個の復号情報を生成する復号部と、
    生成されたm個の復号情報の全てが、前記検知情報であるか否かを判断する判断部とを含み、
    生成されたm個の復号情報の全てが、前記検知情報であると判断される場合に、前記プログラムが不正なものであると決定する
    ことを特徴とする請求項28に記載のデータ処理装置。
  44. 前記p個の暗号鍵は、n行m列(p=n×m)の第1行列の各要素位置に配されており、前記第1行列の各列から1個の暗号鍵が選択されることにより、前記第1行列からm個の暗号鍵が選択され、
    前記暗号鍵記憶部は、前記第1行列において、各暗号鍵が配された要素位置を、各暗号鍵に対応付けて記憶しており、
    前記暗号化情報記憶部は、n行m列の第2行列において、各暗号化情報に対応する暗号鍵が配されている要素位置と同じ要素位置において、当該暗号化情報を記憶しており、
    復号部は、前記暗号鍵記憶部から、暗号鍵と対応する要素位置を読み出し、前記暗号化情報記憶部の第2行列において、前記読み出した要素位置と同じ要素位置に配されている暗号化情報を読み出し、読み出した前記暗号鍵を用いて、読み出した前記暗号化情報に復号アルゴリズムを施す
    ことを特徴とする請求項43に記載のデータ処理装置。
  45. 前記データ処理装置であって、
    データを記憶するためのメモリ手段と、
    複数の処理手順から構成されるプログラムに従って動作するプロセッサと、
    前記メモリ手段と前記プロセッサとの間に配置され、前記プロセッサから出力される前記メモリ手段宛の転送データが転送制限条件を満たしているか否かを判断し、転送制限条件を満たしていると判断する場合に、前記メモリ手段への転送データの転送を抑制し、転送制限条件を満たしていないと判断する場合に、前記メモリ手段への転送データの転送を行う監視手段と
    を備えることを特徴とする請求項1に記載のデータ処理装置。
  46. 前記監視手段は、複数のアプリケーションプログラム毎に、転送制限条件を記憶しており、前記プロセッサにより実行されるアプリケーションプログラム毎に、転送制限条件を選択し、選択した転送制限条件を用いる
    ことを特徴とする請求項45に記載のデータ処理装置。
  47. 前記転送制限条件は、前記メモリ手段内の所定の記憶空間を示すアドレス範囲情報であり、
    前記監視手段は、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、前記転送データの転送を抑制する
    ことを特徴とする請求項46に記載のデータ処理装置。
  48. 前記転送制限条件は、前記メモリ手段内の所定の記憶空間へのアクセス回数の上限を示す制限回数であり、
    前記監視手段は、過去における前記記憶空間へのアクセスの累積回数を記憶しており、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、前記累積回数に1を加算し、加算して得られた加算後回数が、前記制限回数を超える場合に、前記転送データの転送を抑制する
    ことを特徴とする請求項46に記載のデータ処理装置。
  49. 前記監視手段は、前記プロセッサに接続されるバス上において転送される前記転送データが転送制限条件を満たしているか否かを判断する
    ことを特徴とする請求項46に記載のデータ処理装置。
  50. 前記メモリ手段は、暗号鍵を用いて、前記プロセッサにより実行されている現プログラムとは異なるアプリケーションプログラムのコード部分とデータ部分とがそれぞれ暗号化されて生成された暗号化コード及び暗号化データを記憶しており、
    前記転送制限条件は、前記メモリ手段内において前記暗号化データが格納されている記憶空間を示すアドレス範囲情報であり、
    前記監視手段は、前記暗号化コード及び暗号化データを復号するための復号鍵を記憶しており、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記暗号化コードが格納されている記憶空間を示すアドレス範囲内にある場合に、前記復号鍵を用いて、前記転送データにより示される記憶空間に存在する暗号化コードを復号して復号コードを生成し、生成した復号コードを前記プロセッサへ転送し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、転送データの転送を抑制する
    ことを特徴とする請求項46に記載のデータ処理装置。
  51. 前記監視手段は、さらに、転送制限条件を満たしていると判断する場合に、前記プロセッサにより実行中の前記プログラムを識別する識別情報をプログラム無効化リストに追加する
    ことを特徴とする請求項46に記載のデータ処理装置。
  52. 前記データ処理装置であって、
    データを記憶するためのメモリ手段と、
    複数の処理手順から構成されるプログラムに従って動作し、次に実行対象となる命令のアドレスが格納されているプログラムカウンタを備えるプロセッサと、
    前記プログラムカウンタに格納されているアドレスが、所定のアドレス範囲内に含まれるか否かを判断し、所定のアドレス範囲内に含まれると判断する場合に、前記プロセッサに対して、プログラムカウンタに所定の値を格納するように指示する監視手段とを備え、
    前記プロセッサは、前記指示を受け取ると、プログラムカウンタに前記所定の値を格納する
    ことを特徴とする請求項1に記載のデータ処理装置。
  53. 保護対象のセキュアリソースの利用が許可されるセキュアモードと、保護対象外の通常リソースの利用のみが許可される通常モードとを切り替えて、プログラムを実行するデータ処理装置において用いられるデータ処理方法であって、
    前記データ処理装置は、前記通常リソースを利用する1つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、前記セキュアリソースを利用する1つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段とを備え、
    前記データ処理方法は、
    セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断ステップと、
    セキュアモードにおいて、前記呼出命令であると判断される場合に、当該呼出命令により呼び出される前記通常プログラムを示す識別情報を出力する出力ステップと、
    前記呼出命令であると判断される場合に、セキュアリソースを保護して、セキュアモードから通常モードに切り替える切替ステップと、
    通常モードにおいて、前記識別情報を受け取る受取ステップと、
    通常モードにおいて、受け取った前記識別情報により示される前記通常プログラムを前記通常記憶手段から読み出す読出ステップと、
    通常モードにおいて、読み出した通常プログラムに従って動作する処理ステップと
    を含むことを特徴とするデータ処理方法。
  54. 第1オペレーティングシステムと第2オペレーティングシステムとを切り替え、各オペレーティングシステムにおいて生成されるプロセスを実行状態、実行待ち状態、休止状態のいずれかに遷移させてプロセスを実行し管理する前記データ処理方法であって、
    前記第1オペレーティングシステムにおいて、第1プロセスを生成する第1生成ステップと、
    前記第2オペレーティングシステムにおいて、前記第1プロセスと対応する第2プロセスを生成する第2生成ステップと、
    前記第1オペレーティングシステムにおいて、前記第1プロセスの状態遷移を検出する第1検出ステップと、
    前記第1オペレーティングシステムにおいて、検出された状態遷移を示す遷移情報を出力する第1出力ステップと、
    前記第1オペレーティングシステムを前記第2オペレーティングシステムに切り替えるOS切替ステップと、
    前記第2オペレーティングシステムにおいて、前記遷移情報を取得する第2取得ステップと、
    取得した前記遷移情報に従って、前記第2プロセスの状態を遷移させる第2遷移ステップと
    を含むことを特徴とする請求項53に記載のデータ処理方法。
  55. プログラムに従って動作する前記データ処理装置において用いられる前記データ処理方法であって、
    前記データ処理装置は、複数の処理手順から構成されるプログラムを記憶している記憶手段を備え、
    前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断する正当性判断ステップと、
    不正なものであると判断される場合に、前記プログラムを無効化する無効化ステップと
    を含むことを特徴とする請求項53に記載のデータ処理方法。
  56. 前記データ処理装置において用いられるデータ処理方法であって、
    前記データ処理装置は、データを記憶するためのメモリ手段と複数の処理手順から構成されるプログラムに従って動作するプロセッサとを備え、
    前記データ処理方法は、
    前記メモリ手段と前記プロセッサとの間において、前記プロセッサから出力される前記メモリ手段宛の転送データが転送制限条件を満たしているか否かを判断し、転送制限条件を満たしていると判断する場合に、前記メモリ手段への転送データの転送を抑制し、転送制限条件を満たしていないと判断する場合に、前記メモリ手段への転送データの転送を行う監視ステップ
    を含むことを特徴とする請求項53に記載のデータ処理方法。
  57. 保護対象のセキュアリソースの利用が許可されるセキュアモードと、保護対象外の通常リソースの利用のみが許可される通常モードとを切り替えて、プログラムを実行するデータ処理装置において用いられるデータ処理プログラムであって、
    前記データ処理装置は、前記通常リソースを利用する1つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、前記セキュアリソースを利用する1つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段とを備え、
    前記データ処理プログラムは、
    セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断ステップと、
    セキュアモードにおいて、前記呼出命令であると判断される場合に、当該呼出命令により呼び出される前記通常プログラムを示す識別情報を出力する出力ステップと、
    前記呼出命令であると判断される場合に、セキュアリソースを保護して、セキュアモードから通常モードに切り替える切替ステップと、
    通常モードにおいて、前記識別情報を受け取る受取ステップと、
    通常モードにおいて、受け取った前記識別情報により示される前記通常プログラムを前記通常記憶手段から読み出す読出ステップと、
    通常モードにおいて、読み出した通常プログラムに従って動作する処理ステップと
    を含むことを特徴とするデータ処理プログラム。
  58. 第1オペレーティングシステムと第2オペレーティングシステムとを切り替え、各オペレーティングシステムにおいて生成されるプロセスを実行状態、実行待ち状態、休止状態のいずれかに遷移させてプロセスを実行し管理する前記データ処理プログラムであって、
    前記第1オペレーティングシステムにおいて、第1プロセスを生成する第1生成ステップと、
    前記第2オペレーティングシステムにおいて、前記第1プロセスと対応する第2プロセスを生成する第2生成ステップと、
    前記第1オペレーティングシステムにおいて、前記第1プロセスの状態遷移を検出する第1検出ステップと、
    前記第1オペレーティングシステムにおいて、検出された状態遷移を示す遷移情報を出力する第1出力ステップと、
    前記第1オペレーティングシステムを前記第2オペレーティングシステムに切り替えるOS切替ステップと、
    前記第2オペレーティングシステムにおいて、前記遷移情報を取得する第2取得ステップと、
    取得した前記遷移情報に従って、前記第2プロセスの状態を遷移させる第2遷移ステップと
    を含むことを特徴とする請求項57に記載のデータ処理プログラム。
  59. プログラムに従って動作する前記データ処理装置において用いられる前記データ処理プログラムであって、
    前記データ処理装置は、複数の処理手順から構成されるプログラムを記憶している記憶手段を備え、
    前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断する正当性判断ステップと、
    不正なものであると判断される場合に、前記プログラムを無効化する無効化ステップと
    を含むことを特徴とする請求項57に記載のデータ処理プログラム。
  60. 前記データ処理装置において用いられるデータ処理プログラムであって、
    前記データ処理装置は、データを記憶するためのメモリ手段と複数の処理手順から構成されるプログラムに従って動作するプロセッサとを備え、
    前記データ処理プログラムは、
    前記メモリ手段と前記プロセッサとの間において、前記プロセッサから出力される前記メモリ手段宛の転送データが転送制限条件を満たしているか否かを判断し、転送制限条件を満たしていると判断する場合に、前記メモリ手段への転送データの転送を抑制し、転送制限条件を満たしていないと判断する場合に、前記メモリ手段への転送データの転送を行う監視ステップ
    を含むことを特徴とする請求項57に記載のデータ処理プログラム。
  61. 前記データ処理プログラムは、
    コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項57に記載のデータ処理プログラム。
JP2004342650A 2003-11-28 2004-11-26 データ処理装置 Active JP4629416B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004342650A JP4629416B2 (ja) 2003-11-28 2004-11-26 データ処理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003399055 2003-11-28
JP2004342650A JP4629416B2 (ja) 2003-11-28 2004-11-26 データ処理装置

Publications (3)

Publication Number Publication Date
JP2005182774A true JP2005182774A (ja) 2005-07-07
JP2005182774A5 JP2005182774A5 (ja) 2007-11-15
JP4629416B2 JP4629416B2 (ja) 2011-02-09

Family

ID=34797364

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004342650A Active JP4629416B2 (ja) 2003-11-28 2004-11-26 データ処理装置

Country Status (1)

Country Link
JP (1) JP4629416B2 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046887A (ja) * 2006-08-17 2008-02-28 Ntt Docomo Inc Os切替装置及びos切替方法
JP2008123482A (ja) * 2006-10-18 2008-05-29 Matsushita Electric Ind Co Ltd 記憶媒体制御方法
JP2009093660A (ja) * 2007-10-08 2009-04-30 ▲聯▼想(北京)有限公司 オンラインで安全な支払いを実現する方法及びクライアントシステム
JP2010541084A (ja) * 2007-10-02 2010-12-24 インターナショナル・ビジネス・マシーンズ・コーポレーション セキュア・カーネル設計による安全基準の差別化
JP2012089138A (ja) * 2010-10-21 2012-05-10 Arm Ltd 非セキュアドメインの中に表示される対象画像のためのセキュリティ対策
JP2013507698A (ja) * 2009-10-15 2013-03-04 エフティーエス コンピューターテクニク ジーエムビーエイチ 安全性に関連したおよび安全性に関連していないソフトウェア・コンポーネントを1つのハードウェア・プラットフォーム上で実行する方法
US8402280B1 (en) 2009-10-15 2013-03-19 Nvidia Corporation System, method, and computer program product for buffering in association with audio/video digital rights management (DRM) processing
US8868925B2 (en) 2008-12-09 2014-10-21 Nvidia Corporation Method and apparatus for the secure processing of confidential content within a virtual machine of a processor
JP2015525934A (ja) * 2012-07-24 2015-09-07 スプリント コミュニケーションズ カンパニー エル.ピー. 周辺機器にアクセスする信頼できるセキュリティゾーン
JP2019160302A (ja) * 2018-03-06 2019-09-19 ライン プラス コーポレーションLINE Plus Corporation セキュアメッセージ提供方法およびシステム
JP2021530009A (ja) * 2018-06-27 2021-11-04 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 暗号化されたデータに対するセキュアな動作

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272625A (ja) * 1995-03-29 1996-10-18 Toshiba Corp マルチプログラム実行制御装置及び方法
JP2001022598A (ja) * 1999-07-07 2001-01-26 Hitachi Ltd 計算機システム
JP2001256066A (ja) * 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
JP2001318787A (ja) * 2000-05-08 2001-11-16 Toshiba Corp マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
JP2002182560A (ja) * 2000-12-12 2002-06-26 Hitachi Ltd 暗号処理機能を備えた情報サーバ装置
JP2002189633A (ja) * 2000-12-21 2002-07-05 Nec Corp 仮想空間のメモリ保護方法及び装置
JP2002251326A (ja) * 2001-02-22 2002-09-06 Hitachi Ltd 耐タンパ計算機システム
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
JP2003280756A (ja) * 2002-03-25 2003-10-02 Seiko Epson Corp 情報処理装置のデバッグ手段

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08272625A (ja) * 1995-03-29 1996-10-18 Toshiba Corp マルチプログラム実行制御装置及び方法
JP2001022598A (ja) * 1999-07-07 2001-01-26 Hitachi Ltd 計算機システム
JP2001256066A (ja) * 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
JP2001318787A (ja) * 2000-05-08 2001-11-16 Toshiba Corp マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法
JP2002182560A (ja) * 2000-12-12 2002-06-26 Hitachi Ltd 暗号処理機能を備えた情報サーバ装置
JP2002189633A (ja) * 2000-12-21 2002-07-05 Nec Corp 仮想空間のメモリ保護方法及び装置
JP2002251326A (ja) * 2001-02-22 2002-09-06 Hitachi Ltd 耐タンパ計算機システム
JP2002353960A (ja) * 2001-05-30 2002-12-06 Fujitsu Ltd コード実行装置およびコード配布方法
JP2003280756A (ja) * 2002-03-25 2003-10-02 Seiko Epson Corp 情報処理装置のデバッグ手段

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046887A (ja) * 2006-08-17 2008-02-28 Ntt Docomo Inc Os切替装置及びos切替方法
JP2008123482A (ja) * 2006-10-18 2008-05-29 Matsushita Electric Ind Co Ltd 記憶媒体制御方法
JP2010541084A (ja) * 2007-10-02 2010-12-24 インターナショナル・ビジネス・マシーンズ・コーポレーション セキュア・カーネル設計による安全基準の差別化
JP2009093660A (ja) * 2007-10-08 2009-04-30 ▲聯▼想(北京)有限公司 オンラインで安全な支払いを実現する方法及びクライアントシステム
US8868925B2 (en) 2008-12-09 2014-10-21 Nvidia Corporation Method and apparatus for the secure processing of confidential content within a virtual machine of a processor
US8402280B1 (en) 2009-10-15 2013-03-19 Nvidia Corporation System, method, and computer program product for buffering in association with audio/video digital rights management (DRM) processing
JP2013507698A (ja) * 2009-10-15 2013-03-04 エフティーエス コンピューターテクニク ジーエムビーエイチ 安全性に関連したおよび安全性に関連していないソフトウェア・コンポーネントを1つのハードウェア・プラットフォーム上で実行する方法
JP2012089138A (ja) * 2010-10-21 2012-05-10 Arm Ltd 非セキュアドメインの中に表示される対象画像のためのセキュリティ対策
JP2015525934A (ja) * 2012-07-24 2015-09-07 スプリント コミュニケーションズ カンパニー エル.ピー. 周辺機器にアクセスする信頼できるセキュリティゾーン
JP2019160302A (ja) * 2018-03-06 2019-09-19 ライン プラス コーポレーションLINE Plus Corporation セキュアメッセージ提供方法およびシステム
US11881940B2 (en) 2018-03-06 2024-01-23 LINE Plus Corporation Method and system for providing secure message
JP7422490B2 (ja) 2018-03-06 2024-01-26 ライン プラス コーポレーション セキュアメッセージ提供方法およびシステム
JP2021530009A (ja) * 2018-06-27 2021-11-04 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 暗号化されたデータに対するセキュアな動作
JP7201300B2 (ja) 2018-06-27 2023-01-10 インターナショナル・ビジネス・マシーンズ・コーポレーション 暗号化されたデータに対するセキュアな動作

Also Published As

Publication number Publication date
JP4629416B2 (ja) 2011-02-09

Similar Documents

Publication Publication Date Title
KR101037006B1 (ko) 데이터 처리장치
JP6067449B2 (ja) 情報処理装置、情報処理プログラム
US8555089B2 (en) Program execution apparatus, control method, control program, and integrated circuit
JP4886682B2 (ja) データ処理装置
JP5260081B2 (ja) 情報処理装置及びその制御方法
JP4537908B2 (ja) プロセッサ、メモリ、コンピュータシステムおよびシステムlsi
JP4795812B2 (ja) セキュアプロセッサ
JP4660188B2 (ja) スリープ状態における攻撃からの保護
EP2062191B1 (en) System and method for securely restoring a program context from a shared memory
JP2009089390A (ja) 信用済基盤区画(tpm)のための更新可能な鍵束縛を提供する方法及び装置
WO2010041462A1 (ja) 情報処理装置、情報処理方法、情報処理プログラム及び集積回路
JP4629416B2 (ja) データ処理装置
CN107077428A (zh) 保护应用秘密免受操作***攻击
JP2013519929A (ja) 情報処理装置、情報処理システム、ソフトウェアルーチン実行方法およびリモート認証方法
JPWO2011033773A1 (ja) 情報処理装置、管理装置、不正モジュール検知システム、不正モジュール検知方法、不正モジュール検知プログラムを記録している記録媒体、管理方法、管理プログラムを記録している記録媒体および集積回路
JP2016111446A (ja) メモリコントローラ、メモリコントローラの制御方法及びメモリシステム
JP2010128557A (ja) 情報処理システムおよび情報処理プログラム
JP2007310601A (ja) マイクロコンピュータおよびそのソフトウェア保護方法
JP2005182774A5 (ja)
JP5759827B2 (ja) メモリシステム、情報処理装置、メモリ装置、およびメモリシステムの動作方法
JP6987308B1 (ja) 情報処理装置、情報処理方法および情報処理プログラム
JP2010146635A (ja) コンテンツ記録再生装置並びにコンテンツの書き込み及び読み出し方法
JP5304304B2 (ja) セキュリティ強化システム、方法、プログラム及びusbメモリ
JP2004252852A (ja) 情報処理装置及び情報処理方法
JP2011118504A (ja) 記憶装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071002

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100924

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: 20101019

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: 20101111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4629416

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250