(57)【特許請求の範囲】
【請求項１】
保護対象のセキュアリソースの利用が許可されセキュアオペレーティングシステムが動作するセキュアモードと、保護対象でない通常リソースの利用のみが許可され通常オペレーティングシステムが動作する通常モードとを切り替えて、プログラムを実行するデータ処理装置であって、
一連の処理を実行するために対になって動作する２つのプログラムのうち、前記通常リソースを利用する１つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、
前記２つのプログラムのうち、前記セキュアリソースを利用する１つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段と、
セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断手段と、
セキュアモードにおいて、前記呼出命令であると判断される場合に、前記通常プログラムを識別する識別情報を出力する出力手段と、
前記呼出命令であると判断される場合に、前記セキュアリソースを前記通常モードで利用できないよう保護し、前記セキュアオペレーティングシステムの動作を中断させ、前記通常オペレーティングシステムを起動することによりセキュアモードから通常モードに切り替える切替手段と、
通常モードにおいて、前記識別情報を受け取る受取手段と、
通常モードにおいて、受け取った前記識別情報により特定される前記通常プログラムを前記通常記憶手段から読み出す読出手段と、
通常モードにおいて、読み出した通常プログラムに従って動作する処理手段とを備える
ことを特徴とするデータ処理装置。
【請求項２】
前記データ処理装置は、セキュアモード及び通常モードの両方において、アクセスが許可される共有記憶領域を備え、
前記出力手段は、セキュアモードにおいて、前記識別情報を前記共有記憶領域に書き込むことにより、前記識別情報を出力し、
前記受取手段は、通常モードにおいて、前記共有記憶領域から前記識別情報を読み出すことにより、前記識別情報を受け取る
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出す
ことを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記通常プログラムを構成する１つの処理手順は、ライブラリを構成する複数の関数を含み、他の処理手順は、前記複数の関数のうちのいずれかを呼び出し、
前記処理手段は、前記他の処理手順に従って動作する場合に、当該他の処理手順により呼び出される関数に従って動作する
ことを特徴とする請求項２に記載のデータ処理装置。
【請求項５】
前記データ処理装置は、さらに、
セキュアモードにおいて、前記セキュアプログラムの前記セキュア記憶手段への書き込みを示す書込指示を受け取る指示取得手段と、
セキュアモードにおいて、前記書込指示を取得した場合に、前記セキュア記憶手段に前記セキュアプログラムを書き込み、前記書込みが終了したことを示す書込終了情報を出力するセキュアロード手段とを含み、
前記切替手段は、さらに、前記書込終了情報が出力された場合、セキュアモードから通常モードへ切り替え、
前記データ処理装置は、さらに、通常モードにおいて、前記書込終了情報を受け取り、前記通常記憶手段に前記通常プログラムを書き込む通常ロード手段とを含む
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
前記読出手段は、さらに、通常モードにおいて、前記通常ロード手段により前記通常プログラムが前記通常記憶手段に書き込まれた場合に、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶する
ことを特徴とする請求項５に記載のデータ処理装置。
【請求項７】
前記データ処理装置は、さらに、
セキュアモードにおいて、前記セキュアプログラムの削除を指示する削除指示を取得する削除指示取得手段と、
前記削除指示を取得した場合に、セキュアモードにおいて、前記セキュアプログラムを前記セキュア記憶手段から削除し、前記削除が終了したことを示す削除終了情報を出力するセキュア削除手段とを含み、
前記切替手段は、さらに、前記削除終了情報が出力された場合、セキュアモードから通常モードへ切り替え、
前記データ処理装置は、さらに、
通常モードにおいて、前記削除終了情報を取得し、前記通常記憶手段から前記通常プログラムを削除する通常削除手段を含む
ことを特徴とする請求項５に記載のデータ処理装置。
【請求項８】
前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出す
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項９】
前記データ処理装置は、さらに、
前記処理手段を含む当該データ処理装置の備える１以上のデバイスを初期化する初期化手順及び前記セキュアオペレーティングシステムを起動する起動手順を含むブートプログラムを記憶しているブートプログラム記憶手段と、
前記ブートプログラム記憶手段から、前記ブートプログラムを読み出し、読み出した前記ブートプログラムに従って、前記デバイスを初期化し、初期化の完了後に、セキュアオペレーティングシステムを起動する初期化手段とを備える
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項１０】
前記データ処理装置は、さらに、
通常モードにおいて、前記処理手段による処理結果と前記セキュアプログラムを識別するセキュア識別情報とを出力する通常出力手段を含み、
前記切替手段は、さらに、前記処理結果が出力された場合、通常モードからセキュアモードへ切り替え、
前記データ処理装置は、さらに、
セキュアモードにおいて、前記処理結果と前記セキュア識別情報とを受け取るセキュア受取手段と、
受け取った前記セキュア識別情報により特定されるセキュアプログラムを前記セキュア記憶手段から読み出すセキュア読出手段とを含み、
前記処理手段は、さらに、セキュアモードにおいて、前記処理結果を用いて、前記セキュアプログラムに従って動作する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項１１】
前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースと前記処理手段とを切断する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項１２】
前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースに保持されているセキュア情報を暗号化する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項１３】
前記セキュアリソースに保持されている前記セキュア情報は、セキュアモードにおいて実行され、命令コード部分とデータ部分とスタック部分から構成されるプログラムを含んでおり、
前記切替手段は、セキュアモードから通常モードに切り替える際に、前記命令コード部分を暗号化する
ことを特徴とする請求項１２に記載のデータ処理装置。
【請求項１４】
前記セキュアリソースに保持されている前記セキュア情報は、セキュアモードにおいて実行され、命令コード部分とデータ部分とスタック部分から構成されるプログラムを含んでおり、
前記切替手段は、セキュアモードから通常モードに切り替える際に、前記データ部分を暗号化する
ことを特徴とする請求項１２に記載のデータ処理装置。
【請求項１５】
前記セキュアリソースに保持されている前記セキュア情報は、セキュアモードにおいて実行され、命令コード部分とデータ部分とスタック部分から構成されるプログラムを含んでおり、
前記切替手段は、セキュアモードから通常モードに切り替える際に、前記スタック部分を暗号化する
ことを特徴とする請求項１２に記載のデータ処理装置。  
【請求項１６】
前記データ処理装置は、さらに、前記処理手段の動作を監視し、操作するデバッグ装置からデバッグ操作信号を受け付けるデバッグ受付手段を含み、
前記切替手段は、セキュアモードから通常モードに切り替える際に、前記処理手段と前記デバッグ受付手段とを接続し、通常モードからセキュアモードに切り替える際に、前記処理手段と前記デバッグ受付手段とを切断する
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項１７】
前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出す
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項１８】
保護対象のセキュアリソースの利用が許可されセキュアオペレーティングシステムが動作するセキュアモードと、保護対象でない通常リソースの利用のみが許可され通常オペレーティングシステムが動作する通常モードとを切り替えて、プログラムを実行するデータ処理装置において用いられるデータ処理方法であって、
前記データ処理装置は、一連の処理を実行するために対になって動作する２つのプログラムのうち、前記通常リソースを利用する１つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、前記２つのプログラムのうち、前記セキュアリソースを利用する１つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段とを備え、
前記データ処理方法は、
セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断ステップと、
セキュアモードにおいて、前記呼出命令であると判断される場合に、当該呼出命令により呼び出される前記通常プログラムを識別する識別情報を出力する出力ステップと、
前記呼出命令であると判断される場合に、前記セキュアリソースを前記通常モードで利用できないよう保護し、前記セキュアオペレーティングシステムの動作を中断させ、前記通常オペレーティングシステムを起動することによりセキュアモードから通常モードに切り替える切替ステップと、
通常モードにおいて、前記識別情報を受け取る受取ステップと、
通常モードにおいて、受け取った前記識別情報により識別される前記通常プログラムを前記通常記憶手段から読み出す読出ステップと、
通常モードにおいて、読み出した通常プログラムに従って動作する処理ステップと
を含むことを特徴とするデータ処理方法。
【請求項１９】
保護対象のセキュアリソースの利用が許可されセキュアオペレーティングシステムが動作するセキュアモードと、保護対象でない通常リソースの利用のみが許可され通常オペレーティングシステムが動作する通常モードとを切り替えて、プログラムを実行するデータ処理装置において用いられるデータ処理プログラムであって、
前記データ処理装置は、一連の処理を実行するために対になって動作する２つのプログラムのうち、前記通常リソースを利用する１つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、前記２つのプログラムのうち、前記セキュアリソースを利用する１つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段とを備え、
前記データ処理プログラムは、
セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断ステップと、
セキュアモードにおいて、前記呼出命令であると判断される場合に、当該呼出命令により呼び出される前記通常プログラムを識別する識別情報を出力する出力ステップと、
前記呼出命令であると判断される場合に、前記セキュアリソースを前記通常モードで利用できないよう保護し、前記セキュアオペレーティングシステムの動作を中断させ、前記通常オペレーティングシステムを起動することによりセキュアモードから通常モードに切り替える切替ステップと、
通常モードにおいて、前記識別情報を受け取る受取ステップと、
通常モードにおいて、受け取った前記識別情報により識別される前記通常プログラムを前記通常記憶手段から読み出す読出ステップと、
通常モードにおいて、読み出した通常プログラムに従って動作する処理ステップと
を含むことを特徴とするデータ処理プログラム。
【請求項２０】
保護対象のセキュアリソースの利用が許可されセキュアオペレーティングシステムが動作するセキュアモードと、保護対象でない通常リソースの利用のみが許可され通常オペレーティングシステムが動作する通常モードとを切り替えて、プログラムを実行するデータ処理装置において用いられるデータ処理プログラムを記録するコンピュータ読み取り可能な記録媒体であって、
前記データ処理装置は、一連の処理を実行するために対になって動作する２つのプログラムのうち、前記通常リソースを利用する１つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、前記２つのプログラムのうち、前記セキュアリソースを利用する１つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段とを備えており、
前記データ処理プログラムは、
セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断ステップと、
セキュアモードにおいて、前記呼出命令であると判断される場合に、当該呼出命令により呼び出される前記通常プログラムを識別する識別情報を出力する出力ステップと、
前記呼出命令であると判断される場合に、前記セキュアリソースを前記通常モードで利用できないよう保護し、前記セキュアオペレーティングシステムの動作を中断させ、前記通常オペレーティングシステムを起動することによりセキュアモードから通常モードに切り替える切替ステップと、
通常モードにおいて、前記識別情報を受け取る受取ステップと、
通常モードにおいて、受け取った前記識別情報により識別される前記通常プログラムを前記通常記憶手段から読み出す読出ステップと、
通常モードにおいて、読み出した通常プログラムに従って動作する処理ステップと
を含む
ことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアリソースにアクセス可能なセキュアモードと、セキュアリソース以外の通常リソースにのみアクセス可能な通常モードとを切り替えて、プログラムを実行する装置において、セキュアモードで実行されるプログラムと通常モードで実行されるプログラムとを対応して動作させる技術に関する。
【背景技術】
【０００２】
近年、様々な機器において、音楽及び映像を含むデジタルコンテンツが取り扱われるようになっている。これらの機器は、デジタルコンテンツを劣化させることなく複製、編集することが可能である。しかし、著作権の観点から、これらのデジタルコンテンツは、保護されて扱われる必要がある。
従来技術によると、保護される必要のあるセキュアデータ及び保護される必要のあるセキュアアプリケーションへのアクセスが可能なセキュアモードと、これらのセキュアデータ及びセキュアアプリケーションにアクセスすることができない通常モードとをモニタによって切り替えて実行するデータ処理装置が開示されている。この技術よると、通常モードにおいて動作するアプリケーションは、通常モードで動作するオペレーティングシステムを介して、セキュアアプリケーションへ処理を依頼する。オペレーティングシステムは、モニタへ実行モードの切替を依頼し、モニタは、実行モードを切り替える。セキュアアプリケーションは、依頼された処理を行い、処理結果をセキュア実行モードで動作するセキュアオペレーティングシステムを介して、アプリケーションへ返却する。セキュアオペレーティングシステムは、モニタに実行モードの切替を依頼し、モニタは実行モードを切り替える。このような構成により、セキュアモードと通常モードとを切り替えて実行することで、通常モードで動作するアプリケーションから、直接セキュアデータやセキュアアプリケーションへアクセスすることはできない。従って、セキュアデータ及びセキュアアプリケーションを保護することができる。
【非特許文献１】Ａ  Ｎｅｗ  Ｆｏｕｎｄａｔｉｏｎ  ｆｏｒ  ＣＰＵ  Ｓｙｓｔｅｍｓ  Ｓｅｃｕｒｉｔｙ（平成１５年１１月２０日検索、ＵＲＬ：http://www.arm.com/armtech.nsf/htmlall/FC4C07580E29428080256D1A004A2345/$File/TrustZone_WP.pdf?OpenElement）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来技術の示す方法では、セキュアモードで使用するデータ及びプログラムなどを記憶するメモリを、通常モードで使用するメモリとは別個に確保する必要がある。セキュアモードで使用されるメモリは、不正なアクセスから当該メモリを保護する保護機構を必要とする。従って、セキュアモードで使用されるメモリが増加すると、保護機構に係る負荷が大きくなり、保護機構の規模を大きくする必要が生じる。ゆえに、セキュアモードで使用されるメモリを削減することができるデータ処理装置に対する要望がある。
【０００４】
そこで本発明はかかる問題点に鑑みてなされたものであり、セキュアモードで使用される、メモリを削減することができるデータ処理装置、データ処理方法、データ処理プログラム及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために本発明は、保護対象のセキュアリソースの利用が許可されるセキュアモードと、保護対象外の通常リソースの利用のみが許可される通常モードとを切り替えて、プログラムを実行するデータ処理装置であって、前記通常リソースを利用する１つ以上の処理手順から構成される通常プログラムを記憶している通常記憶手段と、前記セキュアリソースを利用する１つ以上の処理手順から構成され、少なくとも前記通常プログラムを呼び出す呼出命令を含むセキュアプログラムを記憶しているセキュア記憶手段と、セキュアモードにおいて、次に実行すべき命令が、前記呼出命令であるか否かを判断する判断手段と、セキュアモードにおいて、前記呼出命令であると判断される場合に、当該呼出命令により呼び出される前記通常プログラムを示す識別情報を出力する出力手段と、前記呼出命令であると判断される場合に、セキュアリソースを保護して、セキュアモードから通常モードに切り替える切替手段と、通常モードにおいて、前記識別情報を受け取る受取手段と、通常モードにおいて、受け取った前記識別情報により示される前記通常プログラムを前記通常記憶手段から読み出す読出手段と、通常モードにおいて、読み出した通常プログラムに従って動作する処理手段とを備えることを特徴とする。
【発明の効果】
【０００６】
上記の構成によると、前記セキュアプログラムは、前記呼出命令を含み、次に実行すべき命令が、前記呼出し命令である場合、切替手段は、セキュアモードから通常モードに切り替え、通常モードにおいて、受取手段は、前記識別情報を受け取り、読出手段は、受け取った前記識別情報により示される前記通常プログラムを前記通常記憶手段から読み出し、処理手段は、読み出した通常プログラムに従って動作する。従って、前記呼出し命令を実行することで、前記セキュアプログラムは、通常モードで動作する通常プログラムへ、処理を依頼することができる。つまり、セキュアリソースを利用しない処理を通常プログラムに実行させることにより、セキュアプログラム自体のプログラムサイズが減少する。さらに、セキュアモードにおいて、セキュアプログラムが使用するメモリを減少させることができる。
【０００７】
前記データ処理装置において、前記切替手段は、前記セキュアプログラムを制御するセキュアオペレーティングシステムを中断させ、前記通常プログラムを制御する通常オペレーティングシステムを起動することにより、セキュアモードから通常モードに切り替える。
この構成によると、前記切替手段は、前記セキュアオペレーティングシステムを中断させた後、通常オペレーティングシステムを起動する。このため、当該データ処理装置は、通常モードで動作中には、前記セキュアリソースへのアクセスルートを完全に切断し、セキュアモードと通常モードとを排他的に実現することができる。
【０００８】
また、前記データ処理装置は、セキュアモード及び通常モードの両方において、アクセスが許可される共有記憶領域を備え、前記出力手段は、セキュアモードにおいて、前記識別情報を前記共有記憶領域に書き込むことにより、前記識別情報を出力し、前記受取手段は、通常モードにおいて、前記共有記憶領域から前記識別情報を読み出すことにより、前記識別情報を受け取ることを特徴とする。
【０００９】
この構成によると、前記共有記憶領域は、通常モード及びセキュアモードにおいてアクセス可能である。従って、本発明のデータ処理装置は、セキュアモードと通常モードとを排他的に実現して、セキュアリソースを保護しながら、セキュアモードと通常モードとの間で確実に情報の授受を行うことができる。
また、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出すことを特徴とする。
【００１０】
この構成によると、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しているため、受け取った識別情報対応する位置情報を用いて、確実かつ迅速に、前記通常プログラムを読み出すことができる。
前記データ処理装置において、前記通常プログラムを構成する１の処理手順は、ライブラリを構成する複数の関数を含み、他の処理手順は、前記複数の関数のうちのいずれかを呼び出し、前記処理手段は、前記他の処理手順に従って動作する場合に、当該他の処理手順により呼び出される関数に従って動作することを特徴とする。
【００１１】
この構成によると、前記通常プログラムを構成する１つの処理手順は、ライブラリを構成する複数の関数を含み、他の処理手順は、前記複数の関数のうちのいずれかを呼び出す。従って、前記セキュアプログラムは、ライブラリを構成する関数を使用する処理を前記通常プログラムへ依頼することができる。このため、セキュアモードにおいて、メモリ上にライブラリを保持する必要がなくなる。
【００１２】
前記データ処理装置は、さらに、セキュアモードにおいて、前記セキュアプログラムの前記セキュア記憶手段への書き込みを示す書込指示を受け取る指示取得手段と、セキュアモードにおいて、前記書込指示を取得した場合に、前記セキュア記憶手段に前記セキュアプログラムを書き込み、前記書込みが終了したことを示す書込終了情報を出力するセキュアロード手段とを含み、前記切替手段は、さらに、前記書込終了情報が出力された場合、セキュアモードから通常モードへ切り替え、前記データ処理装置は、さらに、通常モードにおいて、前記書込終了情報を受け取り、前記通常記憶手段に前記通常プログラムを書き込む通常ロード手段とを含むことを特徴とする。
【００１３】
この構成によると、指示取得手段が、書込指示を取得した場合に、前記セキュアロード手段がセキュアモードにおいて、前記セキュアプログラムの前記セキュア記憶手段への書き込みを示す書込指示を受け取ると、前記セキュア記憶手段に前記セキュアプログラムを書き込み、前記通常ロード手段が前記通常記憶手段に前記通常プログラムを書き込む。このようにすることで、前記セキュアプログラムの実行中には、常に、前記通常記憶手段に前記通常プログラムが記憶されており、セキュアプログラム含まれる呼出し命令が実行される際には、速やかに前記通常プログラムの実行に移ることができる。
【００１４】
前記データ処理装置を構成する前記読出手段は、さらに、通常モードにおいて、前記通常ロード手段により前記通常プログラムが前記通常記憶手段に書き込まれた場合に、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶することを特徴とする。
この構成では、前記読出手段は、前記通常プログラムが前記通常記憶手段に書き込まれた場合に、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶する。このようにすることで、前記セキュアプログラムのロード直後から、前記読出手段は前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶している。従って、セキュアプログラム含まれる呼出し命令が実行される際には、速やかに前記通常プログラムを読み出すことができる。
【００１５】
前記データ処理装置は、さらに、セキュアモードにおいて、前記セキュアプログラムの削除を指示する削除指示を取得する削除指示取得手段と、前記削除指示を取得した場合に、セキュアモードにおいて、前記セキュアプログラムを前記セキュア記憶手段から削除し、前記削除が終了したことを示す削除終了情報を出力するセキュア削除手段とを含み、前記切替手段は、さらに、前記削除終了情報が出力された場合、セキュアモードから通常モードへ切り替え、前記データ処理装置は、さらに、通常モードにおいて、前記削除終了情報を取得し、前記通常記憶手段から前記通常プログラムを削除する通常削除手段を含むことを特徴とする。
【００１６】
この構成によると、削除指示取得手段が前記セキュアプログラムの削除を指示する削除指示を取得すると、セキュア削除手段が、前記セキュアプログラムを前記セキュア記憶手段から削除し、通常削除手段が、前記通常記憶手段から前記通常プログラムを削除する。
従って、前記セキュアプログラムがロードされていない間は、前記通常プログラムもロードする必要がないため、このようにすることで、前記通常プログラムによって、通常モードで使用するメモリ領域を無駄にすることを防ぐことができる。
【００１７】
前記データ処理装置において、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出すことを特徴とする。
この構成によると、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しているため、受け取った識別情報対応する位置情報を用いて、確実かつ迅速に、前記通常プログラムを読み出すことができる。
【００１８】
前記データ処理装置は、さらに、前記処理手段を含む当該データ処理装置の備える１以上のデバイスを初期化する初期化手順及び前記セキュアオペレーティングシステムを起動する起動手順を含むブートプログラムを記憶しているブートプログラム記憶手段と、前記ブートプログラム記憶手段から、前記ブートプログラムを読み出し、読み出した前記ブートプログラムに従って、前記デバイスを初期化し、初期化の完了後に、セキュアオペレーティングシステムを起動する初期化手段とを備えることを特徴とする。
【００１９】
この構成によると、前記初期化手は、段電源投入時に前記ブートプログラムに従って、前記デバイスを初期化し、初期化の完了後に、セキュアオペレーティングシステムを起動する。このように、本発明のデータ処理装置は、通常モードで実行されるプログラムを起動する前に、セキュアオペレーティングシステムを起動することで、起動時に、通常モードで実行されるプログラムの不正な動作により、セキュアモードで実行されるプログラムやセキュアリソースの不正な利用を防ぐことができる。
【００２０】
前記データ処理装置は、さらに、通常モードにおいて、前記処理手段による処理結果と前記セキュアプログラムを示すセキュア識別情報とを出力する通常出力手段を含み、前記切替手段は、さらに、前記処理結果が出力された場合、通常モードからセキュアモードへ切り替え、前記データ処理装置は、さらに、セキュアモードにおいて、前記処理結果と前記セキュア識別情報とを受け取るセキュア受取手段と、受け取った前記セキュア識別情報に対応する前記セキュアプログラムを前記セキュア記憶手段から読み出すセキュア読出手段とを含み、前記処理手段は、さらに、セキュアモードにおいて、前記処理結果を用いて、前記セキュアプログラムに従って動作することを特徴とする。
【００２１】
この構成では、通常出力手段は、通常モードにおいて、前記処理手段による処理結果と前記セキュアプログラムを示すセキュア識別情報とを出力し、セキュア受取手段は、セキュアモードにおいて、前記処理結果と前記セキュア識別情報とを受け取り、セキュア読出手段は、受け取った前記セキュア識別情報に対応する前記セキュアプログラムを前記セキュア記憶手段から読み出し、前記処理手段は、さらに、セキュアモードにおいて、前記処理結果を用いて、前記セキュアプログラムに従って動作する。従って、本発明のデータ処理装置では、セキュアモードで実行される前記セキュアプログラムにより依頼された処理を、通常モードにおいて前記処理手段が前記通常プログラムに従って実行し、処理結果を正確に、前記セキュアプログラムへ返すことができる。
【００２２】
また、前記データ処理装置において、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースと前記処理手段とを切断することを特徴とする。
この構成によると、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースと前記処理手段とを切断するため、通常モードにおいて、前記処理手段は、前記セキュアリソースにアクセスすることができない。従って、前記セキュアリソースの安全を確保することができる。
【００２３】
前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースに保持されているセキュア情報を暗号化することを特徴とする。
この構成では、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記セキュアリソースに保持されているセキュア情報を暗号化するため、通常モードにおいて、前記処理手段は、前記セキュアデータを利用することができない。従って、通常モードにおいて、前記セキュアリソースの保持するセキュアデータの安全を確保することができる。
【００２４】
前記データ処理装置において、前記セキュアリソースに保持されている前記セキュア情報は、セキュアモードにおいて実行され、命令コード部分とデータ部分とスタック部分から構成されるプログラムを含んでおり、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記命令コード部分を暗号化することを特徴とする。  
また、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記データ部分を暗号化するとてもよい。
【００２５】
また、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記スタック部分を暗号化するとしてもよい。
この構成によると、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記命令コード部分を暗号化する。又は、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記データ部分を暗号化する。又は、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記スタック部分を暗号化する。  
【００２６】
このように、前記プログラムのうち、保護する必要のある部分だけを暗号化することで、暗号化に係る処理負荷を軽くすることができる。
前記データ処理装置は、さらに、前記処理手段の動作を監視し、操作するデバッグ装置からデバッグ操作信号を受け付けるデバッグ受付手段を含み、前記切替手段は、セキュアモードから通常モードに切り替える際に、前記処理手段と前記デバッグ受付手段とを接続し、通常モードからセキュアモードに切り替える際に、前記処理手段と前記デバッグ受付手段とを切断することを特徴とする。
【００２７】
この構成によると、前記切替手段は、通常モードからセキュアモードに切り替える際に、前記処理手段と前記デバッグ受付手段とを切断するため、本発明のデータ処理装置は、セキュアモードで動作中には、外部のデバッグ装置に動作の監視及び操作されることがないため、前記デバッグ装置から、前記セキュアリソースを保護することができる。
本発明のデータ処理装置において、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しており、受け取った前記識別情報に対応する位置情報により示される存在位置から前記通常プログラムを読み出す構成であっても良い。
【００２８】
この構成によると、前記読出手段は、前記識別情報と前記通常記憶手段における前記通常プログラムの存在位置を示す位置情報とを対応付けて記憶しているため、受け取った識別情報対応する位置情報を用いて、確実かつ迅速に、前記通常プログラムを読み出すことができる。
本発明は、第１オペレーティングシステムと第２オペレーティングシステムとを切り替え、各オペレーティングシステムにおいて生成されるプロセスを実行状態、実行待ち状態、休止状態のいずれかに遷移させてプロセスを実行し管理する前記データ処理装置であって、前記第１オペレーティングシステムにおいて、第１プロセスを生成する第１生成手段と、前記第２オペレーティングシステムにおいて、前記第１プロセスと対応する第２プロセスを生成する第２生成手段と、前記第１オペレーティングシステムにおいて、前記第１プロセスの状態遷移を検出する第１検出手段と、前記第１オペレーティングシステムにおいて、検出された状態遷移を示す遷移情報を出力する第１出力手段と、前記第１オペレーティングシステムを前記第２オペレーティングシステムに切り替えるＯＳ切替手段と、前記第２オペレーティングシステムにおいて、前記遷移情報を取得する第２取得手段と、取得した前記遷移情報に従って、前記第２プロセスの状態を遷移させる第２遷移手段とを備えることを特徴とするデータ処理装置でもある。
【００２９】
この構成によると、前記第１オペレーティングシステムにおいて、前記第１出力手段は、前記遷移情報を出力し、ＯＳ切替手段は、前記第１オペレーティングシステムを前記第２オペレーティングシステムに切り替える第２オペレーティングシステムへ切り替え、第２オペレーティングシステムにおいて、第２遷移手段は、前記遷移情報に従って、前記第２プロセスの状態を遷移させる。従って、排他的に実行される２つのオペレーティングシステムが動作する前記データ処理装置において、前記第１オペレーティングシステムにより制御される前記第１プロセスの動作状態を、前記第２プロセスを介して前記第２オペレーティングシステムにおいても監視することができる。
【００３０】
前記データ処理装置は、さらに、前記第２オペレーティングシステムにおいて、前記第２プロセスの状態遷移を検出する第２検出手段と、前記第２オペレーティングシステムにおいて、検出された状態遷移を示す遷移情報を出力する第２出力手段とを含み、前記ＯＳ切替手段は、さらに、前記第２オペレーティングシステムを前記第１オペレーティングシステムに切り替え、前記データ処理装置は、さらに、前記第１オペレーティングシステムにおいて、前記遷移情報を取得する第１取得手段と、取得した前記遷移情報に従って、前記第１プロセスの状態を遷移させる第１遷移手段とを含むことを特徴とする。
【００３１】
この構成によると、前記第２出力手段は、前記第２オペレーティングシステムにおいて、前記遷移情報を出力し、前記第１遷移手段は、前記遷移情報に従って、前記第１プロセスの状態を遷移させる。これにより、前記第２オペレーティングシステムにより制御される前記第２プロセスの動作状態を、前記第１プロセスを介して、前記第１オペレーティングシステムにおいても監視することができる。従って、前記第１オペレーティングシステム及び前記第２オペレーティングシステムは、それぞれの制御する第１プロセス及び第２プロセスの動作状態を相互に監視することができる。
【００３２】
さらに、前記データ処理装置は、第１オペレーティングシステム及び第２オペレーティングシステムの両方において、アクセス可能な共有記憶領域を備え、前記第１出力手段は、前記共有記憶領域に前記遷移情報を書き込むことにより、前記遷移情報を出力し、前記第２取得手段は、前記共有記憶領域から前記遷移情報を読み出すことによって、前記遷移情報を取得することを特徴とする。
【００３３】
この構成によると、前記第１出力手段及び前記第２取得手段は、第１オペレーティングシステム及び第２オペレーティングシステムの両方において、アクセス可能な前記共有記憶領域を介して前記遷移情報受け渡す。前記共有記憶領域は、第１オペレーティングシステム及び第２オペレーティングシステムの両方において、アクセス可能であるので、本発明のデータ処理装置は、第１オペレーティングシステムと第２オペレーティングシステムとを排他的に実行しながら、第１オペレーティングシステムから第２オペレーティングシステムへ情報を受け渡すことができる。
【００３４】
前記データ処理装置を構成する前記第２出力手段は、前記共有記憶領域に前記遷移情報を書き込むことにより、前記遷移情報を出力し、前記第１取得手段は、前記共有記憶領域から前記遷移情報を読み出すことによって、前記遷移情報を取得することを特徴とする。
従って、第２オペレーティングシステムと第１オペレーティングシステムとを排他的に実行しながら、第２オペレーティングシステムから第１オペレーティングシステムへ情報を受け渡すことができる。
【００３５】
また、前記データ処理装置は、前記第２オペレーティングシステムにおいて管理されて動作するデバイスを含み、前記第２プロセスは、前記デバイスの駆動を制御するデバイス駆動プログラムであり、前記第２検出手段は、前記デバイスの動作に伴う前記第２プロセスの状態遷移を検出することを特徴とする。
この構成によると、前記第２プロセスは、前記デバイスの駆動を制御するデバイス駆動プログラムであり、前記第２検出手段は、前記デバイスの動作に伴う前記第２プロセスの状態遷移を検出する。従って、前記第１プロセスも、前記デバイス駆動プログラムの状態遷移に伴って招待遷移し、前記第１オペレーティングシステムにおいても、前記デバイスの駆動状態を監視することができる。
【００３６】
前記第１オペレーティングシステムにおいて、前記第１プロセスが、休止状態から実行状態に遷移した場合、前記データ処理装置は、前記デバイスへの処理依頼の重複を回避する排他処理を行う前記第１プロセスに従って動作し、前記第１オペレーティングシステムにおいて、前記第１出力手段は、前記排他処理が終了した後に前記遷移情報を出力することを特徴とする。
【００３７】
通常、このような排他処理は、前記デバイスの駆動を制御するデバイス駆動プログラムにより実行されるが、この構成によると、前記データ処理装置において、前記第１プロセスが、前記デバイスへの処理依頼の重複を回避する排他処理を行ったあと前記第１オペレーティングシステムにおいて、前記第１出力手段は、前記遷移情報を出力する。出力された前記遷移情報により、前記第２プロセスは実行状態に遷移し、前記デバイスの駆動の制御を開始する。第１オペレーティングシステムと第２オペレーティングシステムにより使用されるメモリ空間が個別に必要であり、特に、第２オペレーティングシステムにより使用されるメモリを外部のアクセスから保護する必要がある場合を想定すると、排他処理を前記第１プロセスが行うため、前記第２プロセスは、排他処理を行う必要がなくなる。従って、排他処理のために、前記第２プロセスが使用するメモリ領域が減少する。このため、保護する必要のあるメモリを削減することになり、これらのメモリを外部から保護する保護機構の負荷を軽減することができる。
【００３８】
前記データ処理装置は、さらに、第１オペレーティングシステム及び第２オペレーティングシステムにおいて、割込の発生を検出する割込検出手段と、前記第１オペレーティングシステムにおいて、割込が検出された場合、割込発生要因を調査する割込調査手段と、前記第１オペレーティングシステムにおいて、割込調査手段により、前記デバイスによる割込であると判断された場合、前記第１プロセスを休止状態から実行状態に遷移させる割込遷移手段とを含むことを特徴とする。
【００３９】
さらに、前記データ処理装置は、前記第２オペレーティングシステムにおいて、割込が検出された場合、割込の検出を示す割込通知情報を出力する通知手段を含み、前記ＯＳ切替手段は、前記第２オペレーティングシステムを前記第１オペレーティングシステムに切り替え、前記第１取得手段は、さらに、前記第１オペレーティングシステムにおいて、前記割込通知情報を取得し、前記割込調査手段は、さらに、第１オペレーティングシステムにおいて、前記割込通知情報を取得した場合、割込発生要因を調査する構成である。
【００４０】
この構成によると、前記第１オペレーティングシステムにおいて、割込が検出された場合、割込調査手段が、割込発生要因を調査する。また、前記第２オペレーティングシステムにおいて、割込が検出された場合、前記通知手段が割込の検出を示す割込通知情報を出力し、第１オペレーティングシステムにおいて、割込調査手段が、割込発生要因を調査する。
【００４１】
このようにすることで、第２オペレーティングシステムの管理下に割込調査手段を供える必要がなくなる。従って、本発明のデータ処理装置において、一つだけ、割込調査手段を備えればよい。
前記データ処理装置において、前記通知手段は、割込が検出された場合、前記割込検出手段に対して、割込の検出を停止させ、前記第１取得手段は、前記割込通知情報を取得した場合、前記割込検出手段に対して、前記停止を解除することを特徴とする。
【００４２】
この構成によると、前記通知手段は、割込が検出された場合、前記割込検出手段に対して、割込の検出を停止させ、前記第１取得手段は、前記割込通知情報を取得した場合、前記割込検出手段に対して、前記停止を解除する。従って、前記通知手段から出力された割込通知情報を前記第１取得手段が取得するまでの間、前記割込検出手段によって、前記第２オペレーティングシステムから前記第１オペレーティングシステムへの切り替えの動作が妨害されることがない。また、第２オペレーティングシステムから第１オペレーティングシステムへ切り替わるまでの間に、前記割込検出手段が、同一の割り込みを重複して検出することを、防ぐことができる。
【００４３】
本発明は、プログラムに従って動作する前記データ処理装置であって、複数の処理手順から構成されるプログラムを記憶している記憶手段と、前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断する正当性判断手段と、不正なものであると判断される場合に、前記プログラムを無効化する無効化手段とを備えることを特徴とするデータ処理装置でもある。
【００４４】
この構成によると、前記正当性判断手段は、前記プログラムが不正なものであるか否かを判断し、前記無効化手段不正なものであると判断される場合に、前記プログラムを無効化するため、本発明のデータ処理装置において、不正なプログラムの実行を防止することができる。
前記データ処理装置において、前記正当性判断手段は、前記記憶手段に記憶されている前記プログラムを示すプログラム識別情報を取得するプログラム情報取得部と、無効化されたプログラムを示す無効化識別情報を取得する無効化情報取得部と、取得した前記プログラム識別情報と取得した前記無効化識別情報とが一致するか否かを判断する判断部とを含み、一致すると判断される場合に、前記プログラムが不正であると決定することを特徴とする。
【００４５】
上記の構成では、前記情報取得部取得した前記プログラム識別情報と前記無効化情報取得部取得した前記無効化識別情報とが一致するか否かによって、容易に当該プログラムが不正であるか否かを決定することができる。
本発明のデータ処理装置に含まれる前記プログラム情報取得部は、前記プログラムを示すプログラム識別情報を記憶している識別情報記憶部と、前記識別情報記憶部から前記プログラム識別情報を読み出すことにより取得する読出部とを含み、前記無効化情報取得部は、無効化されたプログラムを示す無効化識別情報を記憶している無効化情報記憶部と、前記無効化情報記憶部から前記無効化識別情報を読み出すことにより取得する読出部とを含むことを特徴とする。
【００４６】
この構成によると、前記プログラム情報取得部は、予め前記プログラムを示すプログラム識別情報を記憶している前記識別情報記憶部から、迅速に、前記プログラム識別情報を取得することができる。また、前記無効化情報取得部は、予め、無効化されたプログラムを示す無効化識別情報を記憶している前記無効化情報記憶部から、迅速に前記無効化識別情報を取得することができる。
【００４７】
前記データ処理装置は、前記正当性判断手段が、前記プログラムに割り当てられた公開鍵の正当性を証明する公開鍵証明書に基づいて、前記プログラムが不正なものであるか否かを判断することを特徴とする。
この構成によると、前記正当性判断手段は、前記プログラムに割り当てられた公開鍵の正当性を証明する前記公開鍵証明書に基づいて、前記判断を行う。公的な第三者機関により発行された公開鍵証明書を用いることで、前記プログラムの正当性をより確実に判定することができる。
【００４８】
前記データ処理装置において、前記正当性判断手段は、前記公開鍵を識別する公開鍵識別情報を含む前記公開鍵証明書を記憶している証明書記憶部と、前記公開鍵証明書から前記公開鍵識別情報を取得する公開鍵情報取得部と、無効化された公開鍵を示す無効化識別情報を記憶している無効化情報記憶部と、前記無効化情報記憶部から無効化識別情報を読み出す無効化情報読出部と、取得した前記公開鍵識別情報と読み出した前記無効化識別情報とが一致するか否かを判断する判断部とを含み、一致すると判断される場合に、前記プログラムが不正であると決定することを特徴とする。
【００４９】
上記の構成によると、前記判断部は、前記証明書記憶部の記憶している前記公開鍵証明書に含まれる前記公開鍵識別情報と前記無効化情報記憶部の記憶している前記無効化識別情報とを比較することで、容易に、前記プログラムが不正であると決定することができる。
前記データ処理装置において、前記正当性判断手段は、さらに、外部から最新の無効化識別情報を取得し、取得した無効化識別情報を前記無効化情報記憶部に書き込む更新部を含むことを特徴とする。
【００５０】
この構成によると、前記更新部が、外部から最新の無効化識別情報を取得し、取得した無効化識別情報を前記無効化情報記憶部に書き込む。一般に、公開鍵証明書の発行機関は、後発的に無効化された公開鍵を示す情報を追加して前記無効化識別情報を定期的に更新している。この発行機関から最新の無効化識別情報を取得して用いることで、前記データ処理装置の販売後に不正であることが判明したプログラムにも対応することができる。
【００５１】
また、前記更新部は、前記記憶手段へのアクセス要求を検出する度に、最新の無効化識別情報を取得することを特徴とする。
上記の構成では、前記更新部は、前記記憶手段へのアクセス要求を検出する度に、最新の無効化識別情報を取得するため、前記判定部は常に最新の無効化識別情報を用いて前記プログラムの正当性を判断することができる。
【００５２】
前記データ処理装置において、前記更新部は、ＣＲＬ（Certificate Revocation List）発行装置から、ネットワークを介して、前記無効化識別情報を受信し、ＣＲＬ発行装置から、ネットワーク及びサーバ装置を介して、前記無効化識別情報を受信し、又は記録媒体から前記無効化識別情報を読み出すことにより、取得することを特徴とする。
上記の構成では、前記更新部は、ＣＲＬ発行装置から、ネットワークを介して、前記無効化識別情報を受信するため、最新の無効化識別情報を取得することができる。
【００５３】
また、ＣＲＬ発行装置から、ネットワーク及びサーバ装置を介して、前記無効化識別情報を受信するため、前記データ処理装置自身に外部のネットワークとの通信機能がない場合であっても、サーバ装置によって、前記無効化識別情報を更新することができる。
また、記録媒体から前記無効化識別情報を読み出すことにより、前記ＣＲＬ発行装置と通信する環境がない場合でも、当該データ処理装置は、前記無効化識別情報を更新することもできる。
【００５４】
前記更新部は、さらに、外部から、前記最新の無効化識別情報に対してデジタル署名を施して生成された署名データを取得し、取得した署名データに署名検証を施し、署名検証が成功した場合に、取得した前記無効化識別情報を前記無効化情報記憶部に書き込むことを特徴とする。
この構成では、前記更新部は、前記署名データを取得し、取得した署名データに署名検証を施し、署名検証が成功した場合に、取得した前記無効化識別情報を前記無効化情報記憶部に書き込むため、前記無効化識別情報の正当な発行者から発行された無効化識別情報を取得することができる。
【００５５】
前記データ処理装置を構成する前記正当性判断手段は、少なくとも当該公開鍵に対してデジタル署名を施して生成された署名データを含む前記公開鍵証明書を記憶している証明書記憶部と、前記証明書記憶部から前記公開鍵証明書を取得する公開鍵証明書取得部と、取得した前記公開鍵証明書に含まれる署名データに、署名検証を施すことにより、取得した前記公開鍵証明書が正しいものであるか否かを検証する検証部とを含み、前記公開鍵証明書が正しいものでないと判断される場合に、前記プログラムが不正であると決定することを特徴とする。
【００５６】
この構成では、前記正当性判断手段は、前記署名データに、署名検証を施すことにより、取得した前記公開鍵証明書が正しいものであるか否かを検証し、前記公開鍵証明書が正しいものでないと判断される場合に、前記プログラムが不正であると決定する。従って、前記データ処理装置は、前記プログラムに割り当てられた公開鍵証明書が不正な第三者により不正に生成ものであるか否かを判断することが可能であり、正当な公開鍵証明書を有するプログラムだけを実行することができる。
【００５７】
また、前記データ処理装置において、前記正当性判断手段は、少なくとも２個の公開鍵の正当性をそれぞれ証明する少なくとも２個の公開鍵証明書を用いて、前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断してもよい。
この構成では、前記正当性判断手段は、少なくとも２個の公開鍵証明書を用いて、前記記憶手段に記憶されている前記プログラムが不正なものであるか否かを判断する。複数の公開鍵証明書を用いて前記判断を行うことで、より正確に、前記プログラムが不正であるか否かを判断できる。
【００５８】
前記２個の公開鍵は、前記プログラムに割り当てられた第１公開鍵及び前記データ処理装置又は前記プログラムの動作を制御するオペレーティングシステムに割り当てられた第２公開鍵であり、前記データ処理装置を構成する前記正当性判断手段は、権威のある認証機関の秘密鍵を用いて、少なくとも前記第２公開鍵に対してデジタル署名を施して生成された第２署名データと、前記第２公開鍵とを含む第２公開鍵証明書と、前記データ処理装置又は前記オペーティングシステムの秘密鍵を用いて、少なくとも前記第１公開鍵に対してデジタル署名を施して生成された第１署名データと、前記第１公開鍵とを含む第１公開鍵証明書とを記憶している証明書記憶部と、前記証明書記憶部から前記第１公開鍵証明書及び前記第２公開鍵証明書を取得する公開鍵証明書取得部と、取得した前記第２公開鍵証明書に含まれる第２署名データに、前記認証機関の公開鍵を用いて、署名検証を施すことにより、取得した前記第２公開鍵証明書が正しいものであるか否かを検証し、正しいと判定された場合に、前記第２公開鍵証明書から前記第２公開鍵を取得し、取得した前記第１公開鍵証明書に含まれる第１署名データに、取得した前記第２公開鍵を用いて、署名検証を施すことにより、取得した前記第１公開鍵証明書が正しいものであるか否かを検証する検証部とを含み、前記第２公開鍵証明書が正しいものでないと判断される場合及び前記第１公開鍵証明書が正しいものでないと判断される場合に、前記プログラムが不正であると決定することを特徴とする。
【００５９】
この構成によると、前記正当性判断手段は、取得した前記第２公開鍵証明書に含まれる第２署名データに、前記認証機関の公開鍵を用いて、署名検証を施すことにより、取得した前記第２公開鍵証明書が正しいものであるか否かを検証し、正しいと判定された場合に、前記第２公開鍵証明書から前記第２公開鍵を取得し、取得した前記第１公開鍵証明書に含まれる第１署名データに、取得した前記第２公開鍵を用いて、署名検証を施すことにより、取得した前記第１公開鍵証明書が正しいものであるか否かを検証する。このように、階層構造を形成する複数の公開鍵証明書を用いて検証することで、上位の公開鍵証明書が無効な場合、つまり、前記プログラムを制御するオペレーティングシステムが不正である場合にも前記プログラムを無効化し、不正なオペレーティングシステムのもとで、前記プログラムが実行されることを防ぐ。
【００６０】
又は、当該データ処理装置が不正である場合にも、前記プログラムの実行を防止することができる。
前記データ処理装置を構成する前記正当性判断手段は、前記記憶手段へのアクセス要求を検出する度に、前記判断をすることを特徴とする。
また、前記正当性判断手段は、前記記憶手段に記憶されているプログラムへのアクセス要求を検出する度に、前記判断してもよい。
【００６１】
また、前記正当性判断手段は、当該データ処理装置へ電力供給が開始された直後に、前記判断をするとしてもよい。
上記の構成によると、前記正当性判断手段は、前記記憶手段へのアクセス要求を検出する度に、前記判断をする。又は、前記記憶手段に記憶されているプログラムへのアクセス要求を検出する度に、前記判断をする。又は、当該データ処理装置へ電力供給が開始された直後に、前記判断をする。従って、前記プログラムを実行する前に、前記プログラムが不正であるか否かを判断することができる。
【００６２】
また、本発明は、暗号化されたプログラムを復号して実行する前記データ処理装置であって、前記記憶手段は、前記プログラムに代えて、プログラム鍵を用いて、前記プログラムに暗号化アルゴリズムが施されて生成された暗号化プログラムを記憶しており、前記正当性判断手段は、ｐ個の暗号鍵から選択されたｍ個の暗号鍵を記憶している暗号鍵記憶部と、前記ｍ個の暗号鍵のそれぞれを用いて、前記プログラム鍵及び所定の検知情報のいずれかが暗号化されて生成されたｍ個の暗号化情報を、ｍ個の前記暗号鍵に対応づけて記憶している暗号化情報記憶部と、前記ｍ個の暗号鍵のそれぞれを用いて、対応する暗号化情報に復号アルゴリズムを施して、ｍ個の復号情報を生成する復号部と、生成されたｍ個の復号情報の全てが、前記検知情報であるか否かを判断する判断部とを含み、生成されたｍ個の復号情報の全てが、前記検知情報であると判断される場合に、前記プログラムが不正なものであると決定することを特徴とする。
【００６３】
さらに、前記ｐ個の暗号鍵は、ｎ行ｍ列（ｐ＝ｎ×ｍ）の第１行列の各要素位置に配されており、前記第１行列の各列から１個の暗号鍵が選択されることにより、前記第１行列からｍ個の暗号鍵が選択され、前記データ処理装置を構成する前記暗号鍵記憶部は、前記第１行列において、各暗号鍵が配された要素位置を、各暗号鍵に対応付けて記憶しており、前記暗号化情報記憶部は、ｎ行ｍ列の第２行列において、各暗号化情報に対応する暗号鍵が配されている要素位置と同じ要素位置において、当該暗号化情報を記憶しており、復号部は、前記暗号鍵記憶部から、暗号鍵と対応する要素位置を読み出し、前記暗号化情報記憶部の第２行列において、前記読み出した要素位置と同じ要素位置に配されている暗号化情報を読み出し、読み出した前記暗号鍵を用いて、読み出した前記暗号化情報に復号アルゴリズムを施すことを特徴とする。
【００６４】
上記の構成によると、前記正当性判断手段は、前記ｍ個の暗号鍵のそれぞれを用いて、対応する暗号化情報に復号アルゴリズムを施して、ｍ個の復号情報をし、生成されたｍ個の復号情報の全てが、前記検知情報であると判断される場合に、前記プログラムが不正なものであると決定する。前記プログラムが正当である場合、当該データ処理装置は、暗号化された前記暗号鍵から暗号鍵を生成し、生成した暗号鍵により、前記暗号化プログラムを復号してプログラムを生成し、生成したプログラムを実行する。このように、２重の暗号化を施すことにより、前記プログラムを不正な利用から保護することができる。
【００６５】
また、前記第１行列の各列から１個の暗号鍵が選択されることにより、前記ｐ個の暗号鍵が、選択されている。ここで、同一のプログラム鍵により暗号化された複数の暗号化プログラムが存在する場合を想定する。いずれかのプログラムが不正であり、この不正なプログラムに割り当てられたｍ個暗号鍵を用いて生成されるｍ個の復号情報は全て前記検知情報である。他の正当なプログラムに割り当てられたｍ個の暗号鍵のうち、いずれかが、前記不正なプログラムのｍ個の暗号鍵と一致していても、その他の暗号鍵により、前記プログラム鍵を生成することができる。プログラムごとに異なる組み合わせで、ｍ個の暗号鍵を割り当てることで、不正なプログラムのみを無効化し、正当なプログラムは、利用することができる。
【００６６】
また、本発明は、前記データ処理装置であって、データを記憶するためのメモリ手段と、複数の処理手順から構成されるプログラムに従って動作するプロセッサと、前記メモリ手段と前記プロセッサとの間に配置され、前記プロセッサから出力される前記メモリ手段宛の転送データが転送制限条件を満たしているか否かを判断し、転送制限条件を満たしていると判断する場合に、前記メモリ手段への転送データの転送を抑制し、転送制限条件を満たしていないと判断する場合に、前記メモリ手段への転送データの転送を行う監視手段とを備えることを特徴とする。
【００６７】
この構成によると、前記監視手段は、前記メモリ手段と前記プロセッサとの間に配置され、前記プロセッサから出力される前記メモリ手段宛の転送データが転送制限条件を満たしているか否かを判断し、転送制限条件を満たしていると判断する場合に、前記メモリ手段への転送データの転送を抑制する。このようにすることで、前記プログラムの動作中に発生する前記メモリへの不正なアクセスを防止することができる。
【００６８】
前記データ処理装置において、前記監視手段は、複数のアプリケーションプログラム毎に、転送制限条件を記憶しており、前記プロセッサにより実行されるアプリケーションプログラム毎に、転送制限条件を選択し、選択した転送制限条件を用いることを特徴とする。
この構成では、前記監視手段は、前記プロセッサにより実行されるアプリケーションプログラム毎に、転送制限条件を選択し、選択した転送制限条件を用いる。前記データ処理装置において、複数のアプリケーションプログラムが実行される場合、アプリケーションごとに利用するデータやデバイスが異なることは十分考えられる。従って、アプリケーションプログラムごとに異なる転送制限条件を用いることで、当該データ処理装置は、複数のアプリケーションプログラムを安全に実行することができる。
【００６９】
また、前記転送制限条件は、前記メモリ手段内の所定の記憶空間を示すアドレス範囲情報であり、前記データ処理装置は、前記監視手段が、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、前記転送データの転送を抑制することを特徴とする。
上記に構成によると、前記監視手段は、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、前記転送データの転送を抑制する。従って、前記プロセッサが前記所定の記憶空間にアクセスすることを阻止することができる。
【００７０】
前記転送制限条件は、前記メモリ手段内の所定の記憶空間へのアクセス回数の上限を示す制限回数であり、前記データ処理装置を構成する前記監視手段は、過去における前記記憶空間へのアクセスの累積回数を記憶しており、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、前記累積回数に１を加算し、加算して得られた加算後回数が、前記制限回数を超える場合に、前記転送データの転送を抑制することを特徴とする。
【００７１】
この構成によると、前記監視手段は、加算後回数が、前記制限回数を超える場合に、前記転送データの転送を抑制する。このようにすることで、前記プログラムの実行中に、何らかの原因で偶発的に起こった不正アクセスについては、見逃し、例えば、前記プログラムの不正な改ざんによって、定常的に前記所定の記憶空間へ不正なアクセスが起こる場合のみ前記プログラムの実行に伴う転送データの転送を抑制する。
【００７２】
本発明において、前記監視手段は、前記プロセッサに接続されるバス上において転送される前記転送データが転送制限条件を満たしているか否かを判断することを特徴とする。
この構成によると、前記監視手段は、前記プロセッサに接続されるバス上において転送される前記転送データが転送制限条件を満たしているか否かを判断するため、前記プロセッサから伝送データが出力される度に、確実に、前記判定を行うことができる。
【００７３】
本発明のデータ処理装置を構成する前記メモリ手段は、暗号鍵を用いて、前記プロセッサにより実行されている現プログラムとは異なるアプリケーションプログラムのコード部分とデータ部分とがそれぞれ暗号化されて生成された暗号化コード及び暗号化データを記憶しており、前記転送制限条件は、前記メモリ手段内において前記暗号化データが格納されている記憶空間を示すアドレス範囲情報であり、前記監視手段は、前記暗号化コード及び暗号化データを復号するための復号鍵を記憶しており、前記転送データからアドレス情報を抽出し、抽出したアドレス情報が、前記暗号化コードが格納されている記憶空間を示すアドレス範囲内にある場合に、前記復号鍵を用いて、前記転送データにより示される記憶空間に存在する暗号化コードを復号して復号コードを生成し、生成した復号コードを前記プロセッサへ転送し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、転送データの転送を抑制することを特徴とする。
【００７４】
この構成によると、前記監視手段は、前記暗号化コード及び暗号化データを復号するための復号鍵を記憶しており、前記アドレス情報が、前記暗号化コードが格納されている記憶空間を示すアドレス範囲内にある場合に、前記復号鍵を用いて、前記転送データにより示される記憶空間に存在する暗号化コードを復号して復号コードを生成し、生成した復号コードを前記プロセッサへ転送し、抽出したアドレス情報が、前記アドレス範囲情報に含まれる場合に、転送データの転送を抑制する。これにより、前記アプリケーションプログラムのデータ部分の使用を当該アプリケーションプログラムのみに限定することができる。
【００７５】
前記監視手段は、さらに、転送制限条件を満たしていると判断する場合に、前記プロセッサにより実行中の前記プログラムを識別する識別情報をプログラム無効化リストに追加することを特徴とする。
この構成では、前記監視手段は、転送制限条件を満たしていると判断する場合に、前記プロセッサにより実行中の前記プログラムを識別する識別情報をプログラム無効化リストに追加ため、前記プロセッサにより、このプログラムが再度実行されることを防ぐことができる。
【００７６】
本発明の前記データ処理装置は、データを記憶するためのメモリ手段と、複数の処理手順から構成されるプログラムに従って動作し、次に実行対象となる命令のアドレスが格納されているプログラムカウンタを備えるプロセッサと、前記プログラムカウンタに格納されているアドレスが、所定のアドレス範囲内に含まれるか否かを判断し、所定のアドレス範囲内に含まれると判断する場合に、前記プロセッサに対して、プログラムカウンタに所定の値を格納するように指示する監視手段とを備え、前記プロセッサが、前記指示を受け取ると、プログラムカウンタに前記所定の値を格納することを特徴とする。
【００７７】
この構成によると、前記監視手段は、前記プログラムカウンタに格納されているアドレスが、所定のアドレス範囲内に含まれるか否かを判断し、所定のアドレス範囲内に含まれると判断する場合に、前記プロセッサに対して、プログラムカウンタに所定の値を格納するように指示する。このようにすることで、前記プロセッサが前記所定のアドレス範囲と対応する記憶領域にアクセスすることを事前に防止し、例えば、オペレーティングシステムなどの他のプログラムへ前記プロセッサの実行権を移すことで、前記プログラムの実行を中断させることができる。
【発明を実施するための最良の形態】
【００７８】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
１．  実施の形態１
本発明の実施の形態について、以下に説明する。
図１は、本発明の携帯電話１００の使用例を示している。携帯電話１００は、メモリカード３００を装着される。
【００７９】
メモリカード３００は、暗号化された音楽データが記録されており、携帯電話１００は、メモリカード３００から音楽データを読み出して再生する。
また、携帯電話１００は、基地局１５、携帯電話網１０、インターネット２０を介してコンテンツ配信装置と接続されている。携帯電話１００は、コンテンツ配信装置の記憶している音楽、映像などから構成される各種のコンテンツをインターネット、携帯電話網を介して取得する。
【００８０】
１．１  メモリカード３００
メモリカード３００は、図２に示すように、入出力部３０１、セキュア処理部３０２、一般領域３０３及びセキュア領域３０６から構成される。
一般領域３０３は、外部機器により自由にアクセスすることができる記憶領域であり、暗号化音楽データ３０４を記憶している。セキュア領域３０６は、許可された外部機器のみがアクセスできる記憶領域であり、コンテンツ鍵３０７が記憶されている。
【００８１】
暗号化音楽データ３０４・・・は、１曲分の音楽データに、コンテンツ鍵３０７を用いて、暗号化アルゴリズムＥ１を施して生成されたものである。各暗号化音楽データは、楽曲ＩＤにより識別される。
暗号化アルゴリズムＥ１は、一例としてＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）などを用いる。
【００８２】
入出力部３０１は、外部機器と一般領域３０３及びセキュア処理部３０２との間で各種のデータを入出力する。
セキュア処理部３０２は、外部機器との間で、CPRM（Content Protection for Recordable Media）の仕組みに基づいて相互認証を行い、認証に成功した場合に、認証した機器と鍵を共有する。共有した鍵を用いて、外部機器との間で、安全にデータの入出力を行う。
【００８３】
なお、CPRMについては、公知であるので説明を省略する。また、他の認証方法により認証を行ってもよい。
１．２  携帯電話１００の構成
携帯電話１００は、図２に示すように、デバッガＩＦ１０１、ＣＰＵ１０２、ＭＭＵ１０３、二次記憶部１０４、切替制御部１０６、割込コントローラ１０７、入力部１０８、表示部１０９、通常メモリ１１１、共有メモリ１１２、セキュアメモリ１１３、メモリ保護部１１４、入出力部１１６、暗号処理デバイス１１７、無線通信制御部１１８、マイク１１９、スピーカ１２０、通信部１２１、アンテナ１２２、バッファ１２３、符号処理部１２４及びＤ／Ａ変換部１２６から構成され、各回路はバス１３０に接続されている。
【００８４】
携帯電話１００は、具体的にはコンピュータシステムであり、通常メモリ１１１、共有メモリ１１２、セキュアメモリ１１３、二次記憶部１０４には各種のコンピュータプログラム記憶されており、ＣＰＵ１０２がこれらのコンピュータプログラムに従って動作することにより、携帯電話１００はその機能の一部を実現する。
（１）二次記憶部１０４、共有メモリ１１２
二次記憶部１０４は、ＲＯＭから構成され、一例として、図３に示すように、暗号化音楽復号プログラム１４１及び音楽復号デーモン１４２などを記憶している。
【００８５】
暗号化音楽復号プログラム１４１は、セキュアメモリ１１３上にロードされて実行される音楽復号プログラムを暗号化して生成されたものである。音楽復号プログラムは、メモリカード３００に記憶されている暗号化音楽データ３０４を復号するプログラムである。これについては、後に、詳細に説明する。
音楽復号デーモン１４２は、通常メモリ１１１上にロードされて実行されるプログラムであり、音楽復号プログラムと１対１に対応する。
【００８６】
音楽復号の処理のうちで、高いセキュリティを要する処理及び保護されるべきデータを扱う処理を音楽復号プログラムが実行し、高いセキュリティを必要としない処理を音楽復号デーモンが実行する。詳細については、後に述べる。
共有メモリ１１２は、ＲＡＭから構成され、通常メモリ１１１上のプログラム及びセキュア記憶上のプログラムいずれのプログラムからも使用可能なメモリである。
【００８７】
なお、ここでは、二次記憶部１０４はＲＯＭから構成されるとしているが、ハードディスクユニットから構成されるとしても良い。
（２）通常メモリ１１１及びセキュアメモリ１１３
通常メモリ１１１は、ＲＡＭ及びＲＯＭから構成され、ＣＰＵ１０２により実行される各種のプログラムを記憶している。一例として、図４に示すように、通常ＯＳ１５１、ライブラリ１５２、音楽再生プログラム１５３、音楽復号デーモン１５６、通常入出力デバイスドライバ１５７、セキュア入出力エントリデバイスドライバ１５８、暗号エントリデバイスドライバ１５９、通常切替デバイスドライバ１６０及び通常割込ハンドラ１６１を記憶している。
【００８８】
セキュアメモリ１１３は、ＲＡＭから構成され、ＣＰＵ１０２によって、実行される各種のプログラムを記憶している。セキュアメモリ１１３は、メモリ保護部１１４を介してバス１３０と接続されている。
セキュアメモリ１１３は、一例として、図６に示すように、セキュアＯＳ１７１、音楽復号プログラム１７６、セキュア入出力デバイスドライバ１７８、暗号デバイスドライバ１７９、セキュア切替デバイスドライバ１８０、セキュア割込ハンドラ１８１を記憶している。
【００８９】
図８は、通常メモリ１１１及びセキュアメモリ１１３に記憶されている各プログラム間の関係を機能的に示したブロック図である。実際には、同一メモリ上の各プログラム間の通信は、通常ＯＳ１５１及びセキュアＯＳ１７１へシステムコールを出力することにより実現される。また、通常切替デバイスドライバ１６０、セキュア切替デバイスドライバ１８０及び切替制御部１０６が動作することにより、通常ＯＳ１５１とセキュアＯＳ１７１とを切り替えているが、図８においては、オペレーティングシステムによる仲介及び通常ＯＳ１５１とセキュアＯＳ１７１との切り替えに係るプログラムを省略している。
【００９０】
また、図８において、共有メモリ１１２は、通常入出力デバイス１３２及び暗号処理デバイス１１７と接続されているが、これは、共有メモリ１１２の果たす役割の一部を示しており、共有メモリ１１２は、その他のプログラムによっても使用される。
＜通常ＯＳ１５１＞
通常ＯＳ１５１は、通常メモリ１１１上にロードされて実行される各種のプログラムを制御する基本ソフトウェアであり、制御プログラムと制御データから構成される。
【００９１】
制御データには、図４に示すように、アプリ管理表１６６が含まれる。アプリ管理表１６６は、図５に示すように複数のエントリ１６７、１６８・・・を含む。各エントリは、ハンドル値、デーモンアドレス、アプリコンテキストアドレスから構成される。
ハンドル値は、セキュアメモリ１１３上にロードされるセキュアアプリケーションに割り当てられる識別子である。
【００９２】
以下の説明において、セキュアメモリ１１３上にロードされて、セキュアな処理を実行するアプリケーションをセキュアアプリケーションと呼ぶ。ここで、セキュアな処理とは、保護されるべきデータを扱う処理及びアルゴリズム自体を保護する必要のある処理である。
デーモンアドレスは、セキュアアプリケーションと対応して動作するプログラムの通常メモリ１１１上のロードアドレスである。
【００９３】
アプリコンテキストアドレスは、ハンドル値と対応するセキュアアプリケーションにセキュアな処理を依頼するアプリケーションのコンテキストを保存している通常メモリ１１１上のアドレスである。コンテキストには、ＣＰＵ１０２のレジスタ値、スタックポインタ、ＭＭＵ１０３の内容などが含まれる。
具体的にエントリ１６７について説明すると、ハンドル値「1」は、音楽再生プログラム１５３がセキュアな処理を依頼する音楽復号プログラム１７６（後述する）に割り当てられる識別子である。デーモンアドレス「００００ＢＢＢＢ」は、音楽復号プログラム１７６と対応して動作する音楽復号デーモン１５６の通常メモリ１１１上のロードアドレスである。アプリコンテキストアドレス「００００ＡＡＥＥ」は、音楽再生プログラム１５３のコンテキストを保存している通常メモリ１１１上のアドレスである。
【００９４】
また、制御データには、通常入出力デバイスドライバ１５７を示す識別情報デバイスあるデバイスＩＤ＿Ａ、セキュア入出力エントリデバイスドライバ１５８を識別する識別情報であるデバイスＩＤ＿Ｂ及び暗号エントリデバイスドライバ１５９を示す識別情報であるデバイスＩＤ＿Ｃとが含まれる。これらは、それぞれ、通常入出力デバイスドライバ１５７、セキュア入出力エントリデバイスドライバ１５８及び暗号エントリデバイスドライバ１５９の通常メモリ１１１上のロードアドレスと対応付けて記憶されている。デバイスＩＤ＿Ｂは、セキュア入出力デバイスドライバ１７８（後述する）を示す識別情報と同一であり、デバイスＩＤ＿Ｃは、暗号デバイスドライバ１７９を示す識別情報と同一である。
【００９５】
通常ＯＳ１５１は、共有メモリ１１２内の所定の領域（コマンド領域と呼ぶ）を介して、セキュアＯＳ１７１との間で各種のコマンドの送受信を行う。また、通常メモリ１１１上のプログラムとの間でも各種のコマンドの送受信を行う。通常メモリ１１１上のプログラムとの間のプログラムの送受信には、共有メモリ１１２を用いても良いし、通常メモリ１１１を用いても良い。
【００９６】
図９（ａ）は、通常ＯＳ１５１が扱うコマンドのデータ構造の一例を示している。コマンド１０００は、コマンド部１０１１とデータ格納部１０１２から構成される。
コマンド部１０１１に格納されるコマンドには、セキュアアプリ登録要求、登録完了通知、アプリ復帰要求、セキュアアプリ削除命令、削除完了通知、システムコール、応答通知、セキュア処理要求、外部処理要求、休眠要求、割込発生通知などがある。
【００９７】
データ格納部１０１２には、各種データ及びコマンド１０１６、データ及びコマンド１０１６の受け取り先となるプログラムを示す識別情報１０１３などが、コマンド部１０１１に格納されるコマンドに応じて格納される。
セキュアアプリ登録要求は、通常メモリ１１１上で動作するアプリケーションが、セキュアな処理を依頼するセキュアアプリケーションをセキュアメモリ１１３上にロードし使用可能な状態にすることを要求するコマンドである。このとき、図９（ｂ）の示すようにデータ格納部１０１２には、セキュアアプリケーションを示すセキュアアプリ情報とセキュアアプリケーションと対応して動作するプログラムを示すデーモン情報とが格納される。音楽再生プログラム１５３から出力されるセキュアアプリ登録要求を例にすると、セキュアアプリ情報は、二次記憶部１０４上の暗号化音楽復号プログラム１４１の記憶されているアドレスであり、デーモン情報は、音楽復号デーモン１４２の記憶されているアドレスである。なお、セキュアアプリ情報及びデーモン情報は、暗号化音楽復号プログラム１４１及び音楽復号デーモン１４２と対応する識別子などでも良い。
【００９８】
登録完了通知は、セキュアメモリ１１３上に、セキュアアプリケーションがロードされ、セキュアアプリ管理表（後述する）への登録が完了したことを通知する。このとき、データ格納部１０１２には、登録されたセキュアアプリケーションと対応するハンドル値が格納されている。
アプリ復帰要求は、依頼されていた処理を終えたセキュアアプリケーションが、依頼元であるアプリケーションの復帰を要求するコマンドである。このとき、データ格納部には、セキュアアプリケーションを示す識別情報が格納されている。
【００９９】
セキュアアプリ削除命令は、セキュアメモリ１１３上のセキュアアプリケーションの削除を指示するものである。このとき、データ格納部１０１２には、削除するセキュアアプリケーションを一意に識別するハンドル値が格納されている。
削除完了通知は、セキュアメモリ１１３上のセキュアアプリケーションが削除されたことを通知するものである。このとき、データ格納部１０１２には、削除されたセキュアアプリケーションを一意に識別するハンドル値が格納されている。
【０１００】
システムコールは、通常メモリ１１１上のアプリケーションが、通常ＯＳ１５１へ、通常メモリ１１１上の他のプログラムへコマンド又はデータの仲介を依頼するコマンドである。このとき、データ格納部１０１２には、仲介を依頼したアプリケーションを示す識別情報と仲介先のプログラムを示す識別情報と、仲介するデータ及びコマンドが書き込まれている。
【０１０１】
一例として、図９（ｃ）は、音楽復号デーモン１５６が出力したシステムコールのデータ構造を示している。コマンド部１０１１には、システムコールが格納されており、データ格納部１０１２には、システムコールの発信元である音楽復号デーモン１５６を示すハンドル値「１」と、データの受け取り先である暗号エントリデバイスドライバ１５９を示すデバイスＩＤ＿Ｃと、仲介されるデータ「処理結果」が格納されている。
【０１０２】
応答通知は、システムコールによりアプリケーションからコマンド又はデータを受け取ったプログラムが、受け取ったコマンド及びデータに従って処理を行い、システムコールの出力元のアプリケーションへの処理結果の通知を、通常ＯＳ１５１へ依頼するものである。データ格納部１０１２には、通知依頼したプログラムを示す識別情報と通知先のアプリケーションを示す識別情報と、処理結果などが格納されている。
【０１０３】
一例として、図９（ｃ）に示すシステムコールにより、ハンドル値「１」、デバイスＩＤ＿Ｃ及び処理結果を受け取った暗号エントリデバイスドライバ１５９は、排他制御を解除し（詳細は後述する）、ハンドル値「１」、デバイスＩＤ＿Ｃ及び処理結果を含む応答通知を通常ＯＳ１５１へ出力することにより、通常ＯＳ１５１を介して、ハンドル値「１」、デバイスＩＤ＿Ｃ及び処理結果を音楽復号デーモン１５６へ通知する（詳細は後述する）。
【０１０４】
セキュア処理要求は、通常メモリ１１１上のプログラムからセキュアメモリ１１３上のプログラムへのコマンド又はデータの仲介を依頼するコマンドである。このとき、データ格納部１０１２には、セキュア処理要求の出力元であるプログラムを示す識別情報と、仲介先のプログラムを示す情報及び仲介するデータ及びコマンドが格納されている。図９の（ｄ）は、一例として、音楽復号デーモン１５６から出力されるセキュア処理要求のデータ構造を示している。データ格納部１０１２には、セキュア処理要求の出力元である音楽復号デーモン１５６を示すハンドル値「１」、受け取り先である暗号デバイスドライバ１７９を示すデバイスＩＤ＿Ｃと、仲介されるコマンド「割込通知」とが格納されている。
【０１０５】
外部処理要求は、セキュアメモリ１１３上のプログラムから通常メモリ１１１上のプログラムへのコマンド及びデータの仲介を依頼するものである。このとき、データ格納部１０１２には、セキュア処理要求の出力元であるプログラムを示す識別情報と、仲介先のプログラムを示す識別情報と、仲介されるデータ及びコマンドが格納されている。図９（ｅ）は、一例として、暗号デバイスドライバ１７９から出力される外部処理要求のデータ構成を示している。コマンド部には、外部処理要求が格納されており、データ格納部には、外部処理要求の出力元である暗号デバイスドライバ１７９と対応するデバイスＩＤ＿Ｃと受け取り先である音楽復号デーモン１５６と対応するハンドル値「１」と、仲介されるコマンド「休眠要求」が格納されている。
【０１０６】
休眠要求は、携帯電話１００の備える、デバイスのデバイスドライバ及びデバイスへ処理を依頼したプログラムを休眠状態に遷移させることを依頼するコマンドである。このとき、データ格納部１０１２には、休眠要求を依頼するデバイスドライバを示す識別情報と、デバイスへ処理を依頼するプログラムと対応する識別情報とが格納されている。
割込発生通知は、割込の発生を通知するものである。
【０１０７】
以下に、図１０のフローチャートを用いて、通常ＯＳ１５１の動作について説明する。なお、通常ＯＳ１５１は、このフローチャートにおいて説明する処理以外にも、各種の処理を実行する。
ここで、セキュアアプリ登録要求、登録完了通知、アプリ復帰要求、セキュアアプリ削除命令及び削除完了通知については、具体的に、通常メモリ１１１上のアプリケーションを音楽再生プログラム１５３、セキュアアプリケーションを音楽復号プログラム１７６、セキュアアプリケーションと対になって動作するプログラムを音楽復号デーモン１５６として説明する。
【０１０８】
通常ＯＳ１５１は、切替処理によってＣＰＵ１０２に復帰すると、共有メモリ１１２のコマンド領域からコマンドを読み出す（ステップＳ１００１）。なお、切替処理については、以下の通常切替デバイスドライバ１６０及びセキュア切替デバイスドライバ１８０の説明において、詳細に説明する。
読み出したコマンドを解読し（ステップＳ１００２）、解読したコマンドが登録完了通知であれば、音楽復号デーモン１５６を通常メモリ１１１上にロードし（ステップＳ１００４）、ロードしたアドレスと、登録完了通知のデータ格納部に含んで受け取ったハンドル値「１」をアプリ管理表１６６のエントリ１６７に書き込み（ステップＳ１００５）、ハンドル値「１」を音楽再生プログラム１５３へ出力する。
【０１０９】
読み出したコマンドが外部処理要求であれば（ステップＳ１００２）、データ格納部に含まれる仲介先を示す識別情報と対応するプログラムを呼び出し、呼び出したプログラムへ外部処理要求のデータ格納部に含んで受け取った情報を出力する（ステップＳ１００６）。
読み出したコマンドが割込発生通知であれば（ステップＳ１００２）、ＣＰＵ１０２の割込レジスタに書き込まれているダミーデータを消去することで割込マスクを解除する（ステップＳ１００７）。割込マスクについては、後のセキュア割込ハンドラ１８１に関する説明において述べる。
【０１１０】
読み出したコマンドが、アプリ復帰要求である場合（ステップＳ１００２）、データ格納部に含まれるハンドル値「１」と、アプリ管理表１６６とを基に、音楽再生プログラム１５３のコンテキストを復帰させる（ステップＳ１００9）。
読み出したコマンドが、削除完了通知であれば（ステップＳ１００２）、データ格納部に含まれるハンドル値「１」と対応する音楽復号デーモン１５６を通常メモリ１１１から削除し（ステップＳ１０１１）、アプリ管理表１６６からハンドル値「１」を含むエントリ１６７を削除する（ステップＳ１０１２）。
【０１１１】
次に、通常メモリ１１１上の各プログラムからのコマンドを受け付ける（ステップＳ１０１３）。
システムコールを受け付けると（ステップＳ１０１３）、データ格納部に書き込まれているハンドル値又はデバイスＩＤなどの仲介先を示す識別情報と対応するプログラムを呼び出し、データ格納部に含まれる情報を出力する（ステップＳ１０１４）。例えば、ハンドル値「１」が含まれていると、アプリ管理表１６６でハンドル値「１」を含むエントリ１６７を選択し、選択したエントリ１６７のデーモンアドレスを基に音楽復号デーモン１５６を呼び出し、デバイスＩＤ＿Ｃが含まれていると、暗号エントリデバイスドライバ１５９を呼び出す。
【０１１２】
また、具体的には図示していないが、応答通知を受け取った場合も、システムコールを受け取った場合と同様に、データ格納部に書き込まれている識別情報と対応するアプリケーションを呼び出し、データ格納部に含まれる情報を出力する。
休眠要求を受け付けると（ステップＳ１０１３）、データ格納部に書き込まれているハンドル値又はデバイスＩＤなどの識別情報に対応するプログラムと対応するプログラムを休眠状態に遷移させる（ステップＳ１０１６）。休眠状態とは、一切の動作を行わない状態を言う。
【０１１３】
音楽復号プログラム１７６から図９（ｂ）の示すように、データ格納部にセキュアアプリ情報とデーモン情報とを含むセキュアアプリ登録要求を受け付けると（ステップＳ１０１３）、音楽再生プログラム１５３のコンテキストを通常メモリ１１１上に保存し、保存先のアドレスをアプリコンテキストアドレスに書き込み、セキュアアプリ情報を基に二次記憶部１０４から読み出した暗号化音楽復号プログラム１４１を共有メモリ１１２に書き込む（ステップＳ１０１７）。次に、セキュアアプリ登録要求を、共有メモリ１１２上に書き込み（ステップＳ１０１８）、ステップＳ１０２８へ処理を移す。このときの、セキュアアプリ登録要求は、データ格納部に暗号化音楽復号プログラムの共有メモリ１１２上の書き込み先のアドレスを含んでいる。
【０１１４】
音楽再生プログラム１５３からセキュアアプリ削除命令を受け取ると（ステップＳ１０１３）、受け取ったセキュアアプリ削除命令を共有メモリ１１２に書き込む（ステップＳ１０１９）。ここで、データ格納部には、削除対象となる音楽復号プログラム１７６を示すハンドル値「１」が格納されている。
セキュア処理要求を受け付けると（ステップＳ１０１３）、受け付けたセキュア処理要求を共有メモリ１１２に書き込む（ステップＳ１０２１）。次に、切替処理を行う（ステップＳ１０２８）。
【０１１５】
また、割込が発生し、割込みコントローラ１０７から割込発生通知を受け取る（ステップＳ１０２３）、通常割込ハンドラ１６１を起動する（ステップＳ１０２４）。通常割込ハンドラ１６１による、割込要因の調査結果に基づき休眠しているプログラムの休眠を解除し（ステップＳ１０２６）。ステップＳ１０１３へ処理を移す。
なお、本実施の形態では、通常ＯＳ１５１とセキュアＯＳ１７１とは、共有メモリ１１２を介して、各種のコマンドをやり取りしているが、共有メモリ１１２に代わって、専用レジスタを用いるとしてもよい。
＜セキュアＯＳ１７１＞
セキュアＯＳ１７１は、図６に示すように、オペレーティングプログラム１７２、デバッグ無効化プログラム１７３、暗復号プログラム１７４から構成される。
【０１１６】
デバッグ無効化プログラム１７３は、デバッガＩＦ１０１のレジスタにダミーデータを書き込み、デバッガＩＦ１０１を無効化するプログラムである。なお、デバッガＩＦ１０１とＣＰＵ１０２との間にスイッチを備え、デバッグ無効化プログラム１７３は、このスイッチを開閉することで、デバッガＩＦ１０１を無効化する構成であってもよい。
暗復号プログラム１７４は、予め復号鍵をコーディングされており、暗号化音楽復号プログラムを復号して、音楽復号プログラムを生成する。
【０１１７】
オペレーティングプログラム１７２は、セキュアメモリ１１３上にロードされる各種のプログラムを制御する基本ソフトウェアであり、制御プログラムと制御データとから構成される。制御部データには、図６に示すように、セキュアアプリ管理表１８６が含まれる。
セキュアアプリ管理表１８６は、図７に示すように、複数のエントリ１８７、１８８・・・を含む。各エントリは、ハンドル値、セキュアアプリアドレス、セキュアアプリコンテキストアドレスから構成され、セキュアメモリ１１３上にロードされているセキュアアプリケーションと対応している。
【０１１８】
ハンドル値は、各セキュアアプリケーションに割り当てられた識別子である。
セキュアアプリアドレスは、セキュアアプリケーションがロードされている、セキュアメモリ１１３上のアドレスである。セキュアアプリコンテキストアドレスは、セキュアアプリケーションのコンテキストが保存されているセキュアメモリ１１３上のアドレスである。
【０１１９】
一例としてエントリ１８７のハンドル値「１」は、オペレーティングプログラム１７２が音楽復号プログラム１７６に割り当てた識別子である。セキュアアプリアドレス「１１１１ＥＥＥＥ」は、音楽復号プログラム１７６が記憶されているセキュアメモリ１１３上のアドレスであり、セキュアアプリコンテキストアドレス「１１ＡＡＤＤＤＥ」は、音楽復号プログラム１７６のコンテキストが記憶されているセキュアメモリ１１３上のアドレスである。
【０１２０】
また、制御データには、セキュア入出力デバイスドライバ１７８と対応する識別情報であるデバイスＩＤ＿Ｂ、暗号デバイスドライバ１７９と対応する識別情報であるデバイスＩＤ＿Ｃが含まれる。これらは、それぞれ、セキュア入出力デバイスドライバ１７８及び暗号デバイスドライバ１７９のセキュアメモリ１１３上のロードアドレスと対応付けて、セキュアメモリ１１３上に記憶されている。
ここで、デバイスＩＤ＿Ｂ及びデバイスＩＤ＿Ｃは、通常ＯＳ１５１の有する制御データに含まれるデバイスＩＤ＿Ｂ及びデバイスＩＤ＿Ｃと同一である。
【０１２１】
セキュアＯＳ１７１は、共有メモリ１１２のコマンド領域を介して通常ＯＳ１５１との間で各種のコマンドの授受を行う。また、セキュアメモリ１１３上の各プログラムとの間でセキュアメモリ１１３上のオペレーティングプログラム１７２の有する記憶領域を介して、コマンドを送受信する。
以下の説明において、説明の便宜上、オペレーティングプログラム１７２の行う処理を、セキュアＯＳ１７１の行う処理として表現する。
【０１２２】
セキュアＯＳ１７１が扱う各種のコマンドは、通常ＯＳ１５１が扱うコマンドと同様に、図９の（ａ）に示す構造である。コマンド部１０１１に格納されるコマンドには、セキュアアプリ登録要求、登録完了通知、アプリ復帰要求、セキュアアプリ削除命令、削除完了通知、システムコール、応答通知、セキュア処理要求、外部処理要求、割込発生通知などがある。セキュアアプリ登録要求、登録完了通知、アプリ復帰要求、セキュアアプリ削除命令、削除完了通知、セキュア処理要求、外部処理要求、割込発生通知については、上記の通常ＯＳ１５１に関する説明において既に述べた通りである。システムコールは、セキュアメモリ１１３上のアプリケーションからセキュアメモリ１１３上の他のプログラムへのデータ及びコマンドの仲介を依頼するものであり、応答通知は、システムコールにより、コマンド及びデータを受け取ったプログラムが、処理結果などの通知をセキュアＯＳ１７１へ依頼するものである。
【０１２３】
以下に、図１１のフローチャートを用いて、セキュアＯＳ１７１の動作について説明する。ここで、セキュアアプリ登録要求、登録完了通知、セキュアアプリ削除命令及び削除完了通知については、具体的に、アプリケーションを音楽再生プログラム１５３、セキュアアプリケーションを音楽復号プログラム１７６、セキュアアプリケーションと対になって動作するプログラムを音楽復号デーモン１５６として説明する。なお、セキュアＯＳ１７１は、このフローチャートに示した処理以外にも各種の処理を行っているが、本発明とは関係がないため、ここでは説明をしない。
【０１２４】
切替処理によって、セキュアＯＳ１７１がＣＰＵ１０２に復帰する（ステップＳ１０４１）。セキュアＯＳ１７１は、共有メモリ１１２のコマンド領域からコマンドを読み出して解読し（ステップＳ１０４２）、解読したコマンドによって、以下の処理を行う。
読み出したコマンドがセキュアアプリ登録要求であれば（ステップＳ１０４２）、暗復号プログラム１７４によって、共有メモリ１１２上の暗号化音楽復号プログラムを復号して音楽復号プログラム１７６を生成し、セキュアメモリ１１３上にロードする（ステップＳ１０４３）。ロードアドレス及びハンドル値「１」をセキュアアプリ管理表１８６のエントリ１８７に書き込む（ステップＳ１０４４）。次に、登録完了通知をコマンド部に格納し、データ格納部にハンドル値「１」を格納した、登録完了通知を生成し、共有メモリ１１２に書き込む（ステップＳ１０４６）。次に、切替処理に移る（ステップＳ１０６２）。
【０１２５】
解読したコマンドが、セキュア処理要求であれば（ステップＳ１０４２）、データ格納部に格納されている、受け取り先となるプログラムの識別情報と対応するプログラムを呼び出す（ステップＳ１０４７）。例えば、ハンドル値「１」が格納されていれば、音楽再生プログラム１５３を呼び出し、デバイスＩＤ＿Ｂが格納されていれば、セキュア入出力デバイスドライバ１７８を呼び出す。次に、ステップＳ１０５２へ移る。
【０１２６】
読み出したコマンドがセキュアアプリ削除命令であれば（ステップＳ１０４２）、データ格納部に格納されている、削除の対象となるプログラムを示すハンドル値「１」を抽出し、抽出したハンドル値「１」と対応する音楽復号プログラム１７６をセキュアメモリ１１３上から削除し、次に、セキュアアプリ管理表１８６から、エントリ１８７を削除する（ステップＳ１０４９）。
【０１２７】
削除し終えると、削除完了通知を共有メモリ１１２に書き込む（ステップＳ１０５１）。このとき、コマンド部には削除完了通知が格納されており、データ格納部には、ハンドル値「１」が格納されている。次に、ステップＳ１０６２へ処理を移す。
次に、セキュアＯＳ１７１は、セキュアメモリ１１３上の各プログラムから、コマンドを受け取る（ステップＳ１０５２）。
【０１２８】
受け取ったコマンドが、外部処理要求であれば（ステップＳ１０５２）、共有メモリに、受け取った外部処理要求を書き込み（ステップＳ１０５３）、ステップＳ１０６２へ処理を移す。
セキュア割込ハンドラ１８１（後述する）から、いずれかのデバイスで割込が発生したことを示す割込発生通知を受け取ると、受け取った割込発生通知を、共有メモリ１１２に書き込み（ステップＳ１０５４）、ステップＳ１０６２へ処理を移す。
【０１２９】
受け取ったコマンドがシステムコールであれば（ステップＳ１０５２）、データ格納部に格納されている受け取り先のプログラムを示す識別情報により、該当するプログラムを呼び出す（ステップＳ１０５６）。
受け取ったコマンドが、アプリ復帰要求であれば（ステップＳ１０５２）、共有メモリに、受け取ったアプリ復帰要求を書き込み（ステップＳ１０６１）、ステップＳ１０６２へ処理を移す。また、具体的には図示していないが、応答通知の場合も同様に、データ格納部に含まれる識別情報と対応するアプリケーションを呼び出す。
【０１３０】
これらの処理の途中で、割込が発生し、割込みコントローラ１０７から割込発生通知を受け取ると（ステップＳ１０５７）、セキュア割込ハンドラ１８１を起動し（ステップＳ１０５９）、ステップＳ１０５２へ戻る。
＜ライブラリ１５２＞
ライブラリ１５２は、各種のプログラムで共通に利用される関数を含んでおり、一例として、メモリカード３００のアクセスを行うアクセス関数を含む。アクセス関数は、通常入出力デバイスドライバ１５７を呼び出し、データの読み出しを指示する関数である。
＜音楽再生プログラム１５３＞
音楽再生プログラム１５３は、利用者に表示する各種の画像データなどを含み、利用者の操作を受けてメモリカード３００に記憶されている音楽を再生するアプリケーションである。音楽再生プログラム１５３には、予め、セキュアアプリ情報とデーモン情報とがコーディングされている。セキュアアプリ情報は、音楽再生プログラム１５３が、セキュアな処理を依頼するプログラムを示す情報であり、具体的には、暗号化音楽復号プログラム１４１の記憶されている二次記憶部１０４上のアドレスである。デーモン情報は、セキュアアプリ情報の示すプログラムと対になるプログラムを示す情報であり、具体的には、音楽復号デーモン１４２の記憶されている二次記憶部１０４上のアドレスである。
＜音楽復号プログラム１７６及び音楽復号デーモン１５６＞
音楽復号プログラム１７６と音楽復号デーモン１５６は、対になって動作することにより、暗号化音楽データの復号処理が達成される。
【０１３１】
音楽復号プログラム１７６は、通常ＯＳ１５１及びセキュアＯＳ１７１を介して、音楽再生プログラム１５３から復号命令を受け、図８に示すようにデータ読出ステップ、コンテンツ鍵読出ステップ、復号ステップ及び音楽データ出力ステップを経て、音楽データを生成し、音楽データ出力ステップにおいて、処理結果として、バッファ１２３上の音楽データの書き込み先アドレスを出力する。
【０１３２】
これらの処理の中で、高いセキュリティを必要としない処理を音楽復号デーモン１５６へ依頼する。具体的には、セキュアＯＳ１７１へ外部処理要求を出力することによって、音楽復号デーモン１５６へデータ読み出し命令を出力する。その処理結果として共有メモリ１１２上の暗号化音楽データの書き込み先アドレスを受け取る。また、セキュアＯＳ１７１へ外部処理要求によって、音楽復号デーモン１５６へ復号命令を出力し、処理結果として、バッファ１２３上の音楽データの書き込み先アドレスを取得する。
【０１３３】
音楽復号デーモン１５６は、セキュアＯＳ１７１及び通常ＯＳ１５１を介して、音楽復号プログラム１７６からデータ読み出し命令及び復号命令を受け取る。また、通常入出力デバイスドライバ１５７、セキュア入出力エントリデバイスドライバ１５８、暗号エントリデバイスドライバ１５９、セキュア入出力デバイスドライバ１７８及び暗号デバイスドライバ１７９から各種の命令及びデータを受け取る。受け取った命令及びデータに基づいて各種の処理を行う。音楽復号デーモン１５６による処理について、図１２のフローチャートを用いて説明する。なお、図９においては、書略しているが、音楽復号デーモン１５６の受け取るすべておコマンド、データには、受け取り先である音楽復号デーモン１５６を示す識別情報としてハンドル値「１」が含まれている。
【０１３４】
セキュアＯＳ１７１を介して、各種の命令及びデータを受け取る（ステップＳ０１１）。受け取った命令を判別し（ステップＳ０１２）、データ読出命令であれば、ライブラリ１５２のアクセス関数を呼び出す（ステップＳ０１３）。
コマンドの出力元を示す識別情報としてデバイスＩＤ＿Ａと処理結果とを受け取ると、外部処理要求により、受け取った処理結果を音楽復号プログラム１７６へ出力する（ステップＳ０１４）。このとき、データ格納部には、処理結果と、受け取り先を示すハンドル値「１」とを格納する。
【０１３５】
コマンドの出力元を示すデバイスＩＤ＿Ｂと休眠要求とを受け取ると（ステップＳ０１２）、通常ＯＳ１５１へのシステムコールによって、受け取った休眠要求をセキュア入出力エントリデバイスドライバ１５８へ出力する（ステップＳ０１５）。このとき、データ格納部には、受け取り先を示す識別情報として、受け取ったデバイスＩＤ＿Ｂを格納し、システムコールの出力元を示す識別情報として音楽復号デーモン１５６自身を示すハンドル値「１」とを格納する。
【０１３６】
コマンドの出力元を示すデバイスＩＤ＿Ｂと、割込通知とを受け取ると（ステップＳ０１２）、セキュア処理要求のデータ格納部に、受け取った割込通知とデバイスＩＤ＿Ｂと音楽復号デーモン１５６自身を示すハンドル値「１」とを格納し、通常ＯＳへ出力することにより、受け取った割込通知をセキュア入出力デバイスドライバ１７８へ出力する（ステップＳ０１６）。
【０１３７】
セキュアＯＳ１７１及び通常ＯＳ１５１を介して、音楽復号プログラム１７６から、復号命令を受け取ると、システムコールにより暗号エントリデバイスドライバ１５９へ復号命令を出力する（ステップＳ０１７）。
応答通知により、暗号エントリデバイスドライバ１５９から、デバイスＩＤ＿Ｃと復号命令を受け取ると（ステップＳ０１２）、セキュア処理要求により、受け取った復号命令を暗号デバイスドライバ１７９へ出力する。このとき、データ格納部には、復号命令と受け取ったデバイスＩＤ＿Ｃと音楽復号デーモン１５６自身を示すハンドル値「１」とを格納する（ステップＳ０１８）。
【０１３８】
通常ＯＳ１５１から、デバイスＩＤ＿Ｃと休眠要求とを受け取ると、システムコールにより暗号エントリデバイスドライバ１５９へ、受け取った休眠要求を出力する（ステップＳ０１９）。このとき、データ格納部には、受け取り先を示す識別情報として受け取ったデバイスＩＤ＿Ｃと音楽復号デーモン１５６自身を示すハンドル値「１」と休眠要求とを格納する。
【０１３９】
応答通知によって、暗号エントリデバイスドライバ１５９から、デバイスＩＤ＿Ｃと割込通知とを受け取ると（ステップＳ０１２）、セキュア処理要求により、受け取った割込通知を暗号デバイスドライバ１７９へ出力する（ステップＳ０２１）。データ格納部には、受け取ったデバイスＩＤ＿Ｃと割込通知と音楽復号デーモン１５６自身を示すハンドル値「１」とを格納する。
【０１４０】
通常ＯＳ１５１から、デバイスＩＤ＿Ｃと処理結果とを受け取ると、システムコールにより、受け取った処理結果を暗号エントリデバイスドライバ１５９へ出力する（ステップＳ０２２）。
応答通知により、暗号エントリデバイスドライバ１５９から、デバイスＩＤ＿Ｃと処理結果とを受け取ると、セキュア処理要求によって、音楽復号プログラム１７６へ受け取った処理結果を出力する（ステップＳ０２３）。
＜通常入出力デバイスドライバ１５７＞
通常入出力デバイスドライバ１５７は、予め、通常入出力デバイスドライバ１５７自身を示す識別情報として、デバイスＩＤ＿Ａを有している。
【０１４１】
通常入出力デバイスドライバ１５７は、入出力部１１６を構成する通常入出力デバイス１３２を制御するプログラムである。
また、通常入出力デバイスドライバ１５７は、排他フラグを記憶している。通常入出力デバイス１３２が動作中は、排他フラグ「１」、動作中でなければ排他フラグ「０」を設定する。入出力の処理命令を受け取った際に排他フラグが「１」であれば、通常入出力デバイス１３２が動作中であり、処理を受け付けることができないことを示すエラー通知を出力する。
＜セキュア入出力エントリデバイスドライバ１５８及びセキュア入出力デバイスドライバ１７８＞
セキュア入出力デバイスドライバ１７８及びセキュア入出力エントリデバイスドライバ１５８は、予め、同一の識別情報、デバイスＩＤ＿Ｂを有する。
【０１４２】
セキュア入出力デバイスドライバ１７８及びセキュア入出力エントリデバイスドライバ１５８が、対になって制御することにより、セキュア入出力デバイス１３３は正常に動作する。セキュア入出力デバイスドライバ１７８は、セキュア入出力デバイス１３３の制御のうち、セキュアな処理である入出力処理の依頼及び処理結果の取得を行い、セキュア入出力エントリデバイスドライバ１５８は、高いセキュリティを必要としない処理である、休眠及び割込の検出を行う。
【０１４３】
本実施の形態において、セキュア入出力デバイスドライバ１７８は、セキュアＯＳ１７１を介して音楽復号プログラム１７６から、コンテンツ鍵読出命令を受け取る。コンテンツ鍵読出命令を受け取ると、暗号処理デバイス１１７へ、コンテンツ鍵の読出を指示する。次に、セキュアＯＳ１７１へ外部処理要求を出力することにより、音楽復号デーモン１５６へ休眠要求を出力する。このとき、コマンドのデータ格納部には、休眠要求と、受け取り先を示す識別情報として音楽復号プログラム１７６から受け取ったハンドル値「１」と、コマンドの出力元を示す識別情報としてセキュア入出力デバイスドライバ１７８自身を示すデバイスＩＤ＿Ｂとを格納する。
【０１４４】
次に、セキュア入出力デバイスドライバ１７８は、セキュアＯＳ１７１を介して音楽復号デーモン１５６から割込通知を受け取り、セキュア入出力デバイス１３３から処理結果として、コンテンツ鍵の格納されたアドレスを取得する。取得した処理結果をセキュアＯＳ１７１への応答通知により、音楽復号プログラム１７６へ出力する。
セキュア入出力エントリデバイスドライバ１５８は、通常ＯＳ１５１を介して音楽復号デーモン１５６から休眠要求を受け取る。休眠要求を受け取ると、通常ＯＳ１５１に対して、データ格納部に、ハンドル値「１」とデバイスＩＤ＿Ｂを含む休眠要求を出力する。
【０１４５】
次に、通常ＯＳ１５１により休眠が解除されると、キュア入出力エントリデバイスドライバ１５８は、応答通知により通常ＯＳ１５１を介して、音楽復号デーモン１５６へ割込通知を出力する。このとき、データ格納部には、「休眠要求」と、デバイスＩＤ＿Ｂと、ハンドル値「１」とを格納する。
＜暗号デバイスドライバ１７９及び暗号エントリデバイスドライバ１５９＞
暗号デバイスドライバ１７９及び暗号エントリデバイスドライバ１５９は、予め、識別情報としてデバイスＩＤ＿Ｃを有している。
【０１４６】
暗号デバイスドライバ１７９と暗号エントリデバイスドライバ１５９が、対になって制御することにより、暗号処理デバイス１１７は正常に動作することができる。暗号処理デバイス１１７の制御のうち、暗号デバイスドライバ１７９は、復号処理の依頼と処理結果の取得とを行い、暗号エントリデバイスドライバ１５９は、排他制御と休眠及び割込通知を行う。
【０１４７】
本実施の形態において、具体的には、暗号エントリデバイスドライバ１５９は、システムコールにより音楽復号デーモン１５６から復号命令を受け取る。復号命令を受け取ると、排他フラグによる排他制御を行う。つまり、排他フラグが「１」であれば、エラー通知を出力し、以下の処理を中止し、排他フラグが「０」であれば、排他フラグを「１」に変更する。
【０１４８】
次に、受け取った復号命令とハンドル値「１」と暗号エントリデバイスドライバ１５９自身の有するデバイスＩＤ＿Ｃとをデータ格納部に含む応答通知を通常ＯＳ１５１へ出力することにより、復号命令を音楽復号デーモン１５６へ出力する。
次に、システムコールにより音楽復号デーモン１５６から休眠要求を受け取る。次に、通常ＯＳ１５１へ休眠要求を出力する。このとき、休眠要求のデータ格納部には、システムコールに含んで受け取ったハンドル値「１」とデバイスＩＤ＿Ｃとが格納されている。
【０１４９】
次に、通常ＯＳにより休眠を解除される。休眠を解除され、応答通知により割込通知を音楽復号デーモン１５６へ出力する。
次に、通常ＯＳ１５１を介して、音楽復号デーモン１５６から処理結果を受け取る。処理結果を受け取ると、排他制御を解除して、排他フラグを「０」に戻す。応答通知により、受け取った処理結果を音楽復号デーモン１５６へ出力する。
【０１５０】
暗号デバイスドライバ１７９は、セキュア処理要求により、セキュアＯＳ１７１を介して、音楽復号デーモン１５６から復号処理命令受け取り、暗号処理デバイス１１７へ復号を依頼する。次に、暗号デバイスドライバ１７９自身の有するデバイスＩＤ＿Ｃと、復号処理命令と共に受け取ったハンドル値「１」と休眠要求をデータ格納部に格納した外部処理要求をセキュアＯＳ１７１へ出力する。
【０１５１】
次に、セキュアＯＳ１７１へのセキュア処理要求により、音楽復号デーモン１５６から割込通知を受け取り、暗号処理デバイス１１７から、処理結果としてバッファ１２３上の書き込み先アドレスを受け取る。受け取った処理結果とハンドル値「１」とデバイスＩＤ＿Ｃとデータ格納部に含む外部処理要求をセキュアＯＳ１７１へ出力することにより、処理結果を音楽復号デーモン１５６へ出力する。
【０１５２】
＜通常切替デバイスドライバ１６０及びセキュア切替デバイスドライバ１８０＞
通常ＯＳ１５１又はセキュアＯＳから切替指示を受け、通常切替デバイスドライバ１６０及びセキュア切替デバイスドライバ１８０は、切替制御部１０６へ切替指示を出力し、ＣＰＵ１０２の使用権を通常ＯＳ１５１からセキュアＯＳ１７１へ、又は、セキュアＯＳ１７１から通常ＯＳ１５１へ移すプログラムである。
【０１５３】
（ａ）切替処理１
以下に、図１３を用いて、通常ＯＳ１５１からセキュアＯＳ１７１への切替処理について説明する。なお、これは、図１０のステップＳ１０２８及び図１６以降のフローチャートの切替処理１の詳細である。
通常切替デバイスドライバ１６０は、通常ＯＳ１５１から呼び出され、切替指示を受け取る（ステップＳ１６２）。切替指示を受け取ると、通常ＯＳ１５１のコンテキストを通常メモリ１１１上に退避する（ステップＳ１６３）。次に、切替制御部１０６へ切替指示を出力する（ステップＳ１６４）。
【０１５４】
切替制御部１０６は、ＣＰＵ１０２及びＭＭＵ１０３をクリアした後、メモリ保護部１１４へ接続指示を出力し、セキュアメモリ１１３とバス１３０とを接続する（ステップＳ１６６）。次に、切替制御部１０６は、セキュアメモリ１１３上のセキュア切替デバイスドライバ１８０を呼び出す（ステップＳ１６７）。
セキュア切替デバイスドライバ１８０は、呼び出されると、セキュアＯＳ１７１のコンテキストをＣＰＵ１０２に復帰させる（ステップＳ１６８）。
【０１５５】
セキュアＯＳ１７１は、デバッグ無効化プログラム１７３により、デバッガＩＦ１０１を無効化する（ステップＳ１６９）。
（ｂ）切替処理２
以下に、図１４のフローチャートを用いて、セキュアＯＳ１７１から通常ＯＳ１５１への切替処理について説明する。なお、これは、図１１のステップＳ１０６２及び図１６以降のフローチャートの切替処理２の詳細を示している。
【０１５６】
セキュアＯＳ１７１は、デバッグ無効化プログラム１７３により、デバッガＩＦ１０１を有効にし（ステップＳ１７６）、セキュア切替デバイスドライバ１８０を呼び出し、切替指示を出力する（ステップＳ１７７）。
セキュア切替デバイスドライバ１８０はセキュアＯＳ１７１のコンテキストを退避し（ステップＳ１７８）、切替制御部１０６へ切替指示を出力する。
【０１５７】
切替制御部１０６は、切替指示を受け取り、ＣＰＵ１０２及びＭＭＵ１０３をクリアした後、メモリ保護部１１４へ切断指示を出力し、セキュアメモリ１１３とバス１３０とを切断する（ステップＳ１８１）。次に、通常メモリ１１１上の通常切替デバイスドライバ１６０を呼び出す（ステップＳ１８２）。
通常切替デバイスドライバ１６０は通常ＯＳ１５１のコンテキストをＣＰＵ１０２へ復帰させる（ステップＳ１８３）。
【０１５８】
なお、ここでは、セキュアＯＳ１７１から通常ＯＳ１５１へ切り替える際に、デバッガＩＦ１０１を有効にしているが、有効にしなくても良い。この場合、携帯電話１００に電源を入れて、最初に、通常ＯＳ１５１からセキュアＯＳ１７１へ切り替える際に、デバッグ無効化プログラム１７３により、デバッガＩＦ１０１を無効にし、その後は、セキュアＯＳ１７１から通常ＯＳ１５１への切替処理においても、通常ＯＳ１５１からセキュアＯＳ１７１への切替処理においても、デバッグガＩＦ１０１を無効のままにしておく。
【０１５９】
また、本実施の形態では、セキュアＯＳ１７１が有するデバッグ無効化プログラム１７３によって、デバッガＩＦ１０１を無効化及び有効化しているが、通常ＯＳ１５１がデバッグ無効化プログラムを含んでいても良い。また、デバッグ無効化プログラムは、通常メモリ１１１上にをロードされ、通常ＯＳ１５１に管理される独立したプログラムであってもよい。
【０１６０】
また、通常ＯＳ１５１及びセキュアＯＳ１７１が、それぞれ、デバッグ無効化プログラムを有しているとしても良い。この場合、通常ＯＳ１５１の有するデバッグ無効化プログラムが、デバッガＩＦ１０１を無効化し、セキュアＯＳ１７１の有するデバッグ無効化プログラムがデバッガＩＦを有効化する。また、逆に、セキュアＯＳ１７１の有するデバッグ無効化プログラムが、デバッガＩＦ１０１を無効化し、通常ＯＳ１５１の有するデバッグ無効化プログラムがデバッガＩＦを有効化してもよい。
【０１６１】
また、これらのデバッグ無効化プログラムは、それぞれ、独立したプログラムとして、通常メモリ１１１及びセキュアメモリ１１３にロードされていても良い。
＜通常割込ハンドラ１６１及びセキュア割込ハンドラ１８１＞
通常割込ハンドラ１６１は、通常ＯＳ１５１及び通常ＯＳ１５１により制御されるプログラムの実行中に、割込が発生した場合に、通常ＯＳ１５１に呼び出される。通常ＯＳ１５１から呼び出され、割込発生通知を受け取ると、割込コントローラ１０７を制御し、割込を発生させている要因を調査する。次に、割込を発生させているデバイスを示す識別情報と割込通知とを通常ＯＳ１５１へ出力する。
【０１６２】
セキュア割込ハンドラ１８１は、セキュアＯＳ１７１及びセキュアＯＳ１７１により制御されるプログラムの実行中に、割込が発生した場合に、セキュアＯＳ１７１に呼び出される。セキュアＯＳ１７１から呼び出され、割込発生通知を受け取ると、ＣＰＵ１０２の割込検出用のレジスタへダミーデータを書き込むことによって、割込マスク処理を施し、セキュアＯＳ１７１へ割込発生通知を出力する。
【０１６３】
（３）入出力部１１６
入出力部１１６は、図８に示すようにアクセス部１３１、通常入出力デバイス１３２及びセキュア入出力デバイス１３３から構成される。
アクセス部１３１は、メモリカード３００と接続され、メモリカード３００と通常入出力デバイス１３２及びセキュア入出力デバイス１３３との間で、情報の入出力を行う。
【０１６４】
通常入出力デバイス１３２は、通常入出力デバイスドライバ１５７の制御により、メモリカード３００の一般領域３０３へのデータの読み出し及び書き込みを行う。一例として、引数として楽曲ＩＤを受け取り、読出要求を受けると、受け取った楽曲ＩＤと対応する暗号化音楽データを一般領域３０３から読み出し、読み出した暗号化音楽データを共有メモリ１１２へ書き込む。
【０１６５】
書き込み終了後に、通常入出力デバイスドライバ１５７から結果要求を受け取ると、処理結果として、暗号化音楽データを書き込んだ、共有メモリ１１２上のアドレスを出力する。
セキュア入出力デバイス１３３は、セキュア入出力デバイスドライバ１７８の制御により、メモリカード３００のセキュア処理部３０２との間で、CPRMの仕組みに基づいて相互認証を行う。相互認証が成功であった場合に限り、鍵を共有し、共有した鍵を用いて、安全に、セキュア領域３０６へのデータの書き込み及び読み出しを行う。
【０１６６】
また、認証に失敗した場合は、メモリカード３００にアクセスできないことを示すカードエラー通知をセキュア入出力デバイスドライバ１７８へ出力する。  
ここで、セキュア入出力デバイス１３３は、メモリカード３００のセキュア領域３０６にアクセスする場合にのみ使用されるデバイスであり、メモリカード３００のセキュア領域３０６にアクセスするプログラムは、限定されている。従って、複数のアプリケーションから同時に処理を依頼されることはありえないため、排他制御を行う必要がない。
【０１６７】
（４）暗号処理デバイス１１７
暗号処理デバイス１１７は、暗号デバイスドライバ１７９の制御により、各種データの暗号処理を行う。本実施の形態では、暗号デバイスドライバ１７９から、暗号化音楽データの記憶されている共有メモリ１１２上のアドレスと、コンテンツ鍵が記憶されているセキュアメモリ１１３上のアドレスとを受け取り、暗号化音楽データの復号を指示される。コンテンツ鍵を用いて、暗号化音楽データに復号アルゴリズムＤ１を施して、音楽データを生成し、生成した音楽データをバッファ１２３へ書き込む。書き込み先のアドレスを、処理結果として暗号デバイスドライバ１７９へ出力する。復号アルゴリズムＤ１は、暗号化アルゴリズムＥ１によって生成された暗号文を復号するものである。
【０１６８】
ここで、暗号処理デバイス１１７は、各種の暗号化されたデータを復号するデバイスであり、コンテンツ配信サーバから送信される暗号化コンテンツなどの復号も行う。従って、暗号処理デバイス１１７は、複数の異なるプログラムから復号処理を依頼される可能性があり、排他制御が必要である。
（５）ＣＰＵ１０２
ＣＰＵ１０２は、命令フェッチ部、命令デコーダ、演算器、プログラムカウンタ、レジスタなどを備え、通常メモリ１１１又はセキュアメモリ１１３上のプログラムから命令をフェッチし、フェッチした命令を解読し、解読した命令を実行する。
【０１６９】
（６）ＭＭＵ１０３
ＭＭＵ１０３は、論理アドレスを物理アドレスに変換することにより仮想記憶機能を実現する。
（７）デバッガＩＦ１０１及び割込コントローラ１０７
デバッガＩＦ１０１は、携帯電話１００と外部のデバッガとを接続するためのインターフェースである。
【０１７０】
割込コントローラ１０７は、各種の割込を検出し、ＣＰＵ１０２の割込検出用のレジスタへ割込発生通知を出力する。
（８）切替制御部１０６及びメモリ保護部１１４
切替制御部１０６は、通常メモリ１１１上の通常切替デバイスドライバ１６０又は、セキュアメモリ１１３上のセキュア切替デバイスドライバ１８０から切替指示を受け取り、メモリ保護部１１４により、バス１３０とセキュアメモリ１１３を接続又は切断する。切替制御部１０６及びメモリ保護部１１４の詳細な動作は、上記の（ａ）切替処理１及び（ｂ）切替処理２において説明した通りである。
【０１７１】
（９）無線通信制御部１１８、通信部１２１及びアンテナ１２２
通信部１２１は、無線通信制御部１１８と、携帯電話網１０、インターネット２０に接続された外部機器との間で、アンテナ１２２を介して情報の送受信を行う。
無線通信制御部１１８は、ベースバンド部、変復調部、増幅器などを備えており、通信部１２１及びアンテナ１２２を介して送受信される各種の情報の信号処理を行う。
【０１７２】
（１０）バッファ１２３、符号処理部１２４、Ｄ／Ａ変換部１２６
バッファ１２３は、音楽データを一時的に記憶する。
符号処理部１２４は、バッファ１２３に記憶されている音楽データにＭＰ３などの符号化技術に従った復号処理を施し、Ｄ／Ａ変換部１２６へ出力する。
Ｄ／Ａ変換部１２６は、符号処理部１２４により復号された音楽データをアナログ音声信号に変換し、スピーカ１２０へ出力する。
【０１７３】
（１１）入力部１０８、表示部１０９、マイク１１９スピーカ１２０
入力部１０８は、テンキー、決定ボタンなどの各種のボタンを備え、利用者によるこれらの操作を受け付ける。
表示部１０９は、ＶＲＡＭ、液晶画面を備え、各種の画面を表示する。
マイク１１９は、音声を検出し、検出した音声を無線通信制御部１１８へ出力する。
【０１７４】
スピーカ１２０は、無線通信制御部１１８及びＤ／Ａ変換部１２６から、アナログ音声信号を受け取り、受け取った音声信号に基づく音声を出力する。
１．３  携帯電話１００及びメモリカード３００の動作
図１５〜図３５に示すフローチャートは、携帯電話１００の動作を示すフローチャートである。図３６〜図４０は、携帯電話１００の動作における各プログラム間のコマンドの授受を示したシーケンス図である。これらのフローチャート及びシーケンス図を用いて、携帯電話１００の動作について説明する。
【０１７５】
なお、シーケンス図とフローチャートの対応する処理には、同一のステップ番号を付している。また、通常ＯＳ１５１及びセキュアＯＳ１７１についての説明で述べたように、通常メモリ１１１及びセキュアメモリ１１３上の各プログラムは、システムコール、応答通知、外部処理要求、セキュア処理要求によって、他のプログラムへのコマンド及びデータの仲介を通常ＯＳ１５１及びセキュアＯＳ１７１へ依頼している。図１５〜図４０及び以下の説明においては、システムコール、応答通知、外部処理要求、セキュア処理要求の記載を省略し、各プログラムが、これらのコマンドのデータ格納部に格納して出力する識別情報、データ及びコマンドをのみを記載している。
【０１７６】
（１）携帯電話１００の動作
携帯電話１００の動作について、図１５に示すフローチャートを用いて説明する。
携帯電話１００は、入力部１０８により利用者によるボタン操作を受け付ける（ステップＳ１０１）。受付た操作が、音楽再生を示している場合、音楽再生プログラム１５３を起動する（ステップＳ１０２）。受け付けたボタン操作がその他の処理を示している場合、その他の処理を行う（ステップＳ１０３）。
【０１７７】
次に、音楽復号プログラムの登録処理を行う（ステップＳ１０４）。次に、音楽復号プログラム１７６へ復号処理を依頼する（ステップＳ１０６）。音楽復号プログラム１７６による復号が終了すると、生成された音楽データをＭＰ３に従った方法で伸張し、アナログデータに変換してアナログ音楽データを生成し、生成したアナログ音楽データをスピーカ１２０により出力する（ステップＳ１０７）。入力部１０８により、音楽再生の終了を示すボタン操作を受け付けるまで（ステップＳ１０８）、ステップＳ１０６〜１０８を繰り返す。
【０１７８】
音楽再生の終了を示すボタン操作を受け付けると（ステップＳ１０８のＹＥＳ）、音楽復号プログラムの削除処理を行う（ステップＳ１０９）。
（２）音楽復号プログラムの登録
図１６〜１７は、音楽復号プログラムの登録処理における、各プログラムの動作を詳細に示すフローチャートである。これは、図３６におけるステップＳ１３２〜ステップＳ１５３のシーケンスと対応している。図１６〜１７に示すフローチャート及び図３６のシーケンス図を用いて、音楽復号プログラムの登録処理について説明する。
【０１７９】
音楽再生プログラム１５３は、予め、コーディングされているデーモン情報とセキュアアプリ情報とを読み出す（ステップＳ１３１）。セキュアアプリ登録要求と、読み出したデーモン情報及びセキュアアプリ情報とを通常ＯＳ１５１へ出力する（ステップＳ１３２）。
通常ＯＳ１５１は、セキュアアプリ登録要求を受け取ると、音楽再生プログラム１５３のコンテキストを保存し、保存先のアドレスをアプリ管理表のエントリ１６７のアプリコンテキストアドレスに書き込む（ステップＳ１３３）。次に、受け取ったセキュアアプリ情報と対応する暗号化音楽復号プログラム１４１を二次記憶部１０４から読み出し、共有メモリ１１２へ書き込む（ステップＳ１３４）。次に、セキュアアプリ登録要求を共有メモリ１１２のコマンド領域へ書き込み（ステップＳ１３６）、切替処理１に移る（ステップＳ１３７）。
【０１８０】
切替処理１が終了すると、セキュアＯＳ１７１は共有メモリ１１２からセキュアアプリ登録要求を読み込む（ステップＳ１３８）。次に、暗復号プログラムにより、共有メモリ１１２上の暗号化音楽復号プログラムを復号して音楽復号プログラムを生成し、生成した音楽復号プログラムをセキュアメモリ１１３上に書き込む（ステップＳ１３９）。音楽復号プログラムに対して、ハンドル値「１」を設定し、セキュアアプリ管理表１８６のエントリ１８７のハンドル値に「１」を書き込み、セキュアアプリアドレスに音楽復号プログラム１７６を書き込んだセキュアメモリ１１３上のアドレスを書き込む（ステップＳ１４１）。
【０１８１】
次に、登録完了通知とハンドル値「１」とを共有メモリ１１２に書き込み（ステップＳ１４３）、切替処理２（ステップＳ１４４）へ処理を移す。
通常ＯＳ１５１は、共有メモリ１１２から登録完了通知とハンドル値「１」とを読み出す（ステップＳ１４６）。読み出したハンドル値「１」を、アプリ管理表１６６のエントリ１６７に書き込む（ステップＳ１４７）。デーモン情報を基に二次記憶部１０４から、音楽復号デーモン１４２を読み出し、通常メモリ１１１上に書き込む（ステップＳ１４９）。通常メモリ１１１上の音楽復号デーモン１５６の書き込み先アドレスをアプリ管理表１６６のエントリ１６７へ書き込む（ステップＳ１５１）。
【０１８２】
次に、エントリ１６７のアプリコンテキストアドレスを基に、音楽再生プログラム１５３のコンテキストをＣＰＵ１０２に復帰させ（ステップＳ１５２）、受け取ったハンドル値「１」を、音楽再生プログラム１５３へ出力する（ステップＳ１５３）。
音楽再生プログラム１５３は、受け取ったハンドル値「１」を、通常メモリ１１１における音楽再生プログラム１５３自身の記憶領域に書き込む（ステップＳ１５４）。
【０１８３】
（３）音楽復号プログラムへの処理依頼
図１８〜２７のフローチャートは、音楽再生プログラム１５３の依頼により、音楽復号プログラム１７６が暗号化音楽データを復号する際の各プログラムの動作を示している。これは、図３６のステップＳ１９３〜図４２のステップＳ３４７と対応している。
音楽再生プログラム１５３は、曲目リストなどを含む選択画面を表示し、利用者の楽曲選択を受け付ける（ステップＳ１９１）。受け付けた楽曲を示す楽曲ＩＤとハンドル値「１」を読み出す（ステップＳ１９２）。読み出した楽曲ＩＤを引数として、引数とハンドル値「１」と復号処理命令とを通常ＯＳ１５１へ出力する（ステップＳ１９３）。
【０１８４】
通常ＯＳ１５１は、音楽再生プログラム１５３のコンテキストを通常メモリ１１１上に保存し（ステップＳ１９６）、保存先のアドレスをアプリ管理表１６６のハンドル値「１」を含むエントリ１６７に書き込む（ステップＳ１９７）。次に、受け取った引数とハンドル値「１」と復号処理命令とを共有メモリ１１２に書き込み（ステップＳ１９８）、切替処理１を行う（ステップＳ１９９）。
【０１８５】
セキュアＯＳ１７１は、切替処理１が終了すると（ステップＳ１９９）、共有メモリ１１２から引数とハンドル値「１」と復号処理命令とを読み出す（ステップＳ２０１）。セキュアアプリ管理表１８６上で、読み出したハンドル値「１」を含むエントリ１８７のセキュアアプリアドレスを基に、音楽復号プログラム１７６を起動し（ステップＳ２０２）、読み出した引数とハンドル値「１」と復号処理命令とを音楽復号プログラム１７６へ出力する（ステップＳ２０３）。
【０１８６】
音楽復号プログラム１７６は、セキュアＯＳ１７１から引数と復号処理命令とを受け取り、受け取った引数（楽曲ＩＤ）を記憶する。次に、ＣＰＵ１０２は、音楽復号プログラム１７６（データ読み出しステップ）を実行する（ステップＳ２０４）。音楽復号プログラム１７６は、楽曲ＩＤを読み出し（ステップＳ２０６）、読み出した楽曲ＩＤを引数として、データ読出命令と引数とハンドル値「１」をセキュアＯＳ１７１へ出力する（ステップＳ２０８）。
【０１８７】
セキュアＯＳ１７１は、音楽復号プログラム１７６からデータ読出命令と引数とハンドル値「１」とを受け取り、音楽復号プログラム１７６のコンテキストをセキュアメモリ１１３上に保存し、保存先のアドレスをセキュアアプリ管理表１８６のエントリ１８７に書き込む（ステップＳ２０９）。次に、共有メモリ１１２に受け取ったデータ読出命令と引数とハンドル値「１」とを書き込み（ステップＳ２１１）、切替処理２に移る（ステップＳ２１６）。
【０１８８】
切替処理２が終了すると（ステップＳ２１６）、通常ＯＳ１５１は、共有メモリ１１２からデータ読出命令と引数とハンドル値「１」とを読み出す（ステップＳ２１７）。アプリ管理表１６６のハンドル値「１」を含むエントリ１６７を選択し、選択したエントリ１６７に含まれるデーモンアドレスにより、音楽復号デーモン１５６を起動する（ステップＳ２１８）。読み出したデータ読出命令と引数とハンドル値「１」とを音楽復号デーモン１５６へ出力する（ステップＳ２１９）。
【０１８９】
音楽復号デーモン１５６は、データ読出命令と引数とハンドル値「１」とを受け取る。データ読出命令を受け取ると、ライブラリ１５２に格納されているアクセス関数を呼び出し、引数とハンドル値「１」とを出力する（ステップＳ２２１）。音楽復号デーモン１５６に呼び出されたアクセス関数は、読出要求と引数とデバイスＩＤ＿Ａと受け取ったハンドル値「１」とを通常ＯＳ１５１へ、出力する（ステップＳ２２２）。通常ＯＳ１５１は、受け取ったデバイスＩＤ＿Ａと対応する通常入出力デバイスドライバ１５７へ、読出要求と引数とデバイスＩＤ＿Ａとハンドル値「１」とを出力する（ステップＳ２２３）。
【０１９０】
通常入出力デバイスドライバ１５７は、読出要求、引数及びハンドル値「１」を受け取る。次に、排他フラグが「０」であるか否かを判断する（ステップＳ２２４）。排他フラグが「１」であれば（ステップＳ２２４のＮＯ）、通常入出力デバイスドライバ１５７は、通常入出力デバイス１３２が、動作中であり、新たな読出要求を受け付けることができないことを示すエラー通知を出力する。
【０１９１】
通常ＯＳ１５１及びアクセス関数を介して、音楽復号デーモン１５６は、エラー通知を受け取り、一定時間経過後に、再度、読出要求を出力する。また、受け取ったエラー通知を通常ＯＳ１５１、セキュアＯＳ１７１を介して音楽復号プログラム１７６へ出力し、復号の処理を中止するとしても良い。
排他フラグが「０」であると判断すると（ステップＳ２２４のＹＥＳ）、排他フラグを「１」に変更し（ステップＳ２２７）、受け取った引数を通常入出力デバイス１３２へ出力し、データの読み出しを指示する（ステップＳ２３１）。
【０１９２】
通常入出力デバイス１３２は、引数（楽曲ＩＤ）と読出要求とを受け取り、メモリカード３００の一般領域３０３から、受け取った楽曲ＩＤと対応する暗号化音楽データ３０４の読み出し及び読み出した暗号化音楽データ３０４の共有メモリ１１２への書き込みを開始する（ステップＳ２３６）。
通常入出力デバイスドライバ１５７は、通常入出力デバイス１３２へ読出要求を出力すると（ステップＳ２３１）、通常ＯＳ１５１へ、通常入出力デバイスドライバ１５７自身の有するデバイスＩＤ＿Ａ及び受け取ったハンドル値「１」を含む休眠要求を出力する（ステップＳ２３２）。
【０１９３】
通常ＯＳ１５１は、休眠要求を受け取ると、ハンドル値「１」と対応する音楽復号デーモン１５６とデバイスＩＤ＿Ａと対応する通常入出力デバイスドライバ１５７とを休眠状態にする（ステップＳ２３３、ステップＳ２３４）。次に、タスクスケジューリングにより、実行可能状態の他のプログラムへＣＰＵ１０２を割り当てる（ステップＳ２３８）。
通常入出力デバイス１３２における処理が終了すると、割込が発生し、音楽復号デーモン１５６は、処理結果を取得する（ステップＳ２３９）。ステップＳ２３９における、割込発生時の処理１につては、後で説明する。また、ステップＳ２３９の処理は、図３７のステップＳ４６３〜４７８のシーケンスと対応している。
【０１９４】
割込発生時の処理１（ステップＳ２３９）において、音楽復号デーモン１５６は、通常入出力デバイス１３２による処理結果として、暗号化音楽データの共有メモリ１１２上の書込先アドレスを取得する。取得した処理結果とハンドル値「１」を通常ＯＳ１５１へ出力する（ステップＳ２４１）。通常ＯＳ１５１は受け取った処理結果とハンドル値「１」とを共有メモリ１１２へ書き込み（ステップＳ２４２）、切替処理１を行う（ステップＳ２４４）。
【０１９５】
切替処理１（ステップＳ２４４）が終了すると、セキュアＯＳ１７１は、共有メモリ１１２からハンドル値「１」と処理結果とを読み出す（ステップＳ２５１）。セキュアアプリ管理表１８６から、読み出したハンドル値「１」を含むエントリ１８７を選択し、エントリ１８７のセキュアアプリコンテキストアドレスにより音楽復号プログラム１７６のコンテキストをＣＰＵ１０２に復帰させる（ステップＳ２５２）。次に、読み出した処理結果とハンドル値「１」とを音楽復号プログラム１７６へ出力する（ステップＳ２５４）。
【０１９６】
音楽復号プログラム１７６は、処理結果として暗号化音楽データの書込先アドレスを受け取り、受け取った書込先アドレスを自身の記憶領域に記憶する。
次に、ＣＰＵ１０２は、音楽復号プログラム１７６（コンテンツ鍵読出ステップ）を実行する（ステップＳ２５６）。音楽復号プログラム１７６は、コンテンツ鍵読出命令とデバイスＩＤ＿Ｂと音楽復号プログラム１７６自身を示すハンドル値「１」とを含むシステムコールをセキュアＯＳ１７１へ出力する（ステップＳ２５７）。
【０１９７】
セキュアＯＳ１７１は、コンテンツ鍵読出命令とデバイスＩＤ＿Ｂとハンドル値「１」とを受け取り、受け取ったデバイスＩＤ＿Ｂと対応するセキュア入出力デバイスドライバ１７８へ、受け取ったコンテンツ鍵読出命令とデバイスＩＤ＿Ｂとハンドル値「１」とを出力する（ステップＳ２５８）。
セキュア入出力デバイスドライバ１７８は、コンテンツ鍵読出命令とデバイスＩＤ＿Ｂとハンドル値「１」とを受け取り、セキュア入出力デバイス１３３へ、コンテンツ鍵読出命令を出力する（ステップＳ２５９）。
【０１９８】
セキュア入出力デバイス１３３は、コンテンツ鍵読出命令を受け取り、次に、メモリカード３００のセキュア処理部３０２との間で相互認証を行う（ステップＳ２６２）。認証に成功すると（ステップＳ２６３のＹＥＳ）、コンテンツ鍵の取得を開始する（ステップＳ２６６）。
認証が失敗であった場合、カードエラー通知を出力し、前記コンテンツ鍵の取得を中止する（ステップＳ２６４）。この場合、音楽復号デーモン１５６及び音楽復号プログラム１７６は、復号処理を中止し、音楽再生プログラム１５３は、メモリカード３００が読み取り不可であることを通知する画面を表示する。
【０１９９】
セキュア入出力デバイスドライバ１７８は、次に、セキュアＯＳ１７１へ休眠要求と、受け取ったハンドル値「１」と、セキュア入出力デバイスドライバ１７８自身を示すデバイスＩＤ＿Ｂとを出力する（ステップＳ２７１）。なお、ここで出力される休眠要求は、セキュアＯＳ１７１へ休眠処理を要求するものではなく、外部処理要求のデータ格納部に格納され、音楽復号デーモン１５６へ仲介されるコマンドである。
【０２００】
セキュアＯＳ１７１は、セキュア入出力デバイスドライバ１７８から、休眠要求とハンドル値「１」とデバイスＩＤ＿Ｂとを受け取り、共有メモリ１１２へ、受け取った休眠要求とハンドル値「１」とデバイスＩＤ＿Ｂとを書き込む（ステップＳ２７２）。次に、切替処理２に移る（ステップＳ２７３）。
切替処理が終了すると（ステップＳ２７３）、通常ＯＳ１５１は、共有メモリ１１２から、休眠要求とハンドル値「１」とデバイスＩＤ＿Ｂとを読み出す（ステップＳ２７４）。読み出したハンドル値「１」を含むエントリ１６８を基に音楽復号デーモン１５６を起動し（ステップＳ２７６）、読み出した休眠要求とデバイスＩＤ＿Ｂとハンドル値「１」とを出力する（ステップＳ２７７）。
【０２０１】
音楽復号デーモン１５６は、通常ＯＳ１５１から休眠要求とデバイスＩＤ＿Ｂとハンドル値「１」とを受け取る。休眠要求とを受け取ると、通常ＯＳ１５１へ休眠要求とデバイスＩＤ＿Ｂとハンドル値「１」とを含むシステムコールを出力する（ステップＳ２７８）。
セキュアＯＳ１７１は、受け取ったデバイスＩＤ＿Ｂと対応するセキュア入出力エントリデバイスドライバ１５８へ、受け取った休眠要求とデバイスＩＤ＿Ｂとハンドル値「１」とを出力する（ステップＳ２８１）。
【０２０２】
セキュア入出力エントリデバイスドライバ１５８は、通常ＯＳ１５１を介して音楽復号デーモン１５６から休眠要求を受け取ると、デバイスＩＤ＿Ｂとハンドル値「１」とを含む休眠要求を通常ＯＳ１５１へ出力する（ステップＳ２８２）。
通常ＯＳ１５１は、休眠要求とデバイスＩＤ＿Ｂとハンドル値「１」とを受け取る。休眠要求を受け取ると、受け取ったデバイスＩＤ＿Ｂと対応するセキュア入出力エントリデバイスドライバ１５８と、受け取ったハンドル値「１」と対応する音楽復号デーモン１５６とに休眠処理を行う（ステップＳ２８３、ステップＳ２８４）。
【０２０３】
次に、通常ＯＳ１５１は、タスクスケジューリングを行い、実行可能状態の他のプログラムにＣＰＵを割り当てる（ステップＳ２８６）。
セキュア入出力デバイス１３３によるコンテンツ鍵の取得が終了し、割込発生時の処理２（ステップＳ２８７）により、音楽復号プログラム１７６は、処理結果を取得する。ステップＳ２８７の割込発生時の処理２については、後で説明する。また、ステップＳ２８７における処理は、図３８のステップＳ５１２〜図３９のステップＳ５４１に対応している。
【０２０４】
ステップＳ２８７において、音楽復号プログラム１７６は、処理結果として、コンテンツ鍵が記憶されているセキュアメモリ１１３上のアドレスを取得する。次に、ＣＰＵ１０２は、音楽復号プログラム１７６（復号ステップ）を実行する（ステップＳ２９１）。音楽復号プログラム１７６は、セキュアメモリ１１３上のコンテンツ鍵の記憶されているアドレスと共有メモリ１１２上の暗号化音楽データの記憶されているアドレスとを引数として、復号命令と引数とハンドル値「１」とをセキュアＯＳ１７１へ出力する（ステップＳ２９２）。
【０２０５】
セキュアＯＳ１７１は、音楽復号プログラム１７６から復号命令と引数とハンドル値「１」を受け取る。次に、受け取った復号命令と引数とハンドル値「１」とを共有メモリ１１２へ書き込み（ステップＳ２９３）、切替処理２を行う（ステップＳ２９４）。
切替処理２が終了すると（ステップＳ２９４）、通常ＯＳ１５１は、共有メモリ１１２から復号命令、引数及びハンドル値「１」を読み出す（ステップＳ２９６）。読み出したハンドル値「１」とアプリ管理表１６６とを用いて、音楽復号デーモン１５６を起動し、音楽復号デーモン１５６へ読み出した復号命令と引数とハンドル値「１」とを出力する（ステップＳ２９７）。
【０２０６】
音楽復号デーモン１５６は、通常ＯＳ１５１から復号命令と引数とハンドル値「１」とを受け取る。復号命令を受け取ると、受け取った復号命令及び引数と、デバイスＩＤ＿Ｃ、ハンドル値「１」を通常ＯＳ１５１へ出力する（ステップＳ２９８）。
通常ＯＳ１５１は、音楽復号デーモン１５６から復号命令、引数、デバイスＩＤ＿Ｃ及びハンドル値「１」を受け取り、受け取ったデバイスＩＤ＿Ｃと対応する暗号エントリデバイスドライバ１５９へ、受け取った復号命令、引数、デバイスＩＤ＿Ｃ及びハンドル値「１」を出力する（ステップＳ３０１）。
【０２０７】
暗号エントリデバイスドライバ１５９は、通常ＯＳ１５１を介して音楽復号デーモン１５６から引数と復号命令とデバイスＩＤ＿Ｃとハンドル値「１」とを受け取る。復号命令を受け取ったとき、排他フラグが「１」であれば（ステップＳ３０３のＮＯ）、暗号処理デバイス１１７が、既に動作中であり、新たな処理の依頼を受け付けられないことを示すエラー通知を出力する（ステップＳ３０４）。このとき、エラー通知を受け取った音楽復号デーモン１５６は、一定時間経過後に再度、復号命令を出力する。
【０２０８】
排他フラグが「０」であれば（ステップＳ３０３のＹＥＳ）、排他フラグを「１」に変更し（ステップＳ３０６）、受け取った引数と復号命令とハンドル値「１」及びデバイスＩＤ＿Ｃを通常ＯＳ１５１へ出力する（ステップＳ３０７）
通常ＯＳは、受け取ったハンドル値「１」と対応する音楽復号デーモン１５６を呼び出し、受け取った復号命令と引数とハンドル値「１」とデバイスＩＤ＿Ｃとを出力する（ステップＳ３０８）。
【０２０９】
音楽復号デーモン１５６は、通常ＯＳ１５１を介して、暗号エントリデバイスドライバ１５９から復号命令と引数とハンドル値「１」とデバイスＩＤ＿Ｃとを受け取る。次に、受け取った復号命令と引数とデバイスＩＤ＿Ｃとハンドル値「１」を通常ＯＳ１５１へ出力する（ステップＳ３０９）。
通常ＯＳ１５１は、音楽復号デーモン１５６から、復号命令と引数とデバイスＩＤ＿Ｃとハンドル値「１」を受け取り、共有メモリ１１２へ、受け取った復号命令と引数とデバイスＩＤ＿Ｃとハンドル値「１」とを書き込み（ステップＳ３１２）、切替処理２を行う（ステップＳ３１３）。
【０２１０】
切替処理２が終了すると（ステップＳ３１３）、セキュアＯＳ１７１は、共有メモリ１１２から復号命令と引数とデバイスＩＤ＿Ｃとハンドル値「１」とを読み出す（ステップＳ３１４）。読み出したデバイスＩＤ＿Ｃを基に、暗号デバイスドライバ１７９を起動し（ステップＳ３１５）、読み出した復号命令、引数、ハンドル値「１」を暗号デバイスドライバ１７９へ出力する（ステップＳ３１６）。
【０２１１】
暗号デバイスドライバ１７９は、セキュアＯＳ１７１から復号命令と引数とデバイスＩＤ＿Ｃとハンドル値「１」とを受け取り、暗号処理デバイス１１７へ受け取った引数を出力し復号を命令する（ステップＳ３１７）。
暗号処理デバイス１１７は、暗号デバイスドライバ１７９から復号を命令されると、セキュアメモリ１１３からコンテンツ鍵を読み出し、読み出したコンテンツ鍵を用いて、共有メモリ１１２上の暗号化音楽データに復号アルゴリズムＤ１を施して音楽データを生成し、生成した音楽データをバッファ１２３へ出力する（ステップＳ３１８）。
【０２１２】
暗号デバイスドライバ１７９は、暗号処理デバイス１１７へ復号を命令した後、休眠要求と、セキュアＯＳ１７１から受け取ったハンドル値「１」と、暗号デバイスドライバ１７９自身を示すデバイスＩＤ＿Ｃを、セキュアＯＳ１７１へ出力する（ステップＳ３２１）。なお、ここで出力される休眠要求は、セキュアＯＳ１７１へ休眠処理を要求するものではなく、外部処理要求のデータ格納部に格納され、音楽復号デーモン１５６へ仲介されるコマンドである。
【０２１３】
セキュアＯＳ１７１は、暗号デバイスドライバ１７９から休眠要求とハンドル値「１」とデバイスＩＤ＿Ｃを受け取り、受け取った休眠要求とハンドル値「１」とデバイスＩＤ＿Ｃとを共有メモリ１１２へ書き込む（ステップＳ３２２）。次に、切替処理２を行う（ステップＳ３２３）。
切替処理２が終了すると（ステップＳ３２３）、通常ＯＳ１５１は、共有メモリ１１２からハンドル値「１」、デバイスＩＤ＿Ｃ及び休眠要求を読み出す（ステップＳ３２６）。読み出したハンドル値「１」とアプリ管理表１６６とを基に音楽復号デーモン１５６を起動し、読み出した休眠要求とハンドル値「１」とデバイスＩＤ＿Ｃとを、音楽復号デーモン１５６へ出力する（ステップＳ３２７）。
【０２１４】
音楽復号デーモン１５６は、通常ＯＳ１５１から休眠要求とハンドル値「１」とデバイスＩＤ＿Ｃとを受け取る。受け取った休眠要求とデバイスＩＤ＿Ｃと音楽復号デーモン１５６自身を示すハンドル値「１」とを通常ＯＳ１５１へ出力する（ステップＳ３２８）。通常ＯＳ１５１は、受け取ったデバイスＩＤ＿Ｃと対応する暗号エントリデバイスドライバ１５９へ、受け取った休眠要求とデバイスＩＤ＿Ｃとハンドル値「１」とを出力する（ステップＳ３２９）。
【０２１５】
暗号エントリデバイスドライバ１５９は、通常ＯＳ１５１を介して、音楽復号デーモン１５６から休眠要求とデバイスＩＤ＿Ｃとハンドル値「１」とを受け取る。次に、通常ＯＳ１５１へ、休眠処理と受け取ったハンドル値「１」と暗号エントリデバイスドライバ１５９自身の有するデバイスＩＤ＿Ｃを出力する（ステップＳ３３２）。
通常ＯＳ１５１は、暗号エントリデバイスドライバ１５９から、休眠要求とハンドル値「１」とデバイスＩＤ＿Ｃを受け取り、受け取ったハンドル値「１」と対応する音楽復号デーモン１５６を休眠状態にする（ステップＳ３３３）。次に、受け取ったデバイスＩＤ＿Ｃと対応する暗号エントリデバイスドライバ１５９を休眠状態にする（ステップＳ３３４）。次に、タスクスケジューリングを行い、実行可能状態のプログラムにＣＰＵを割り当てる（ステップＳ３３６）。
【０２１６】
暗号処理デバイス１１７による、復号処理が終了し、割込発生時の処理３において、音楽復号プログラム１７６は、暗号処理デバイス１１７による処理結果を受け取る（ステップＳ３３７）。ステップＳ３３７については、後で説明する。なお、ステップＳ３３７は、図３７のステップＳ５５２〜図３８のステップＳ６０６に該当する。
音楽復号プログラム１７６は、暗号処理デバイス１１７による処理結果として、音楽データのバッファ１２３上の書込先アドレスを取得する。次に、ＣＰＵ１０２は、音楽復号プログラム１７６（音楽データ出力ステップ）を実行する（ステップＳ３３８）。音楽復号プログラム１７６は、音楽データの書込先アドレスを処理結果として、処理結果とアプリ復帰要求とハンドル値「１」とをセキュアＯＳ１７１へ出力する（ステップＳ３３９）。
【０２１７】
セキュアＯＳ１７１は、アプリ復帰要求と処理結果とハンドル値「１」とを受け取り、受け取ったアプリ復帰要求と処理結果とハンドル値「１」とを共有メモリ１１２へ書き込む（ステップＳ３４１）。次に、切替処理２を行う（ステップＳ３４２）。
切替処理２が終了すると（ステップＳ３４２）、通常ＯＳ１５１は、共有メモリ１１２から、アプリ復帰要求と処理結果とハンドル値「１」とを読み出す（ステップＳ３４４）。アプリ管理表１６６のハンドル値「１」を含むエントリ１６７を基に音楽復号プログラム１７６のコンテキスト復帰させる（ステップＳ３４６）。次に、読み出した処理結果を音楽復号プログラム１７６へ出力する（ステップＳ３４７）。
【０２１８】
（４）割込発生時の処理１
図２８に示すフローチャートを用いて、割込発生時の処理１について説明する。これは、図２１のステップＳ２３９の詳細である。また、図３７のステップＳ４６３〜４７８のシーケンスに対応している。
通常入出力デバイス１３２は、暗号化音楽データの読み出しが終了すると（ステップＳ４６２）、割り込みを発生させる（ステップＳ４６３）。
【０２１９】
割込コントローラ１０７は、割込の発生を検出し、通常ＯＳ１５１へ割込発生通知を出力する（ステップＳ４６４）。通常ＯＳ１５１は、割込発生通知を受け取り、割込テーブルを基に通常割込ハンドラ１６１を起動する（ステップＳ４６６）。次に、通常割込ハンドラ１６１へ割込発生通知を出力する（ステップＳ４６７）。
通常割込ハンドラ１６１は、割込コントローラ１０７を制御し、割込の要因を調査する（ステップＳ４６８）。次に、割込を発生させている通常入出力デバイスと対応するデバイスＩＤ＿Ａと割込通知とを通常ＯＳ１５１へ出力する（ステップＳ４６９）。
【０２２０】
通常ＯＳ１５１は、通常割込ハンドラ１６１から、割込通知とデバイスＩＤ＿Ａとを受け取る。受け取ったデバイスＩＤ＿Ａと対応する通常入出力デバイスドライバ１５７及び、通常入出力デバイスドライバ１５７と共に休眠処理を施した音楽復号デーモン１５６とを休眠解除し（ステップＳ４７１、ステップＳ４７２）、ＣＰＵ１０２を通常入出力デバイスドライバ１５７へ割り当てる。
【０２２１】
通常入出力デバイスドライバ１５７は、休眠を解除され、通常入出力デバイス１３２へ結果要求を出力し（ステップＳ４７３）、通常入出力デバイス１３２から、処理結果として、共有メモリ１１２上における暗号化音楽データの書込先アドレスを取得する（ステップＳ４７４）。処理結果を取得すると、排他フラグを「０」に設定し（ステップＳ４７６）、取得した処理結果と、読出要求の出力元を示す識別情報として受け取ったハンドル値「１」と、通常入出力デバイスドライバ１５７自身を示すデバイスＩＤ＿Ａとを通常ＯＳ１５１へ出力し（ステップＳ４７７）、通常ＯＳ１５１は、ハンドル値「１」と対応する音楽復号デーモン１５６へ、受け取った処理結果とハンドル値「１」とデバイスＩＤ＿Ａとを出力する（ステップＳ４７８）。
【０２２２】
（５）割込発生時の処理１−２
上記の割込発生時の処理１は、通常ＯＳ１５１又は通常ＯＳ１５１に管理される通常メモリ１１１上のプログラムの実行中に割込が発生した場合の動作を示している。ここでは、図２９のフローチャートを用いて、セキュアＯＳ１７１又はセキュアＯＳ１７１によって管理されているプログラムの実行中に割込が発生した場合の動作について説明する。
【０２２３】
通常入出力デバイス１３２は、暗号化音楽データの読み出しが終了すると（ステップＳ４９１）、割込を発生させる（ステップＳ４９２）。
割込コントローラ１０７は、割込を検出し、セキュアＯＳ１７１へ割込発生通知を出力する（ステップＳ４９３）。
セキュアＯＳ１７１は、割込コントローラ１０７から割込発生通知を受け取る。割込発生通知を受け取ると、セキュア割込ハンドラ１８１を起動し（ステップＳ４９４）、割込発生通知を出力する（ステップＳ４９６）。
【０２２４】
セキュア割込ハンドラ１８１は、割込発生通知を受け取り、ＣＰＵ１０２へ割込マスク処理を行い（ステップＳ４９７）、セキュアＯＳ１７１へ割込発生通知を出力する（ステップＳ４９８）。
セキュアＯＳ１７１は、セキュア割込ハンドラ１８１から、割込発生通知を受け取り、受け取った割込発生通知を共有メモリ１１２へ書き込む（ステップＳ４９９）。次に、セキュアＯＳ１７１と通常ＯＳ１５１は、切替処理２を行う（ステップＳ５０１）。
【０２２５】
切替処理２が終了すると（ステップＳ５０１）、共有メモリ１１２から割込発生通知を読み出し、ＣＰＵの割込マスクを解除する（ステップＳ５０２）。
ここで、割込コントローラ１０７は、クリアされていないので、割込発生通知を出力し続けており、ステップＳ５０２以降の処理は、図２８のステップＳ４６４以降の処理と同様である。
【０２２６】
（６）割込発生時の処理２
以下に、図３０〜３１のフローチャートを用いて、割込発生時の処理２について説明する。これは、図２３のステップＳ２８７の詳細である。また、これは、図３８のステップＳ５１２〜図３９のステップＳ５４１のシーケンスと対応している。
セキュア入出力デバイス１３３は、コンテンツ鍵の読み出しが終了すると（ステップＳ５１１）、割り込みを発生させる（ステップＳ５１２）。
【０２２７】
割込コントローラ１０７は、割込の発生を検出し、通常ＯＳ１５１へ割込発生通知を出力する（ステップＳ５１３）。
通常ＯＳ１５１は、割込コントローラ１０７から、割込発生通知を受け取り、通常割込ハンドラ１６１を起動する（ステップＳ５１４）。次に、通常割込ハンドラ１６１へ割込発生通知を出力する（ステップＳ５１６）。
【０２２８】
通常割込ハンドラ１６１は、割込発生通知を受け取り、割り込みを発生させている要因を調査する（ステップＳ５１７）。セキュア入出力デバイス１３３が割り込みを発生させていることを検出し、セキュア入出力デバイス１３３と対応するデバイスＩＤ＿Ｂと割込通知とを、通常ＯＳ１５１へ出力する（ステップＳ５１８）。
通常ＯＳ１５１は、通常割込ハンドラ１６１から割込通知とデバイスＩＤ＿Ｂとを受け取る。次に受け取ったデバイスＩＤ＿Ｂと対応するセキュア入出力エントリデバイスドライバ１５８と、セキュア入出力エントリデバイスドライバ１５８と共に休眠処理を施した音楽復号デーモン１５６の休眠を解除する（ステップＳ５１９、ステップＳ５２１）。セキュア入出力エントリデバイスドライバ１５８へＣＰＵ１０２を割り当てる。
【０２２９】
セキュア入出力エントリデバイスドライバ１５８は、休眠を解除され、割込通知と、休眠要求の出力元を示す識別情報として受け取ったハンドル値「１」と、セキュア入出力エントリデバイスドライバ１５８自身の有するデバイスＩＤ＿Ｂとを通常ＯＳ１５１へ出力する（ステップＳ５２３）。
通常ＯＳ１５１は、受け取ったハンドル値「１」と対応する音楽復号デーモン１５６へ、受け取った割込通知とハンドル値「１」とデバイスＩＤ＿Ｂとを出力する（ステップＳ５２４）。
【０２３０】
音楽復号デーモン１５６は、割込通知とハンドル値「１」とデバイスＩＤ＿Ｂとを受け取る。受け取った割込通知とデバイスＩＤ＿Ｂと、音楽復号デーモン１５６自身を示すハンドル値「１」とを通常ＯＳ１５１へ出力する（ステップＳ５２７）。
通常ＯＳ１５１は、音楽復号デーモン１５６から割込通知とデバイスＩＤ＿Ｂとハンドル値「１」とを受け取る。受け取った割込通知とデバイスＩＤ＿Ｂとハンドル値「１」とを、共有メモリ１１２へ書き込み（ステップＳ５２９）、切替処理１に移る（ステップＳ５３１）。
【０２３１】
切替処理１が終了すると、セキュアＯＳ１７１は共有メモリ１１２から、割込通知とデバイスＩＤ＿Ｂとハンドル値「１」とを読み出し（ステップＳ５３２）、読み出したデバイスＩＤ＿Ｂを基にセキュア入出力デバイスドライバ１７８を起動する（ステップＳ５３３）。次に、セキュア入出力デバイスドライバ１７８へ、読み出した割込通知とデバイスＩＤ＿Ｂとハンドル値「１」とを出力する（ステップＳ５３４）。
【０２３２】
セキュア入出力デバイスドライバ１７８は、割込通知とデバイスＩＤ＿Ｂとハンドル値「１」とを受け取り、セキュア入出力デバイス１３３へ処理結果を要求する（ステップＳ５３６）。セキュア入出力デバイス１３３から、処理結果として、セキュアメモリ１１３上のコンテンツ鍵格納アドレスを受け取る（ステップＳ５３７）。受け取った処理結果とハンドル値「１」とデバイスＩＤ＿Ｂとを含む応答通知をセキュアＯＳ１７１へ出力する（ステップＳ５３９）。
【０２３３】
セキュアＯＳ１７１は、受け取ったハンドル値「１」と対応する音楽復号プログラム１７６へ、受け取った処理結果とハンドル値「１」とデバイスＩＤ＿Ｂとを出力する（ステップＳ５４１）。
ここまで、図３０〜３１を用いた説明では、通常ＯＳ１５１又は通常ＯＳ１５１によって管理される通常メモリ１１１上のプログラムの実行中における、割込発生時の動作について説明してきたが、セキュアＯＳ１７１及びセキュアＯＳ１７１によって管理されるプログラムの実行中における割込発生時の動作は、上述した割込発生時の処理１−２とほぼ同様であり、図２６中の通常入出力デバイスを、セキュア入出力デバイスに変更すればよい。ステップＳ５０２以降の処理は、図３０のステップＳ５１３へと続く。
【０２３４】
（７）割込発生時の処理３
以下に、図３２〜３４のフローチャートを用いて、割込発生時の処理３について説明する。これは、図２７のステップＳ３３７の詳細である。また、割込発生時の処理３は、図４０のステップＳ５５２〜図４１のステップＳ６０６のシーケンスと対応している。
暗号処理デバイス１１７は、暗号化音楽データの復号が終了すると、割り込みを発生させる（ステップＳ５５２）。
【０２３５】
割込コントローラ１０７は、割込の発生を検出し、通常ＯＳ１５１へ割込発生通知を出力する（ステップＳ５５３）。
通常ＯＳ１５１は、割込コントローラ１０７から割込発生通知を受け取り、通常割込ハンドラ１６１を起動する（ステップＳ５５６）。通常割込ハンドラ１６１へ割込発生通知を出力する（ステップＳ５５７）。
【０２３６】
通常割込ハンドラ１６１は、割込発生通知を受け取ると、割り込みを発生させている要因を調査する（ステップＳ５５８）。暗号処理デバイス１１７が割り込みを発生させていることを検出し、デバイスＩＤ＿Ｃと割込通知とを通常ＯＳ１５１へ出力する（ステップＳ５６１）。
通常ＯＳ１５１は、通常割込ハンドラ１６１から割込通知とデバイスＩＤ＿Ｃとを受け取る。受け取ったデバイスＩＤ＿Ｃと対応する暗号エントリデバイスドライバ１５９及び、暗号エントリデバイスドライバ１５９と共に休眠処理を施した音楽復号デーモン１５６の休眠を解除し（ステップＳ５６２、ステップＳ５６３）、暗号エントリデバイスドライバ１５９へＣＰＵ１０２を割り当てる。
【０２３７】
暗号エントリデバイスドライバ１５９は、休眠を解除されると、割込通知とハンドル値「１」と自身を示すデバイスＩＤ＿Ｃとを、通常ＯＳ１５１へ出力する（ステップＳ５６４）。
通常ＯＳ１５１は、割込通知とハンドル値「１」とデバイスＩＤ＿Ｃとを受け取り、受け取ったハンドル値「１」と対応する音楽復号デーモン１５６へ、割込通知とハンドル値「１」とデバイスＩＤ＿Ｃとを出力する（ステップＳ５６７）。
【０２３８】
音楽復号デーモン１５６は、通常ＯＳ１５１を介して暗号エントリデバイスドライバ１５９からデバイスＩＤ＿Ｃと割込通知とを受け取る。次に、受け取った割込通知及びデバイスＩＤ＿Ｃと、音楽復号デーモン１５６自身と対応するハンドル値「１」とを通常ＯＳ１５１へ出力する（ステップＳ５６８）。
通常ＯＳ１５１は、音楽復号デーモン１５６から割込通知とデバイスＩＤ＿Ｃとハンドル値「１」とを受け取り、受け取った割込通知とデバイスＩＤ＿Ｃとハンドル値「１」とを共有メモリ１１２へ書き込む（ステップＳ５７１）。
【０２３９】
次に、通常ＯＳ１５１及びセキュアＯＳ１７１は、切替処理１を行う（ステップＳ５７２）。
切替処理１が終了すると、セキュアＯＳ１７１は、共有メモリ１１２から、割込通知とデバイスＩＤ＿Ｃとハンドル値「１」とを読み出す（ステップＳ５７６）。読み出したデバイスＩＤ＿Ｃを基に、暗号デバイスドライバ１７９を起動し、読み出した割込通知とデバイスＩＤ＿Ｃとハンドル値「１」とを出力する（ステップＳ５７７）。
【０２４０】
暗号デバイスドライバ１７９は、割込通知とデバイスＩＤ＿Ｃハンドル値「１」とを受け取り、暗号処理デバイス１１７へ処理結果を要求する（ステップＳ５７８）。暗号処理デバイス１１７から、処理結果として、バッファ１２３上における音楽データの書込先アドレスを取得する（ステップＳ５７９）。
暗号デバイスドライバ１７９は、取得した処理結果と、受け取ったハンドル値「１」と、暗号デバイスドライバ１７９自身を示すデバイスＩＤ＿ＣをセキュアＯＳ１７１へ出力する（ステップＳ５８２）。
【０２４１】
セキュアＯＳ１７１は、暗号デバイスドライバ１７９から処理結果とハンドル値「１」とデバイスＩＤ＿Ｃとを受け取り、受け取った処理結果とハンドル値「１」とデバイスＩＤ＿Ｃとを共有メモリ１１２へ書き込む（ステップＳ５８３）。
次に、セキュアＯＳ１７１及び通常ＯＳ１５１は、切替処理２を行う（ステップＳ５８４）。
【０２４２】
切替処理２が終了すると、通常ＯＳ１５１は、共有メモリ１１２からハンドル値「１」、処理結果、デバイスＩＤ＿Ｃを読み出す（ステップＳ５８６）。読み出したハンドル値「１」を基に、音楽復号デーモン１５６を起動し、音楽復号デーモン１５６へ、読み出した処理結果とハンドル値「１」とデバイスＩＤ＿Ｃとを出力する（ステップＳ５８７）。
音楽復号デーモン１５６は、通常ＯＳ１５１から処理結果とハンドル値「１」とデバイスＩＤ＿Ｃとを受け取る。受け取った処理結果とデバイスＩＤ＿Ｃと音楽復号デーモン１５６自身を示すハンドル値「１」とを含むシステムコールを通常ＯＳ１５１へ出力する（ステップＳ５８８）。
【０２４３】
通常ＯＳ１５１は、デバイスＩＤ＿Ｃと対応する暗号エントリデバイスドライバ１５９へ、受け取った処理結果とデバイスＩＤ＿Ｃとハンドル値「１」とを出力する（ステップＳ５８９）。
暗号エントリデバイスドライバ１５９は、通常ＯＳ１５１を介して、音楽復号デーモン１５６から処理結果とデバイスＩＤ＿Ｃとハンドル値「１」とを受け取り、排他フラグを「０」に変更する（ステップＳ５９２）。次に、暗号エントリデバイスドライバ１５９は、通常ＯＳ１５１への応答通知により（ステップＳ５９６）、音楽復号デーモン１５６へ、受け取った処理結果とハンドル値「１」とデバイスＩＤ＿Ｃとを出力する（ステップＳ５９７）。
【０２４４】
音楽復号デーモン１５６は、セキュアＯＳ１７１を介して音楽復号デーモン１５６から処理結果とハンドル値「１」とデバイスＩＤ＿Ｃとを受け取る。次に、受け取った処理結果とハンドル値「１」とを通常ＯＳ１５１へ出力する（ステップＳ５９８）。
通常ＯＳ１５１は、音楽復号デーモン１５６から処理結果とハンドル値「１」とを受け取り、受け取った処理結果とハンドル値「１」とを共有メモリ１１２へ書き込む（ステップＳ６０１）。
【０２４５】
次に、通常ＯＳ１５１とセキュアＯＳ１７１は、切替処理１を行う（ステップＳ６０２）。
切替処理１が終了すると、セキュアＯＳ１７１は、共有メモリ１１２からハンドル値「１」と処置結果とを読み出す（ステップＳ６０３）。セキュアアプリ管理表１８６上の、ハンドル値「１」を含むエントリ１８７を基に、音楽復号プログラム１７６のコンテキストを復帰し（ステップＳ６０４）、読み出した処理結果を音楽復号プログラム１７６へ出力する（ステップＳ６０６）。
【０２４６】
ここまで、図３２〜３４を用いた説明では、通常ＯＳ１５１又は通常ＯＳ１５１によって管理される通常メモリ１１１上のプログラムの実行中における、割込発生時の動作について説明してきたが、セキュアＯＳ１７１及びセキュアＯＳ１７１によって管理されるプログラムの実行中における割込発生時の動作は、上述した割込発生時の処理１−２とほぼ同様であり、図２９中の通常入出力デバイスを、暗号処理デバイスに変更すればよい。ステップＳ５０２以降の処理は、図３２のステップＳ５５３へと続く。
【０２４７】
（７）音楽復号プログラムの削除  
図３５に示すフローチャートを用いて、音楽復号プログラムの削除処理について説明する。これは、図１５のステップＳ１０９の詳細である。また、音楽復号プログラム削除処理は、図４２のステップＳ６１１〜６１８のシーケンスと対応する。
音楽復号プログラム１７６は、セキュアアプリ削除命令とハンドル値「１」とを通常ＯＳ１５１へ出力する（ステップＳ６１１）。
【０２４８】
通常ＯＳ１５１は、音楽復号プログラム１７６から、ハンドル値「１」とセキュアアプリ削除命令を受け取り、受け取ったハンドル値「１」とセキュアアプリ削除命令とを共有メモリ１１２へ書き込む（ステップＳ６１２）。
次に、通常ＯＳ１５１及びセキュアＯＳ１７１は、切替処理１を行う（ステップＳ６１３）。
【０２４９】
切替処理１が終了すると、セキュアＯＳ１７１は、共有メモリ１１２からセキュアアプリ削除命令とハンドル値「１」とを読み出す（ステップＳ６１４）。セキュアアプリ管理表１８６上のハンドル値「１」を含むエントリのセキュアアプリアドレスを基に音楽復号プログラム１７６をセキュアメモリ１１３上から削除し（ステップＳ６１６）、ハンドル値「１」を含むエントリ１８７をセキュアアプリ管理表１８６から削除する（ステップＳ６１７）。
【０２５０】
次に、ハンドル値「１」と削除完了通知とを共有メモリ１１２に書き込む（ステップＳ６１８）。
次に、セキュアＯＳ１７１と通常ＯＳ１５１は切替処理２を行う（ステップＳ６１９）。
切替処理２が終了すると、通常ＯＳ１５１は、共有メモリ１１２から削除処理完了通知とハンドル値「１」とを読み出す（ステップＳ６２１）。ハンドル値「１」とアプリ管理表１６６とを基に音楽復号デーモン１５６を、通常メモリ１１１から削除する（ステップＳ６２２）。次に、音楽再生プログラム１５３へ、削除完了通知を出力し（ステップＳ６２３）、ハンドル値「１」を含むエントリ１６７をアプリ管理表１６６から削除する（ステップＳ６２４）。
【０２５１】
１．３まとめ・効果
以上説明してきたように、本発明の携帯電話１００において、通常メモリ１１１上にロードされて実行される音楽再生プログラム１５３は、保護されるべき処理、具体的には、暗号化音楽データの復号の処理を、セキュアメモリ１１３上にロードされて実行される音楽復号プログラム１７６へ依頼する。
【０２５２】
音楽復号プログラム１７６と、通常メモリ１１１上の音楽復号デーモン１５６とは対になって動作し、暗号化音楽データの復号に関する一連の処理のうち、保護されるべき処理は、音楽復号プログラム１７６が分担し、保護する必要のない処理は、音楽復号デーモン１５６が担う。
このように処理を分担することで、音楽復号プログラム１７６自体のプログラムサイズが小さくなり、音楽復号プログラム１７６の保持するデータ、変数なども減少する。さらに、音楽復号プログラム１７６からの依頼により、音楽復号デーモン１５６が、通常メモリ１１１上のライブラリに格納されている関数を使用する。このため、セキュアメモリ１１３上にライブラリを持つ必要がなくなる。  
【０２５３】
従って、音楽復号プログラム１７６及び音楽復号デーモン１５６による一連の復号処理において、確保すべきセキュアメモリ１１３の容量を削減することになり、セキュアメモリ１１３を保護する保護機構の負荷を軽減することができる。
セキュアＯＳ１７１に管理される、保護されるべきデバイスである暗号処理デバイス１１７の制御に関する処理について、保護する必要のない排他制御、休眠、割込の通知については、通常メモリ１１１上にロードされて実行される暗号エントリデバイスドライバ１５９が実行する。
【０２５４】
この動作を、時間の経過に沿って、考察すると、通常ＯＳ１５１は、音楽復号デーモン１５６からのシステムコールにより、暗号エントリデバイスドライバ１５９を実行状態に遷移させる。暗号エントリデバイスドライバ１５９は、排他制御を行い、音楽復号デーモン１５６を呼び出す。音楽復号デーモン１５６は、通常ＯＳ１５１及び、セキュアＯＳ１７１を介して、暗号デバイスドライバ１７９を呼び出す。セキュアＯＳ１７１は、暗号デバイスドライバ１７９を実行状態に遷移させる。暗号デバイスドライバ１７９は、暗号処理デバイス１１７に復号処理を指示した後、休眠要求を出力する。暗号エントリデバイスドライバ１５９は、セキュアＯＳ１７１、通常ＯＳ１５１及び音楽復号デーモン１５６を介して、休眠要求を受け取ると、通常ＯＳ１５１へ休眠処理を依頼し、通常ＯＳ１５１は、暗号エントリデバイスドライバ１５９を休眠状態に遷移させる。
【０２５５】
次に、暗号処理デバイス１１７による処理が終了し、割込が発生し、通常ＯＳ１５１は、音楽復号デーモン１５６の休眠を解除し、実行状態に遷移させる。暗号エントリデバイスドライバ１５９は、割込通知を出力し、音楽復号デーモン１５６は、通常ＯＳ１５１及びセキュアＯＳ１７１を介して割込通知を、暗号デバイスドライバ１７９へ出力する。通常ＯＳ１５１は、暗号デバイスドライバ１７９にＣＰＵ１０２を割り当て、実行状態にする。
【０２５６】
このように、暗号デバイスドライバ１７９と暗号エントリデバイスドライバ１５９は、対応して状態遷移する。従って、通常ＯＳ１５１は、暗号エントリデバイスドライバ１５９を介して、セキュアＯＳ１７１によって管理されている暗号処理デバイス１１７の使用状態を管理することが可能になった。
セキュアＯＳ１７１により管理されるデバイスであるセキュア入出力デバイス１３３についても、同様に、セキュア入出力エントリデバイスドライバ１５８を制御することにより、通常ＯＳ１５１は、セキュア入出力デバイス１３３の動作を監視し、制御することが可能になった。
【０２５７】
１．４  携帯電話１００のその他の動作
携帯電話１００の初期動作及び仮想メモリ空間の構築について以下に説明する。
（１）ブートプログラム
図４３は、通常メモリ１１１に記憶されているデータの一例を示している。これは、携帯電話１００の起動直後の通常メモリ１１１内の様子を示している。
【０２５８】
通常ＯＳ１５１、ライブラリ１５２、通常入出力デバイスドライバ１５７、セキュア入出力エントリデバイスドライバ１５８、暗号エントリデバイスドライバ１５９、通常切替デバイスドライバ１６０、通常割込ハンドラ１６１は、既に説明したとおりである。
ブートプログラム１６２は、通常メモリ１１１を構成するＲＯＭに予め記憶されておりブートプログラム１６２は、具体的には図示されていないが、携帯電話１００に、含まれる起動部により読み出され実行されるプログラムである。
【０２５９】
起動部は、携帯電話１００に電源が投入された直後に通常メモリ１１１からブートプログラム１６２を読み出し、読み出したブートプログラム１６２に従って動作する。以下、ブートプログラム１６２に従う起動部の動作によって、ブートプログラムについて説明する。
先ず、ブートプログラム１６２は、ＣＰＵ１０２のレジスタ、ＭＭＵ１０３をクリアし、切替制御部１０６へ初期化要求を出力する。切替制御部１０６から、セキュアメモリ１１３上のプログラムの初期化が終了したことを通知する初期化終了通知を受け取り、次に、通常ＯＳ１５１、通常切替デバイスドライバ１６０などを、通常メモリ１１１上にロードし、初期化する。
【０２６０】
（２）携帯電話１００の初期動作
携帯電話１００は、起動時に切替制御部１０６及びブートプログラムによって、初期化される。携帯電話１００の起動時の動作について、図４４に示すフローチャートを用いて説明する。
携帯電話１００の電源がＯＮの状態になり、電力供給が開始されると（ステップＳ６５１）、起動部は、ブートプログラム１６２を起動する（ステップＳ６５２）。ブートプログラム１６２は、先ず、ＣＰＵ１０２及びＭＭＵ１０３のレジスタをクリアすることで初期化する（ステップＳ６５３）。次に、切替制御部１０６へ、初期化要求を出力する（ステップＳ６５４）。
【０２６１】
切替制御部１０６は、初期化要求を受け取り、二次記憶部１０４から暗号化セキュアＯＳを読み出す（ステップＳ６５６）。読み出した暗号化セキュアＯＳを復号してセキュアＯＳを生成する（ステップＳ６５７）。次に、メモリ保護部１１４により、バス１３０とセキュアメモリ１１３とを接続する（ステップＳ６５８）。生成したセキュアＯＳをセキュアメモリ１１３上に書き込み、初期化する（ステップＳ６５９）。続いて、セキュア切替デバイスドライバを、二次記憶部１０４から読み出し、セキュアメモリ１１３上にロードする（ステップＳ６６１）。
【０２６２】
次に、メモリ保護部１１４により、セキュアメモリ１１３とバス１３０とを切断し（ステップＳ６６２）、初期化終了通知をブートプログラム１６２へ出力する（ステップＳ６６３）。
ブートプログラム１６２は、切替制御部１０６から、初期化終了通知を受け取り、次に、通常ＯＳ１５１、通常切替デバイスドライバ１６０などのプログラムを通常メモリ上にロードし、初期化する（ステップＳ６６４）。
【０２６３】
なお、上記の説明では、暗号化セキュアＯＳ、セキュア切替デバイスドライバは、二次記憶部１０４上に記憶されているとして説明したが、外部の記録メディアなどに記憶されているとしてもよい。
（３）通常ＯＳ１５１及びセキュアＯＳ１７１による初期化動作
通常入出力デバイスドライバ１５７、セキュア入出力エントリデバイスドライバ１５８、暗号エントリデバイスドライバ１５９は、通常ＯＳ１５１の管理下で、通常メモリ１１１上に常駐するプログラムである。
【０２６４】
また、セキュア入出力デバイスドライバ１７８及び暗号デバイスドライバ１７９は、セキュアＯＳ１７１の管理下でセキュアメモリ１１３上に常駐するプログラムである。
ブートプログラム１６２は、通常ＯＳ１５１及び通常切替デバイスドライバ１６０などを通常メモリ１１１上にロードし、初期化し終えると、通常ＯＳ１５１を起動する。
通常ＯＳ１５１は、起動すると、先ず、通常メモリ１１１上にロードされているプログラムをサーチし、通常入出力デバイスドライバ１５７、セキュア入出力エントリデバイスドライバ１５８、暗号エントリデバイスドライバ１５９がロードされているか否かを判断し、ロードされていなければ、二次記憶部１０４から読み出し、ロードする。
【０２６５】
通常ＯＳ１５１が、セキュア入出力エントリデバイスドライバ１５８及び暗号エントリデバイスドライバ１５９をロードする際に、セキュアＯＳ１７１によって、セキュア入出力デバイスドライバ１７８及び暗号デバイスドライバ１７９もセキュアメモリ１１３上にロードされる。
通常ＯＳ１５１及びセキュアＯＳ１７１による、この動作は、既に説明した音楽復号プログラムの登録処理と類似しているので、ここでは、簡単に説明する。なお、二次記憶部１０４は、各デバイスドライバ及び、エントリデバイスドライバを暗号化して生成された暗号化エントリデバイスドライバを、予め記憶しているものとする。
【０２６６】
セキュア入出力エントリデバイスドライバが、ロードされていないと判断すると、通常ＯＳ１５１は、二次記憶部１０４から、セキュア入出力エントリデバイスドライバを読み出し、通常メモリ１１１に書き込む。書き込み先のアドレスとセキュア入出力エントリデバイスドライバ１５８とを対応付けて記憶する。次に、共有メモリ１１２にデバイスドライバのロードを指示するデバドラ登録要求とセキュア入出力デバイスドライバを示すデバイスＩＤ＿Ｂとを書き込む。次に、通常切替デバイスドライバ１６０へ切替指示を出力する。
【０２６７】
切替処理が終了し、セキュアＯＳ１７１は、ＣＰＵ１０２に復帰する。共有メモリ１１２から、デバドラ登録要求とデバイスＩＤ＿Ｂとを読み出す。デバイスＩＤ＿Ｂと対応する暗号化セキュア入出力エントリデバイスドライバを読み出し、暗復号プログラム１７４によって、読み出した暗号化エントリデバイスドライバを復号して、セキュア入出力エントリデバイスドライバを生成し、セキュアメモリ１１３に書き込む。書き込み先のアドレスとデバイスＩＤ＿Ｂとを対応付けて記憶する。
【０２６８】
次に、共有メモリ１１２に、デバドラ登録完了通知を書き込み、セキュア切替デバイスドライバ１８０へ切替指示を出力する。
切替処理が終了し、ＣＰＵ１０２に復帰すると、通常ＯＳ１５１は、共有メモリ１１２から、デバドラ登録完了通知を読み出す。
続いて、暗号エントリデバイスドライバついても、同様にして、ロードする。
【０２６９】
（４）ＭＭＵ制御プログラム１８４による仮想記憶空間
セキュアＯＳ１７１は、これまで言及していないが、図４５に示すようにＭＭＵ制御プログラム１８４を含んでいる。ＭＭＵ制御プログラム１８４は、ＭＭＵ１０３により実行されるプログラムであり、セキュアメモリ１１３、共有メモリ１１２及び二次記憶部１０４の物理アドレスと論理アドレスとを変換することにより、仮想記憶空間を構築する。
【０２７０】
図４６は、ＭＭＵ制御プログラム１８４により、実現される仮想記憶空間の一例を示している。図４５に示すように、セキュアメモリ１１３上には、音楽復号プログラム１７６と通信鍵生成プログラム１８５とがロードされていると想定する。音楽復号プログラム１７６及び通信鍵生成プログラム１８５は、セキュアアプリケーションである。
音楽復号プログラム１７６及び通信鍵生成プログラム１８５は、それぞれ、仮想空間２０１、仮想空間２０４にロードされている。それぞれのプログラムには、個別に、通常共有空間２０２及び通常共有空間２０６が割り当てられている。通常共有空間２０２及び通常共有空間２０６は、それぞれのプログラムが、通常メモリ１１１上のプログラムと共有する仮想空間である。
【０２７１】
音楽復号プログラム１７６は、仮想空間２０４及び通常共有空間２０６へアクセスすることはできない。また、通信鍵生成プログラム１８５は、仮想空間２０１及び通常共有空間２０２へアクセスすることはできない。
セキュア共有空間２０７は、音楽復号プログラム１７６及び通信鍵生成プログラム１８５のいずれからもアクセス可能であるが、通常ＯＳ１５１の管理下で動作するプログラムからはアクセスできない仮想空間である。
【０２７２】
セキュアＯＳ１７１は、仮想空間２０８にロードされている。セキュアＯＳ１７１は、仮想空間２０１及び２０４へアクセス可能であるが、音楽復号プログラム１７６及び通信鍵生成プログラム１８５から仮想空間２０８へアクセスすることはできない。
このようにして、ＭＭＵ制御プログラム１８４は、それぞれのアプリケーションごとに、個別の仮想空間を割り当て、お互いにアクセスできないように制御する。
【０２７３】
なお、ＭＭＵ制御プログラム１８４は、上述した仮想記憶空間を、セキュアメモリ１１３、共有メモリ１１２及び二次記憶部１０４上に実現する。ＭＭＵ制御プログラム１８４は、暗号処理プログラムを含んでおり、セキュアメモリ１１３上に記憶されているデータを二次記憶部１０４上にページアウトする際には、データを暗号化し、二次記憶部１０４から、セキュアメモリ１１３上へ、ページインする際には、復号するとしてもよい。
【０２７４】
また、音楽復号プログラム１７６及び通信鍵生成プログラム１８５は、それぞれの通常共有空間に互いにアクセスできるとしてもよい。
１．５ 実施の形態１の変形例
（１）  実施の形態１において、音楽復号プログラム１７６と音楽復号デーモン１５６とが対になって動作することにより、暗号化音楽データの復号処理を達成するとして説明してきたが、図４７に示すような構成であっても良い。
【０２７５】
この構成では、通常メモリ１１１上には、音楽再生プログラム１５３に代わって音楽再生プログラム１５３ｂがロードされている。音楽再生プログラム１５３ｂは、外部処理マネージャ１５６ｂを含んで構成され、外部処理マネージャ１５６ｂは、上述の音楽復号デーモン１５６と同様に、暗号化音楽データの復号処理のうち、保護される必要のない処理を分担する。また、音楽復号プログラム１７６と通常ＯＳ１５１との間の各種の情報及びコマンドの入出力を行う。
【０２７６】
この構成の場合、アプリ管理表１６６の各エントリは、ハンドル値とアプリコンテキストアドレスとから構成される。通常ＯＳ１５１は、受け取り先を示す識別情報としてハンドル値「１」を含むコマンドを受け取ると、アプリ管理表１６６を基に、音楽再生プログラム１５３のコンテキストを復帰させ、外部処理マネージャのスレットにＣＰＵ１０２を割り当てる。
【０２７７】
このような構成によると、音楽再生プログラム１５３が外部処理マネージャ１５６ｂを含んでいるため、音楽復号プログラムの登録処理の際に、音楽復号デーモン１５６を、通常メモリ上にロードする必要がなく、実施の形態１において説明した登録処理を短縮することができる。
（２）  なお、本実施の形態において、セキュア入出力エントリデバイスドライバ１５８とセキュア入出力デバイスドライバ１７８とを同一の識別情報デバイスＩＤ＿Ｂによって識別しているが、異なる識別情報にによって識別するとしても良い。暗号エントリデバイスドライバ１５９と暗号デバイスドライバ１７９についても同様である。
【０２７８】
具体的には、通常ＯＳ１５１及びセキュアＯＳ１７１は、制御データとして、それぞれの記憶領域に、図４８に示すセキュアデバイスドライバ管理表２３１を有する。
図４８に示すセキュアデバイスドライバ管理表２３１は、２つのセキュアデバイスドライバ管理情報２３２、２３４を含む。各セキュアデバイスドライバ管理情報は、エントリデバイスドライバ識別子とセキュアデバイスドライバ識別子とから構成される。セキュアデバイスドライバ識別子は、セキュアＯＳ１７１に管理されるデバイスを制御するデバイスドライバを示す識別情報であり、エントリデバイスドライバ識別子は、前記デバイスドライバと対になって動作する通常メモリ１１１上のプログラムを示す識別情報である。具体的には、セキュアデバイスドライバ管理情報２３２は、セキュア入出力エントリデバイスドライバ１５８を識別する情報であるデバイスＩＤ＿Ｂと、セキュア入出力エントリデバイスドライバ１５８と対になって動作するセキュア入出力デバイスドライバ１７８を識別する情報である「１００」から構成される。セキュアデバイスドライバ管理情報２３４は、暗号エントリデバイスドライバ１５９を示す識別情報デバイスあるデバイスＩＤ＿Ｃと、暗号エントリデバイスドライバ１５９と対になって動作する暗号デバイスドライバ１７９を示す識別情報「１０１」とを含む。
【０２７９】
セキュアデバイスドライバ管理表２３１は、通常ＯＳ１５１及びセキュアＯＳ１７１の起動時に生成されるものであり、通常ＯＳ１５１は、通常メモリ１１１上にセキュア入出力エントリデバイスドライバをロードすると、セキュア入出力エントリデバイスドライバを示す識別情報であるデバイスＩＤ＿Ｂを共有メモリ１１２に書き込み、切替処理に移る。
【０２８０】
切替処理が終了すると、セキュアＯＳ１７１は、共有メモリ１１２からデバイスＩＤ＿Ｂを読み出し、次に、二次記憶部１０４から暗号化セキュアデバイスドライバを読み出し、復号して、セキュアメモリ１１３上にロードする。ここで、ロードしたセキュア入出力デバイスドライバを示す識別情報「１００」と受け取ったデバイスＩＤ＿Ｂとを含むセキュアデバイスドライバ管理情報２３２を生成し、セキュアメモリ１１３上に書き込む。次に、識別情報「１００」を共有メモリ１１２に書き込み、切り替え処理に移る。
【０２８１】
切り替え処理が終了すると、通常ＯＳ１５１は、共有メモリ１１２から識別情報「１００」を読み出し、読み出した識別情報「１００」と、セキュア入出力エントリデバイスドライバ１５８を示すデバイスＩＤ＿Ｂとからなるセキュアデバイスドライバ管理情報を生成し、通常メモリ１１１上に書き込む。
セキュアデバイスドライバ情報２３４についても同様である。
【０２８２】
通常ＯＳ１５１、上記のようにして生成した、セキュアデバイスドライバ管理表２３１を用いて、セキュア入出力エントリデバイスドライバ１５８及び暗号エントリデバイスドライバ１５９を管理する。また、セキュアＯＳ１７１は、セキュアデバイスドライバ管理表２３１を用いて、セキュア入出力デバイスドライバ１７８及び暗号デバイスドライバ１７９を管理する。
【０２８３】
（３）  上記の実施の形態において、セキュアＯＳ１７１は、デバッグ無効化プログラムを含んでいるが、セキュア切替デバイスドライバ１８０が、この機能を備えているとしてもよい。
この構成では、セキュア切替デバイスドライバ１８０は、切替制御部１０６から呼び出される度に、先ず、デバッガＩＦ１０１を無効化し、次に、セキュアＯＳ１７１のコンテキストを復帰させる。
【０２８４】
また、セキュアＯＳ１７１から切替指示を受け取ると、セキュアＯＳ１７１のコンテキストを保存した後、デバッガＩＦ１０１を有効にし、切替制御部１０６へ切替指示を出力する。
このようにして、セキュアＯＳ１７１がＣＰＵ１０２に復帰する前に、デバッガＩＦ１０１を無効化することで、セキュアＯＳ１７１の動作を、外部のデバッグ装置に検出、操作されることを、より確実に防ぐことができる。
【０２８５】
また、セキュアメモリ１１３上のプログラムに代わって、切替制御部１０６が、デバッガＩＦ１０１を無効化、有効化するとしても良い。
（４）上記の実施の形態１では、通常入出力デバイスドライバ１５７及び暗号エントリデバイスドライバ１５９は、排他フラグを用いて排他制御を行っており、排他フラグが「１」であれば、エラー通知を出力するとしている。しかし、各ドライバが動作している間に受け取った処理の依頼をストックしておくとしても良い。
【０２８６】
この場合、通常入出力デバイスドライバ１５７及び暗号エントリデバイスドライバ１５９は、受け取った処理の依頼を記憶するＱＵＥＵＥを備えており、処理の要求を受け取ると、排他フラグを確認する代わりに、受け取った処理依頼をＱＵＥＵＥに格納する。
通常入出力デバイスドライバ１５７は、通常入出力デバイス１３２が処理を終え、処理結果を取得する。次に、ＱＵＥＵＥから次の処理依頼を読み出し、通常入出力デバイス１３２へ出力する。
【０２８７】
暗号エントリデバイスドライバ１５９は、処理結果を受け取り、受け取った処理結果を出力すると、ＱＵＥＵＥから次の処理依頼を読み出す。読み出した処理依頼を、暗号デバイスドライバ１７９へ、出力する。
また、ＱＵＥＵＥに代わって、暗号エントリデバイスドライバ１５９専用のバッファ領域を備え、バッファ領域に受け取った処理依頼と、受け取った処理依頼の優先度とを対応付けて書き込むとしてもよい。
【０２８８】
この場合、暗号処理デバイス１１７による処理が終了し、処理結果を受け取ると、暗号デバイスドライバ１７９は、優先度の高い処理依頼を読み出し、暗号処理デバイス１１７へ出力する。
（５）上記の実施の形態では、セキュア切替デバイスドライバ１８０が、セキュアＯＳ１７１のコンテキストの保存及び復帰を行っているが、これを通常切替デバイスドライバ１６０が行っても良い。
【０２８９】
この場合、セキュアＯＳ１７１から通常ＯＳ１５１への切替処理２の際に、セキュアＯＳ１７１は、切替制御部１０６へ切替指示を出力する。切替制御部１０６は、メモリ保護部１１４に切断指示を出力し、セキュアメモリ１１３とバス１３０とを切断する。次に、通常切替デバイスドライバ１６０を呼び出す。通常切替デバイスドライバ１６０は、ＣＰＵ１０２のレジスタ、ＭＭＵ１０３の内容などを含むセキュアＯＳ１７１のコンテキストを通常メモリ１１１上に保存し、ＣＰＵ１０２及びＭＭＵ１０３をクリアし、通常ＯＳ１５１のコンテキストを復帰させる。
【０２９０】
通常ＯＳ１５１からセキュアＯＳ１７１への切替処理１の際には、通常ＯＳ１５１から切替指示を受けると、通常切替デバイスドライバ１６０は、通常ＯＳ１５１のコンテキストを保存し、ＣＰＵ１０２及びＭＭＵ１０３をクリアする。次に、セキュアＯＳ１７１のコンテキストを復帰させ、切替制御部１０６へ切替指示を出力する。
このようにして、セキュアＯＳ１７１のコンテキストの保存と復帰を通常メモリ１１１上の通常切替デバイスドライバ１６０が行うことにより、セキュアメモリ１１３上にセキュア切替デバイスドライバ１８０が不要になる。従って、セキュアメモリ１１３の容量を削減することができる。
【０２９１】
（６）上記の実施の形態及び変形例では、携帯電話１００は、ＭＭＵ１０３により仮想記憶空間を形成している。しかし、仮想記憶空間を使用しない構成であっても良い。この場合、各メモリに記憶されているデータ及びプログラムは物理アドレスによって管理されている。
従って、このような構成の場合、コンテキストの保存及び復帰に係るＭＭＵの内容の保存を行う必要がなくなる。
【０２９２】
また、この場合、セキュアＯＳ１７１のコンテキストを保存しない構成であってもよい。セキュア切替デバイスドライバ１８０は、切替制御部１０６から呼び出されると、セキュアＯＳ１７１の先頭アドレスをＣＰＵ１０２に復帰させ、セキュアＯＳ１７１を最初から起動する。
（７）また、上記の実施の形態１において、携帯電話１００は、通常メモリ１１１上にロードされる通常ＯＳ１５１とセキュアメモリ１１３上にロードされて実行されるセキュアＯＳ１７１とを備えているが、通常ＯＳ１５１を備えていない構成であっても良い。
【０２９３】
携帯電話１００の初期動作において説明したように、電源投入後に、先ず、ブートプログラム１６２が起動する。ブートプログラム１６２は、ＣＰＵ１０２及びＭＭＵ１０３を初期化した後、切替制御部１０６へ、初期化要求を出力し、切替制御部１０６が、セキュアＯＳ１７１及びセキュア切替デバイスドライバ１８０をセキュアメモリ１１３上にロードする。
【０２９４】
セキュアＯＳ１７１が、セキュアメモリ１１３及び通常メモリ１１１上に、各種のプログラムをロードする。
通常メモリ１１１上の各プログラムは、システムコールを含む全てのコマンドを、通常ＯＳ１５１に代わって、通常切替デバイスドライバ１６０へ出力する。
通常切替デバイスドライバ１６０は、通常メモリ１１１上のプログラムから、コマンドを受け取ると、受け取ったコマンドを、所定の記憶領域に書き込み、切替処理を行う。セキュアＯＳ１７１は、ＣＰＵ１０２に復帰すると、所定の記憶領域から、コマンドを読み出す。
【０２９５】
このようにして、セキュアＯＳ１７１が、通常メモリ１１１及びセキュアメモリ１１３上の各プログラムを制御する。
また、逆に、セキュアＯＳ１７１を備えていない構成であっても良い。この場合、セキュア切替デバイスドライバ１８０又は切替制御部１０６がデバッガ無効化プログラムを備えている。
【０２９６】
セキュアメモリ１１３上の各プログラムは、システムコールを含む全てのコマンドをセキュア切替デバイスドライバ１８０へ出力する。セキュア切替デバイスドライバ１８０は、共有メモリ１１２上のコマンド領域に受け取ったコマンドを書き込み、切替制御部１０６へ切替指示を出力する。
通常ＯＳ１５１は、ＣＰＵ１０２に復帰すると、共有メモリ１１２のコマンド領域から、セキュアメモリ１１３上のプログラムから出力されたコマンドを読み出す。
【０２９７】
このようにして、通常ＯＳ１５１が、通常メモリ１１１及びセキュアメモリ１１３上の各プログラムを制御するとしてもよい。
（８）上記の実施の形態及び変形例において、切替制御部１０６及びメモリ保護部１１４は、セキュアメモリ１１３とバス１３０とを切断することで、セキュアメモリ１１３上のプログラム及びデータを外部のアクセスから保護している。
【０２９８】
これに代わって、メモリ保護部１１４が、セキュアメモリ１１３内のデータを暗号化及び復号することによって、保護しても良い。切替制御部１０６は、メモリ保護部１１４へ、接続指示又は切断指示に代わって、暗号化又は復号を指示する。
メモリ保護部１１４は、切替制御部１０６の指示によって、セキュアメモリ１１３内のデータを暗号化又は復号する。
【０２９９】
また、セキュアメモリ１１３内のデータを全てではなく、必要に応じて、音楽再生プログラム１５３のコード部分のみ、データ部分のみ又はスタック部分のみを暗号化するとしても良い。セキュアＯＳ１７１、暗号デバイスドライバ１７９、セキュア入出力デバイスドライバ１７８などについても同様である。
（９）上記の実施の形態及び変形例では、通常ＯＳ１５１が、アプリ管理表１６６を管理し、アプリ管理表１６６を用いて、該当するアプリケーション及びセキュアアプリケーションと対応するプログラム（例えば音楽復号デーモン１５６）を呼び出している。しかし、音楽再生プログラム１５３と同様にセキュアアプリケーションに処理を依頼するアプリケーションが多数存在する場合、通常ＯＳ１５１とは別に、アプリ管理表１６６の管理と、プログラムの呼び出しを行うプログラムを備える構成であっても良い。このプログラムをデーモン制御プログラムと呼ぶ。
【０３００】
この場合、通常切替デバイスドライバ１６０は、切替制御部１０６から呼び出されると、通常ＯＳ１５１に代わって、デーモン制御プログラムを起動する。デーモン制御プログラムは、共有メモリ１１２から、コマンドを読み出し、読み出したコマンドに含まれる識別情報によって、該当するプログラムを呼び出す。
また、各アプリケーション及び、音楽復号デーモン１５６を初めとするプログラムは、通常ＯＳ１５１に代わって、セキュア処理要求をデーモン制御プログラムに出力する。
【０３０１】
デーモン制御プログラムは、受け取ったセキュア処理要求を共有メモリ１１２に書き込み、通常切替デバイスドライバ１６０へ、切替指示を出力する。
（１０）ここまで、本発明のひとつの実施の形態として携帯電話１００について説明してきたが、同様の機能を有する情報処理装置、例えばパーソナルコンピュータなどであってもよい。
【０３０２】
この場合、通常メモリ１１１及びセキュアメモリ１１３は、ＲＡＭ及びハードディスクを含んで構成される。上記の説明では、セキュアＯＳ１７１及び音楽復号プログラム１７６は暗号化されて、二次記憶部１０４に記憶されているが、予め、セキュアメモリ１１３上のハードディスク部分に記憶されているとしてもよい。
２．  実施の形態２
本発明の実施の形態２について、以下に説明する。
【０３０３】
図４９は、本発明の実施の形態２の携帯電話４００の使用例を示している。携帯電話４００は、基地局１５、携帯電話網１０、インターネット２０を介して、無効化リスト発行装置２５０と接続されている。
無効化リスト発行装置２５０は、無効化されたプログラムに係る情報を管理しており、これらのプログラムを示す無効化リストを生成し、インターネット２０を介して、生成した無効化リストを携帯電話４００へ送信する。
【０３０４】
携帯電話４００は、無効化リスト発行装置２５０から無効化リストを受信し、受信した無効化リストを基に、自身の記憶しているプログラムが無効であるか否かを判断する。
２．１  無効化リスト発行装置２５０
無効化リスト発行装置２５０は、図５０に示すように、通信部２５１、署名生成部２５２、鍵記憶部２５３、ハッシュ生成部２５４、制御部２５７、情報記憶部２６０、入力部２６２及び表示部２６３から構成される。
【０３０５】
無効化リスト発行装置２５０は、具体的には、マイクロプロセッサ、ＲＡＭ、ＲＯＭを含んで構成されるコンピュータシステムである。ＲＡＭ、ＲＯＭにはコンピュータプログラムが記憶されており、前記マイクロプロセッサが前記コンピュータプログラムに従って動作することにより、無効化リスト発行装置２５０は、その機能を達成する。
（１）情報記憶部２６０
情報記憶部２６０は、図５０に示すように、ＯＳ無効化リスト２６６及びアプリ無効化リスト２７６を記憶している。
【０３０６】
ＯＳ無効化リスト２６６は、発行者ＩＤ２６７、リストＩＤ２６８及び無効化ＩＤ２６９、２７０、２７１・・・から構成される。
発行者ＩＤ２６７は、ＯＳ無効化リストの発行者を示しており、一例として、無効化リスト発行装置２５０の装置ＩＤ、無効化リスト発行装置２５０の管理者の識別情報などである。
【０３０７】
リストＩＤ２６８は、ＯＳ無効化リスト２６６の新旧を示す情報であり、ここでは、ＯＳ無効化リスト２６６の作成日「２００４１０１５」を、リストＩＤ２６８としている。
無効化ＩＤ２６９、２７０、２７１・・・は、無効化されたオペレーティングシステムの識別情報である。
アプリ無効化リスト２７６は、発行者ＩＤ２７７、リストＩＤ２７８、無効化ＩＤ２７９、２８０、２８１・・・から構成される。発行者ＩＤ２７７は、アプリ無効化リストの発行者を示す情報であり、一例として、無効化リスト発行装置２５０の装置ＩＤ、無効化リスト発行装置２５０の管理者の識別情報などである。
【０３０８】
リストＩＤ２７８は、アプリ無効化リスト２７６の新旧を示す情報である。ここでは、アプリ無効化リスト２７６の作成日「２００４１００９」をリストＩＤ２７８としている。
無効化ＩＤ２７９、２８０、２８１・・・は、無効化されたアプリケーションの識別情報である。
【０３０９】
（２）通信部２５１
通信部２５１は、インターネット２０と接続されており、制御部２５７とインターネット２０に接続されている外部機器との間で、情報の送受信を行う。ここで、外部機器とは携帯電話４００である。
（３）ハッシュ生成部２５４
ハッシュ生成部２５４は、制御部２５７から、ＯＳ無効化リスト２６６とハッシュ生成指示とを受け取る。また、アプリ無効化リスト２７６とハッシュ生成指示とを受け取る。
【０３１０】
ハッシュ生成指示を受け取ると、受け取ったＯＳ無効化リスト２６６又はアプリ無効化リスト２７６をハッシュ関数に代入し１６０バイトのＯＳダイジェストデータ又はアプリダイジェストデータを生成する。ここで、ハッシュ関数には、一例としてＳＨＡ−１を用いる。ハッシュ関数ＳＨＡ−１については、公知の技術であるので説明を省略する。また、他のハッシュ関数を用いても良い。
【０３１１】
生成した、ＯＳダイジェストデータ又はアプリダイジェストデータを制御部２５７へ出力する。
（４）鍵記憶部２５３及び署名生成部２５２
鍵記憶部２５３は、無効化リスト発行装置２５０に固有の発行装置秘密鍵と、前記発行装置秘密鍵と対応する発行装置公開鍵とを記憶している。
【０３１２】
署名生成部２５２は、制御部２５７から、ＯＳダイジェストデータ又はアプリダイジェストデータを受け取り、署名生成を指示される。
ＯＳダイジェストデータを受け取り、署名生成を指示されると、鍵記憶部２５３から、発行装置秘密鍵を読み出し、読み出した発行装置秘密鍵を用いて、受け取ったＯＳダイジェストデータに署名生成アルゴリズムＳを施して、署名データを生成し、生成した署名データを、制御部２５７へ出力する。署名生成アルゴリズムＳは、一例として、楕円ＤＳＡ署名、ＲＳＡ（RivestShamirAdleman）署名などを用いる。
【０３１３】
アプリダイジェストデータを受け取り、署名生成を指示された場合についても同様にして署名データを生成し、制御部２５７へ出力する。
（５）制御部２５７
制御部２５７は、通信部２５１及びインターネット２０を介して携帯電話４００から、最新のＯＳ無効化リスト及びアプリ無効化リストの送信を要求するリスト要求を受信する。
【０３１４】
リスト要求を受信すると、情報記憶部２６０からＯＳ無効化リスト２６６を読み出し、読み出したＯＳ無効化リスト２６６をハッシュ生成部２５４へ出力し、ハッシュ生成指示を出力する。次に、ハッシュ生成部２５４から、ＯＳダイジェストデータを受け取る。受け取ったＯＳダイジェストデータを署名生成部２５２へ出力し署名生成を指示する。次に、署名生成部２５２から署名データを受け取る。受け取った署名データを、ＯＳ無効化リスト２６６に付加して、署名付ＯＳ無効化リストを生成する。
【０３１５】
アプリ無効化リスト２７６についても同様にして、ハッシュ生成部２５４及び署名生成部２５２へ指示して署名データを生成する。生成した署名データをアプリ無効化リスト２７６に付加して、署名付アプリ無効化リストを生成する。
次に、通信部２５１及びインターネット２０を介して携帯電話４００へ、生成した署名付ＯＳ無効化リストと署名付アプリ無効化リストとを送信する。
【０３１６】
また、制御部２５７は、入力部２６２を介して、操作者による各種の指示及びデータを受け取り、受け取った指示に従って動作する。
（６）入力部２６２及び表示部２６３
入力部２６２は、無効化リスト発行装置２５０の操作者による指示及びデータの入力を受け付け、受け付けた指示及びデータを制御部２５７へ出力する。
【０３１７】
表示部２６３は、制御部２５７の指示により各種の画面を表示する。
２．２  携帯電話４００
携帯電話４００のハード構成は、図２に示す携帯電話１００の構成とほぼ同様であり、デバッガＩＦ、ＣＰＵ、ＭＭＵ、二次記憶部、切替制御部１０６、割込コントローラ、入力部、表示部、通常メモリ、共有メモリ、セキュアメモリ４１３、メモリ保護部４１４、入出力部、暗号処理デバイス、無線通信制御部、マイク、スピーカ、通信部、バッファ、符号処理部、Ｄ／Ａ変換部から構成される。
【０３１８】
セキュアメモリ４１３、メモリ保護部４１４以外の各部については、携帯電話１００と同様であるので、詳細な説明を省略し、ここでは、携帯電話１００と異なる部分についてのみ説明する。
（１）セキュアメモリ４１３
セキュアメモリ４１３は、図５１に示すように、音楽復号プログラム４４６、セキュアＯＳ４４１などの各種のプログラムを記憶している。
【０３１９】
音楽復号プログラム４４６は、実施の形態１の音楽復号プログラム１７６と同様に、暗号化音楽データの復号の手順を含んでおり、この手順については、説明を省略する。
音楽復号プログラム４４６は、ヘッダ部分にアプリＩＤ４４７及び無効フラグ４４８を含んでいる。アプリＩＤ４４７は、音楽復号プログラム４４６に固有の識別情報である。無効フラグ４４８は、音楽復号プログラム４４６が、無効化されているか否かを示すフラグであり、無効フラグ「１」は、音楽復号プログラム４４６が無効化されていることを示しており、無効フラグ「０」は、無効化されていないことを示す。
【０３２０】
セキュアＯＳ４４１は、実施の形態１のセキュアＯＳ１７１と同様の処理を実行する本ソフトウェアであるので、セキュアＯＳ４４１の動作については説明を省略する。ただし、セキュアＯＳ４４１は、セキュアメモリ４１３上の各アプリケーションを起動又はＣＰＵに復帰させる際に、各アプリケーションのヘッダ部分の無効フラグを読み出し、無効フラグが「１」である場合、そのアプリケーションの起動又は復帰を中止する。
【０３２１】
セキュアＯＳ４４１は、ヘッダ部分にセキュアＯＳＩＤ４４２及び無効フラグ４４３を含んでいる。
セキュアＯＳＩＤ４４２は、セキュアＯＳ１７１をと対応する識別情報である。無効フラグ４４３は、セキュアＯＳ４４１が無効化されているか否かを示すフラグであり、無効フラグ「１」は、音楽復号プログラム４４６が無効化されていることを示しており、無効フラグ「０」は、無効化されていないことを示す。
【０３２２】
また、本実施の形態において、セキュアメモリ４１３上にロードされ切替処理を行うセキュア切替デバイスドライバは、セキュアＯＳ４４１のコンテキストをＣＰＵに復帰させる前に、セキュアＯＳ４４１の無効フラグ４４３を読み出し、無効フラグが「１」であった場合には、セキュアＯＳ４４１の復帰を中止する。
（２）メモリ保護部４１４
メモリ保護部４１４は、図５１に示すように、無効化リスト記憶部４２１、無効化リスト更新部４２４、アプリ検証部４２８、アプリ無効化部４２９、ＯＳ検証部４３１及びＯＳ無効化部４３２から構成される。
【０３２３】
＜無効化リスト記憶部４２１＞
無効化リスト記憶部４２１は、アプリ無効化リスト４２２及びＯＳ無効化リスト４２３を記憶している。
アプリ無効化リスト４２２及びＯＳ無効化リスト４２３は、それぞれ、無効化リスト発行装置２５０の情報記憶部２６０に記憶されているアプリ無効化リスト２７６及びＯＳ無効化リスト２６６と同様の構成である。
【０３２４】
＜無効化リスト更新部４２４＞
無効化リスト更新部４２４は、予め、署名検証鍵４２６を記憶している。署名検証鍵４２６は、無効化リスト発行装置２５０の鍵記憶部２５３に記憶されている発行装置公開鍵と同一の鍵である。
無効化リスト更新部４２４は、切替制御部１０６から、セキュアメモリ４１３とバス１３０との接続を指示する接続指示を受け取る。接続指示を受け取ると、無線通信制御部、通信部を介して、最新のアプリ無効化リスト及びＯＳ無効化リストの送信を要求するリスト要求を、無効化リスト発行装置２５０へ送信する。
【０３２５】
次に、無線通信制御部、通信部を介して、無効化リスト発行装置２５０から、署名付ＯＳ無効化リストと署名付アプリ無効化リストとを受信する。
受信した署名付ＯＳ無効化リストの署名データに、署名検証鍵を用いて、署名検証を行う。具体的には、署名データに、署名検証鍵を用いて、署名検証アルゴリズムＶを施してチェックデータを生成する。署名検証アルゴリズムVは、署名生成アルゴリズムＳによって生成された署名データを検証するアルゴリズムである。
【０３２６】
次に、受信したＯＳ無効化リストをハッシュ関数に代入し、ＯＳダイジェストデータを生成する。生成したチェックデータとダイジェストデータとを比較し、両者が一致する場合、署名検証が成功であると判断し、一致しない場合、失敗であると判断する。署名検証に失敗した場合には、以下に説明する、リストＩＤの比較及びＯＳ無効化リストの更新を中止する。
【０３２７】
受信した署名付アプリ無効化リストについても、同様にして署名検証を行う。署名検証が失敗であった場合には、以下に説明するアプリＩＤの比較及びアプリ無効化リストの更新を中止する。
次に、受信したＯＳ無効化リストと、無効化リスト記憶部４２１の記憶しているＯＳ無効化リスト４２３とに含まれるリストＩＤを比較する。両者が同一であれば、受信したＯＳ無効化リストを破棄する。受信したＯＳ無効化リストのリストＩＤが、無効化リスト記憶部４２１の記憶しているＯＳ無効化リスト４２３のリストＩＤよりも新しい日付を示していれば、無効化リスト記憶部４２１の記憶しているＯＳ無効化リスト４２３を、受信したＯＳ無効化リストにより更新する。
【０３２８】
アプリ無効化リストについても、同様にして、受信したアプリ無効化リストと、無効化リスト記憶部４２１の記憶しているアプリ無効化リスト４２２の新旧を比較し、アプリ無効化リスト４２２の方が古い場合は、受信したアプリ無効化リストにより、無効化リスト記憶部４２１内のアプリ無効化リスト４２２を更新する。
＜ＯＳ検証部４３１及びＯＳ無効化部４３２＞
ＯＳ検証部４３１は、セキュアＯＳ４４１のヘッダ部分からセキュアＯＳＩＤ４４２を読み出す。次に、無効化リスト記憶部４２１からＯＳ無効化リスト４２３を読み出し、読み出したセキュアＯＳＩＤ４４２が、ＯＳ無効化リスト４２３の無効ＩＤに含まれているか否かを判断する。セキュアＯＳＩＤ４４２が、ＯＳ無効化リスト４２３に含まれている場合には、セキュアＯＳ４４１が無効であると判断し、ＯＳ無効化部４３２へ無効化を指示する。
【０３２９】
セキュアＯＳＩＤ４４２が、ＯＳ無効化リスト４２３に含まれていなければ、有効であると判断する。
ＯＳ無効化部４３２は、ＯＳ検証部４３１から無効化を指示され、セキュアＯＳ４４１のヘッダ部分の無効フラグを「１」に書き換える。
＜アプリ検証部４２８及びアプリ無効化部４２９＞
アプリ検証部４２８は、セキュアメモリ４１３上の音楽復号プログラム４４６のヘッダ部分からアプリＩＤ４４７を読み出す。次に、無効化リスト記憶部４２１からアプリ無効化リスト４２２を読み出し、アプリＩＤ４４７がアプリ無効化リスト４２２に含まれているか否かを判断する。アプリＩＤ４４７がアプリ無効化リスト４２２に含まれている場合、音楽復号プログラム４４６が無効なプログラムであると判断し、アプリ無効化部４２９へ無効化を指示する。
【０３３０】
アプリＩＤ４４７がアプリ無効化リストに含まれていなければ、音楽復号プログラム４４６が有効なプログラムであると判断する。
アプリ無効化部４２９は、アプリ検証部４２８から、無効化の指示を受け、音楽復号プログラム４４６の無効フラグを「１」に設定する。
セキュアメモリ４１３上に、複数のアプリケーションが存在する場合、全てのアプリケーションについて、アプリ検証部４２８及びアプリ無効化部４２９は、同様にして、アプリケーションが無効であるか否かの判断、無効であった場合の無効フラグの設定を繰り返す。
【０３３１】
（３）メモリ保護部の検証動作
図５２〜５３に示すフローチャートを用いて、メモリ保護部４１４によるプログラムの検証動作について、説明する。
切替制御部１０６から、接続指示を受ける（ステップＳ６７１）。接続指示を受け取ると、無効化リスト更新部４２４は、無線通信制御部１１８及び通信部１２１を介して無効化リスト発行装置２５０へ、リスト要求を送信する（ステップＳ６７２）。次に、通信部及び無線通信制御部を介して、署名付ＯＳ無効化リストと署名付アプリ無効化リストとを取得する（ステップＳ６７３）。
【０３３２】
無効化リスト更新部４２４は、署名検証鍵４２６を読み出し、読み出した署名検証鍵を用いて、取得した署名付ＯＳ無効化リスト及び署名付アプリ無効化リストの署名検証を行う（ステップＳ６７４）。署名検証が失敗であれば（ステップＳ６７６のＮＯ）、ＯＳ検証部によるステップＳ６８１へ処理を移す。
署名検証が成功であれば（ステップＳ６７６のＹＥＳ）、無効化リスト記憶部に記憶されているＯＳ無効化リスト４２３及びアプリ無効化リスト４２２のリストＩＤを読み出す（ステップＳ６７７）。読み出したＯＳ無効化リスト４２３リストＩＤと、受信したＯＳ無効化リストのリストＩＤと比較し、アプリ無効化リスト４２２のリストＩＤと受信したアプリ無効化リストのリストＩＤを比較することで、ＯＳ無効化リスト４２３及びアプリ無効化リスト４２２が最新版であるか否かを判断する（ステップＳ６７８）。最新版でないと判断すると（ステップＳ６７８のＮＯ）、受信したＯＳ無効化リスト及び受信したアプリ無効化リストにより、無効化リスト記憶部４２１に記憶されているＯＳ無効化リスト４２３及びアプリ無効化リスト４２２を更新する（ステップＳ６７９）。
【０３３３】
最新版であると判断すると（ステップＳ６７８のＹＥＳ）、ステップＳ６７９の処理を省略する。
ステップＳ６７２〜６７９の無効化リスト更新部４２４による処理が終了すると、ＯＳ検証部４３１は、セキュアメモリ４１３から、セキュアＯＳＩＤ４４２を読み出し（ステップＳ６８１）、読み出したセキュアＯＳＩＤ４４２が、ＯＳ無効化リスト４２３に登録されているか否かによって、セキュアＯＳ４４１が無効であるか有効であるかを判定する（ステップＳ６８２）。
【０３３４】
有効であると判定すると（ステップＳ６８３のＹＥＳ）、アプリ検証部４２８によるステップＳ６８６の処理に移る。
無効であると判断されると（ステップＳ６８３のＮＯ）、ＯＳ無効化部４３２は、セキュアＯＳ４４１の無効フラグ４４３を「１」に設定する（ステップＳ６８４）。
ＯＳ検証部４３１及びＯＳ無効化部４３２によるステップＳ６８４までの処理が終了すると、アプリ検証部４２８は、セキュアメモリ４１３上の音楽復号プログラム４４６のアプリＩＤ４４７を読み出し（ステップＳ６８６）、読み出したアプリＩＤがアプリ無効化リスト４２２に登録されているか否かによって、音楽復号プログラム４４６が有効であるか無効であるかを判定する（ステップＳ６８７）。
【０３３５】
有効であると判定されると（ステップＳ６８８のＹＥＳ）、検証処理を終了する。無効であると判定されると（ステップＳ６８８のＮＯ）、アプリ無効化部４２９は、音楽復号プログラム４４６の無効フラグを「１」に設定する（ステップＳ６８９）。
２．３  まとめ・効果
以上、説明してきたように、本実施の形態の携帯電話４００は、無効化リスト発行装置２５０から、随時最新のＯＳ無効化リスト及びアプリ無効化リストを取得する。取得したＯＳ無効化リスト及びアプリ無効化リストを基に、自身の記憶しているセキュアＯＳ４４１、音楽復号プログラム４４６を初めとするセキュアメモリ４１３上にロードされているアプリケーションが有効であるか否かを判断し、無効化されているプログラムの実行を中止する。
【０３３６】
このような構成にすることで、携帯電話４００が発売された後、後発的に無効化すべきであることが判明したプログラムについても、その実行を中断することが可能となり、不正なプログラムの実行による、データの不正使用を防止することができる。
２．４  実施の形態２の変形例１
本発明の実施の形態２について、以下のような構成であっても良い。
（１）無効化リスト発行装置２５０
無効化リスト発行装置２５０は、ＯＳ無効化リスト及びアプリ無効化リストを記憶しているが、ＯＳ無効化リストは、無効化ＩＤ２６９、２７０、２７１・・・に代わって、無効化されたオペレーティングシステムのセキュアＯＳ証明書（後述する）の証明書ＩＤを含んで構成される。
【０３３７】
アプリ無効化リストについても、無効化ＩＤ２７９、２８０、２８１・・・に代わって、無効化されたアプリケーションのアプリ証明書（後述する）の証明書ＩＤを含んで構成される。
（２）携帯電話４００
携帯電話４００は、メモリ保護部４１４に代わってメモリ保護部４５４を備え、セキュアメモリ４１３に代わってセキュアメモリ４５３を備えている。メモリ保護部４１４が、セキュアメモリ４１３上の各プログラムに固有のＩＤによって、各プログラムが有効であるか無効であるかを判定する代わりに、メモリ保護部４５４は、セキュアメモリ４５３上の各プログラムに固有の証明書を用いて判定する。
【０３３８】
以下に、この機能を実現する構成について説明する。
（２−１）セキュアメモリ４５３
セキュアメモリ４５３は、一例として、図５４に示すように、音楽復号プログラム４７６、セキュアＯＳ４８１を含んでいる。
セキュアＯＳ４８１は、ヘッダ部分に、セキュアＯＳ証明書４８２及び無効フラグ４８３を含んでいる。
【０３３９】
セキュアＯＳ証明書４８２は、Ｘ．５０９に従った公開鍵証明書であり、図５５に示すように、発行者ＩＤ４８４、証明書ＩＤ４８７、セキュアＯＳ公開鍵４８８、署名アルゴリズム４８９及びＣＡ署名４９１を含んで構成される。
発行者ＩＤ４８４は、セキュアＯＳ証明書４８２の発行元である認証局（以下、ＣＡ：Certificate Authorityと呼ぶ）の識別子である。セキュアＯＳ公開鍵４８８は、セキュアＯＳ証明書４８２によって正当性を証明されるセキュアＯＳ４８１に固有の公開鍵である。署名アルゴリズム４８９は、ＣＡ署名４９１の生成に使用されたアルゴリズムを示す識別情報である。ＣＡ署名４９１は、セキュアＯＳ証明書４８２の発行元であるＣＡの秘密鍵を用いて、上記の発行者ＩＤ４８４、証明書ＩＤ４８７・・・に、署名アルゴリズム４８９の示すアルゴリズムＳ１を施して生成された署名データである。
【０３４０】
無効フラグ４８３は、セキュアＯＳ４８１が有効であるか無効であるかを示している。
音楽復号プログラム４７６は、そのヘッダ部分にアプリ証明書４７７と無効フラグ４７８とを含んでいる。
アプリ証明書４７７は、図５５のセキュアＯＳ公開鍵４８８を、アプリ公開鍵に置き換えた構成である。
【０３４１】
無効フラグ４７８は、音楽復号プログラム４７６が無効であるか有効であるかを示している。
（２−２）メモリ保護部４５４
メモリ保護部４５４は、図５４に示すように、無効化リスト記憶部４６１、無効化リスト更新部４２４、鍵格納部４６４、アプリ検証部４６８、アプリ無効化部４２９、ＯＳ検証部４７１及びＯＳ無効化部４３２から構成される。
【０３４２】
無効化リスト更新部４２４、ＯＳ無効化部４３２及びアプリ無効化部４２９の動作は、上記の実施の形態２の無効化リスト更新部４２４、ＯＳ無効化部４３２及びアプリ無効化部４２９と同様であるので、ここでは説明を省略する。
＜無効化リスト記憶部４６１＞
無効化リスト記憶部４６１は、図５４に示すようにＯＳ無効化リスト４６３及びアプリ無効化リスト４６２を含んでいる。
【０３４３】
ＯＳ無効化リスト４６３は、無効化リスト発行装置２５０の記憶しているＯＳ無効化リストと同様の構成であり、無効化されたオペレーティングシステムの証明書ＩＤを含んでいる。
アプリ無効化リスト４６２は、無効化リスト発行装置２５０の記憶しているアプリ無効化リストと同様の構成であり、無効化されたアプリケーションの証明書ＩＤを含んでいる。
【０３４４】
＜鍵格納部４６４＞
鍵格納部４６４は、ＣＡ公開鍵４６６を記憶している。ＣＡ公開鍵４６６は、セキュアＯＳ証明書４８２及びアプリ証明書４７７の発行元であるＣＡの公開鍵であり、セキュアＯＳ証明書４８２及びアプリ証明書４７７に含まれるＣＡ署名の生成に用いられたＣＡの秘密鍵と対になる鍵である。
【０３４５】
＜ＯＳ検証部４７１＞
ＯＳ検証部４７１は、無効化リスト更新部４２４によるＯＳ無効化リスト及びアプリ無効化リストの更新の処理が終了すると、セキュアメモリ４５３から、セキュアＯＳ４８１に含まれるセキュアＯＳ証明書４８２を読み出す。鍵格納部４６４からＣＡ公開鍵４６６を読み出し、読み出したＣＡ公開鍵４６６を用いて、セキュアＯＳ証明書４８２に含まれるＣＡ署名４９１に署名検証アルゴリズムＶ１を施して署名検証を行う。署名検証アルゴリズムＶ１は、署名生成アルゴリズムＳ１により生成された署名データを検証するアルゴリズムである。
【０３４６】
署名検証の結果が失敗であれば、以降の処理を中止し、ＯＳ無効化部４３２へ、セキュアＯＳ４８１の無効化を指示する。
署名検証の結果が成功であれば、次に、セキュアＯＳ証明書４８２に含まれる証明書ＩＤ４８７が、ＯＳ無効化リスト４６３に登録されているか否かによって、セキュアＯＳ４８１が無効であるか否かを判定する。登録されていれば、セキュアＯＳ４８１が無効なプログラムであると判定し、ＯＳ無効化部４３２へ、セキュアＯＳ４８１の無効化を指示する。
【０３４７】
登録されていなければ、ＯＳ検証部４７１は、セキュアＯＳ４８１が、有効なプログラムであると判定する。
なお、本実施の形態において、セキュアＯＳ証明書４８２の署名検証を行い、署名検証が成功の場合に、証明書ＩＤ４８７が、ＯＳ無効化リスト４６３に登録されているか否かを判定しているが、証明書ＩＤ４８７が、ＯＳ無効化リスト４６３に登録されているか否かを判定し、登録されていない場合に、署名検証を行うとしてもよい。
【０３４８】
＜アプリ検証部４６８＞
アプリ検証部４６８は、ＯＳ検証部４７１によるセキュアＯＳ４８１の検証が終了すると、セキュアメモリ４５３から、音楽復号プログラム４７６に含まれるアプリ証明書４７７を読み出す。鍵格納部４６４からＣＡ公開鍵４６６を読み出し、読み出したＣＡ公開鍵４６６を用いて、アプリ証明書４７７に含まれるＣＡ署名に署名検証アルゴリズムＶ１を施して署名検証を行う。
【０３４９】
署名検証の結果が失敗であれば、以降の処理を中止し、アプリ無効化部４２９へ、音楽復号プログラム４７６の無効化を指示する。
署名検証の結果が成功であれば、次に、アプリ証明書４７７に含まれる証明書ＩＤが、アプリ無効化リスト４６２に登録されているか否かによって、音楽復号プログラム４７６が無効であるか否かを判定する。登録されていれば、音楽復号プログラム４７６が無効なプログラムであると判定し、アプリ無効化部４２９へ、音楽復号プログラム４７６の無効化を指示する。
【０３５０】
登録されていなければ、音楽復号プログラム４７６は、有効なプログラムであると判定する。
なお、上記の署名検証と証明書ＩＤが、アプリ無効化リスト４６２に登録されているか否かの判定の順序は逆でもよい。
２．５  実施の形態２の変形例２
上記の変形例１において、音楽復号プログラム４７６は、階層構造を構成する複数の証明書を含んでいるとしても良い。
【０３５１】
図５６は、音楽復号プログラム４７６の有する複数の証明書の構成及び、これらの証明書の階層構造を表している。
音楽復号プログラム４７６は、図５６に示すように、アプリ証明書５０１、メーカー証明書５１１及びＣＡ証明書５２１を含んでいる。
アプリ証明書５０１は、発行元５０２、証明書ＩＤ５０３、アプリ公開鍵５０４、署名アルゴリズム５０６及びメーカー署名５０８を含んで構成される。
【０３５２】
発行元５０２は、アプリ証明書５０１の発行元であるアプリメーカーを示す識別情報である。図５６には説明の便宜上「アプリメーカー」と記載している。証明書ＩＤ５０３は、アプリ証明書５０１に固有の識別情報である。アプリ公開鍵５０４は、音楽復号プログラム４７６に固有の公開鍵であり、アプリ証明書５０１によって、その正当性を証明される。署名アルゴリズム５０６は、メーカー署名５０８の生成に使用された署名生成アルゴリズムを示す識別情報である。メーカー署名５０８は、音楽復号プログラム４７６の製造メーカーに固有のアプリメーカー秘密鍵５１９を用いて、発行元５０２、証明書ＩＤ５０３、アプリ公開鍵５０４、署名アルゴリズム５０６などのアプリ証明書５０１に含まれる情報に、署名生成アルゴリズムＳ２を施して生成された署名データである。
【０３５３】
メーカー証明書５１１は、発行元５１２、証明書ＩＤ５１３、メーカー公開鍵５１４、署名アルゴリズム５１６及びＣＡ署名５１８を含んで構成される。
発行元５１２は、メーカー証明書５１１の発行元であるＣＡを示す識別情報である。図５６には説明の便宜上「ＣＡ」と記載している。証明書ＩＤ５１３は、メーカー証明書５１１に固有の識別情報である。メーカー公開鍵５１４は、音楽復号プログラム４７６の製造メーカーの公開鍵であり、メーカー証明書５１１によって、その正当性を証明される。メーカー公開鍵５１４は、アプリメーカー秘密鍵５１９と対応する鍵である。署名アルゴリズム５１６は、ＣＡ署名５１８の生成に使用された署名生成アルゴリズムを示す識別情報である。ＣＡ署名５１８は、ＣＡ秘密鍵５２９を用いて、発行元５１２、証明書ＩＤ５１３、メーカー公開鍵５１４、署名アルゴリズム５１６などのメーカー証明書５１１に含まれる情報に、署名生成アルゴリズムＳ３を施して生成された署名データである。
【０３５４】
ＣＡ証明書５２１は、発行元５２２、証明書ＩＤ５２３、ＣＡ公開鍵５２４、署名アルゴリズム５２６及びルートＣＡ署名５２８を含んで構成される。
発行元５２２は、ＣＡ証明書５２１の発行元であるルートＣＡを示す識別情報である。図５６には説明の便宜上「ルートＣＡ」と記載している。証明書ＩＤ５２３は、ＣＡ証明書５２１に固有の識別情報である。ＣＡ公開鍵５２４は、ＣＡの公開鍵であり、ＣＡ証明書５２１によって、その正当性を証明される。ＣＡ公開鍵５２４は、ＣＡ秘密鍵５２９と対応する鍵である。署名アルゴリズム５２６は、ルートＣＡ署名５２８の生成に使用された署名生成アルゴリズムを示す識別情報である。ルートＣＡ署名５２８は、ルートＣＡ秘密鍵５３１を用いて、発行元５２２、証明書ＩＤ５２３、ＣＡ公開鍵５２４、署名アルゴリズム５２６などのＣＡ証明書５２１に含まれる情報に、ルートＣＡ秘密鍵５３１を用いて、署名生成アルゴリズムＳ４を施して生成された署名データである。ルートＣＡ秘密鍵５３１は、ルートＣＡに固有の秘密鍵である。
【０３５５】
ここで、一例として、ＣＡには携帯電話４００の販売メーカー、ルートＣＡには、公的な証明書発行機関が該当する。また、メーカー証明書５１１に代わって、音楽復号プログラム４７６を制御するセキュアＯＳ４８１のＯＳ証明書４８２、携帯電話４００に割り当てられる証明書、セキュアＯＳ４８１の製造メーカーの証明書を用いるとしても良い。
この変形例において、鍵格納部４６４は、ＣＡ公開鍵４６６に代わって、ルートＣＡ公開鍵を記憶している。ルートＣＡ公開鍵は、ルートＣＡ秘密鍵５３１と対応する鍵である。また、無効化リスト記憶部４６１は、アプリ無効化リスト４６２に加えて、メーカー無効化リスト及び、ＣＡ無効化リストを記憶している。メーカー無効化リストは、無効化されたメーカー証明書の証明書ＩＤを含むリストであり、ＣＡ無効化リストは、無効化されたＣＡ証明書の証明書ＩＤを含むリストである。
【０３５６】
アプリ検証部４６８は、先ず、ＣＡ証明書５２１とルートＣＡ公開鍵を読み出し、読み出したルートＣＡ公開鍵を用いてＣＡ証明書５２１に含まれるルートＣＡ署名５２８に署名検証アルゴリズムＶ４を施して署名検証を行う。署名検証アルゴリズムＶ４は、署名生成アルゴリズムＳ４により生成された署名データを検証するアルゴリズムである。
署名検証が失敗であれば、アプリ検証部４６８は、以下の処理を中止して、アプリ無効化部４２９へ、音楽復号プログラム４７６の無効化を指示する。
【０３５７】
署名検証が成功であれば、次に、ＣＡ証明書５２１に含まれる証明書ＩＤ５２３がＣＡ無効化リストに登録されているか否かを判断し、登録されていれば、アプリ検証部４６８は、以下の処理を中止して、アプリ無効化部４２９へ、音楽復号プログラム４７６の無効化を指示する。
登録されていなければ、次に、メーカー証明書５１１を読み出し、ＣＡ証明書５２１に含まれるＣＡ公開鍵５２４を用いて、読み出したメーカー証明書５１１に含まれるＣＡ署名５１８に署名検証アルゴリズムＶ３を施して署名検証を行う。署名検証アルゴリズムＶ３は、署名生成アルゴリズムＳ３により生成された署名データを検証するアルゴリズムである。
【０３５８】
署名検証が失敗であれば、アプリ検証部４６８は、以下の処理を中止して、アプリ無効化部４２９へ、音楽復号プログラム４７６の無効化を指示する。
署名検証が成功であれば、次に、メーカー証明書５１１に含まれる証明書ＩＤ５１３がメーカー無効化リストに登録されているか否かを判断し、登録されていれば、アプリ検証部４６８は、以下の処理を中止して、アプリ無効化部４２９へ、音楽復号プログラム４７６の無効化を指示する。
【０３５９】
登録されていなければ、次に、アプリ証明書５０１を読み出す。メーカー証明書５１１に含まれるメーカー公開鍵５１４を用いて、読み出したアプリ証明書５０１に含まれるメーカー署名５０８に署名検証アルゴリズムＶ２を施して署名検証を行う。署名検証アルゴリズムＶ２は、署名生成アルゴリズムＳ２により生成された署名データを検証するアルゴリズムである。
【０３６０】
署名検証が失敗であれば、アプリ検証部４６８は、以下の処理を中止して、アプリ無効化部４２９へ、音楽復号プログラム４７６の無効化を指示する。
署名検証が成功であれば、次に、アプリ証明書５０１に含まれる証明書ＩＤ５０３がアプリ無効化リストに４６２に登録されているか否かを判断し、登録されていれば、アプリ検証部４６８は、アプリ無効化部４２９へ、音楽復号プログラム４７６の無効化を指示する。
【０３６１】
登録されていなければ、音楽復号プログラム４７６が有効なプログラムであると判定する。
このように、２重、３重の検証をすることで、より高いセキュリティを確保することができる。また、メーカー証明書を導入したことにより、同一のメーカーにより開発されたプログラム全てを無効化することができる。
【０３６２】
セキュアＯＳ４８１についても、同様に複数の証明書による検証を行っても良い。
２．６その他の変形例
（１）上記の実施の形態２において、ＯＳ無効化リストは、リストＩＤとして、ＯＳ無効化リストの生成された日付を含んでいるが、図５７に示すＯＳ無効化リスト５４１のようにバージョン番号をリストＩＤ５４３として含んでいても良い。バージョン情報とは、ＯＳ無効化リストの世代を示す番号であり、値が大きいほど新しいことを示す。
【０３６３】
また、ＯＳ無効化リスト５５１に示すように、無効化ＩＤの総数をリストＩＤ５５３として含んでいるとしても良い。無効化されるプログラムの総数は、減少することはありえないため、無効化ＩＤの総数をリストＩＤとすることで、リストＩＤの値の大きいものほど新しいＯＳ無効化リストであると、判断することができる。
（２）上記の説明において、無効化リスト発行装置２５０は、ＯＳ無効化リスト及びアプリ無効化リストを生成しているが、アプリ無効化リストとＯＳ無効化リストの発行元は別々でも良い。
【０３６４】
例えば、ＯＳ無効化リストは、オペレーティングシステム開発メーカーの管理する無効化リスト発行装置により、生成され発行される。アプリ無効化リストは、アプリケーションの開発メーカーの管理する無効化リスト発行装置により生成され発行される。
（３）上記の実施の形態及び変形例において、ＯＳ検証がセキュアアプリケーションを検証し、アプリ検証部がセキュアＯＳを検証するとしてもよい。
【０３６５】
セキュアアプリケーションとセキュアＯＳの開発メーカーは異なる場合、このように相互に検証しあうことで、より安全性を高めることができる。
（４）また、無効化リスト発行装置２５０が送信するアプリ無効化リスト及びＯＳ無効化リストは、必ず最新のものであり、無効化リスト記憶部４２１が記憶しているアプリ無効化リスト４２２及びＯＳ無効化リスト４２３がこれらよりも新しいことはありえない。従って、無効化リスト更新部４２４は、アプリ無効化リスト及びＯＳ無効化リストの更新を行う際に、上述したようなリストＩＤの比較を省略し、署名検証に成功すれば、無条件に、無効化リスト発行装置２５０から受信したアプリ無効化リスト及びＯＳ無効化リストにより、アプリ無効化リスト４２２及びＯＳ無効化リスト４２３を更新するとしてもよい。
【０３６６】
（５）上記の実施の形態において、切替制御部１０６から接続指示が出力されると、セキュアメモリ４１３に記憶されている各プログラムの検証を行っているが、検証のタイミングは、これに限るものではなく、携帯電話４００の電源投入時、各プログラムの起動時などでもよい。
３．実施の形態３
以下に、本発明に係る実施の形態３について説明する。
【０３６７】
本実施の形態の携帯電話は、実施の形態２と同様に、携帯電話網及びインターネットを介して、無効化リスト発行装置と接続されている。
３．１無効化リスト発行装置
本実施の形態の無効化リスト発行装置は、実施の形態２における無効化リスト発行装置２５０と同様に、通信部、署名生成部、鍵記憶部、ハッシュ生成部、制御部、情報記憶部６１０、入力部及び表示部から構成される。
【０３６８】
通信部、署名生成部、鍵記憶部、ハッシュ生成部、入力部及び表示部の構成及び動作は、無効化リスト発行装置２５０に含まれる通信部２５１、署名生成部２５２、鍵記憶部２５３、ハッシュ生成部２５４、入力部２６２及び表示部２６３とほぼ同様であり、ハッシュ生成部は、ＯＳ無効化リスト及びアプリ無効化リストに代わって、ＯＳマトリクス無効化リスト（後述する）からＯＳダイジェストデータを生成し、アプリマトリクス無効化リスト（後述する）からアプリダイジェストデータを生成する。これらの各部については、説明を省略し、本実施の形態の特徴である。情報記憶部６１０及び制御部についてのみ説明する。
【０３６９】
（１）情報記憶部６１０
情報記憶部６１０は、図５８に示すように、アプリ発行鍵マトリクス６０１、ＯＳ発行鍵マトリクス６０２、アプリ無効化情報６０４、６０６・・・、アプリマトリクス無効化リスト６１１及びＯＳマトリクス無効化リスト６２１を記憶している。
＜アプリ発行鍵マトリクス６０１及びＯＳ発行鍵マトリクス６０２＞
アプリ発行鍵マトリクス６０１は、図５８に示すように４行×４列の行列の各行列要素として、１６個の発行鍵Ｋｅｙ＿１１、Ｋｅｙ＿１２、Ｋｅｙ＿１３・・・を配置したものである。各発行鍵は、一例として擬似乱数を用いて生成される、６４ビット長の鍵データである。
【０３７０】
アプリ発行鍵マトリクス６０１は、縦方向に上から順に行番号「１」、「２」、「３」、「４」を配置し、横方向に左から順に、列番号「１」、「２」、「３」、「４」を配置している。
行番号「１」、列番号「１」と対応する行列要素６６１は、発行鍵Ｋｅｙ＿１１であり、行番号「１」、列番号「２」と対応する行列要素６６２は、発行鍵Ｋｅｙ＿１２である。行番号「１」、列番号「３」と対応する行列要素６６３は、発行鍵Ｋｅｙ＿１３であり、行番号「１」、列番号「４」と対応する行列要素６６４は、発行鍵Ｋｅｙ＿１４である。
【０３７１】
同様に、行番号「２」、列番号「１」〜「４」の行列要素６６５〜６６８は、それぞれ、発行鍵Ｋｅｙ＿２１、Ｋｅｙ＿２２、Ｋｅｙ＿２３、Ｋｅｙ＿２４である。行番号「３」、列番号「１」〜「４」の行列要素６６９〜６７２は、発行鍵Ｋｅｙ＿３１、Ｋｅｙ＿３２、Ｋｅｙ＿３３、Ｋｅｙ＿３４である。行番号「４」、列番号「１」〜「４」の行列要素６７３〜６７６は、Ｋｅｙ＿４１、Ｋｅｙ＿４２、Ｋｅｙ＿４３、Ｋｅｙ＿４４である。
【０３７２】
本実施の形態において、各セキュアアプリケーションには、アプリ発行鍵マトリクス６０１の各列から１個ずつ、計４個の発行鍵が割り当てられている。４個の発行鍵の組み合わせは、セキュアアプリケーションごとに異なる。
一例として、携帯電話において実行される音楽復号プログラム（後述する）には、アプリ発行鍵マトリクス６０１において、実線円６７７、６７８、６７９、６８０で囲まれている、発行鍵Ｋｅｙ＿１１、Ｋｅｙ＿３２、Ｋｅｙ＿２３、Ｋｅｙ＿１４が割り当てられている。また、音楽復号プログラムとは別のセキュアアプリケーション（アプリＢと呼ぶ）には、点線円６８１、６８２、６８３、６８４で囲まれている、発行鍵Ｋｅｙ＿２１、Ｋｅｙ＿３２、Ｋｅｙ＿３３、Ｋｅｙ＿４４が割り当てられている。
【０３７３】
ＯＳ発行鍵マトリクス６０２は、アプリ発行鍵マトリクス６０１と同様の構成であり、１６個の発行鍵を４行×４列の行列の、行列要素として格納したものである。
＜アプリ無効化情報６０４、６０６・・・＞
アプリ無効化情報６０４、６０６・・・についての説明を容易にするために、アプリ固有鍵マトリクス及びＯＳ固有鍵マトリクスについて先ず説明する。
【０３７４】
図５９は、本実施の形態の携帯電話に記憶されている暗号化音楽復号プログラム５９１（後述する）に含まれるアプリ固有鍵マトリクス５９２及び暗号化セキュアＯＳ５９６（後述する）に含まれるＯＳ固有鍵マトリクス５９７である。
アプリ固有鍵マトリクス５９２は、暗号化音楽復号プログラム５９１を復号して生成される音楽復号プログラムと１対１に対応しており、音楽復号プログラムに割り当てられた４個の発行鍵を含んでいる。アプリ固有鍵マトリクス５９２は、４つの鍵情報９０１、９０２、９０３、９０４から構成される。各鍵情報は、列番号と行番号と発行鍵を含んでおり、鍵情報９０１は、アプリ発行鍵マトリクス６０１の１列目の行列要素から音楽復号プログラムに割り当てられた発行鍵Ｋｅｙ＿１１と、アプリ発行鍵マトリクス６０１上でＫｅｙ＿１１と対応する行番号「１」と列番号「１」とを含んでいる。鍵情報９０２は、アプリ発行鍵マトリクス６０１の２列目の行列要素から音楽復号プログラムに割り当てられた発行鍵Ｋｅｙ＿３２と、アプリ発行鍵マトリクス６０１上でＫｅｙ＿３２と対応する行番号「３」と列番号「２」とを含んでいる。鍵情報９０３は、アプリ発行鍵マトリクス６０１の３列目の行列要素から音楽復号プログラムに割り当てられた発行鍵Ｋｅｙ＿２３と、アプリ発行鍵マトリクス６０１上でＫｅｙ＿２３と対応する行番号「２」と列番号「３」とを含んでいる。鍵情報９０４は、アプリ発行鍵マトリクス６０１の４列目の行列要素から音楽復号プログラムに割り当てられた発行鍵Ｋｅｙ＿１４と、アプリ発行鍵マトリクス６０１上でＫｅｙ＿１４と対応する行番号「１」と列番号「４」とを含んでいる。
【０３７５】
ＯＳ固有鍵マトリクス５９７は、アプリ固有鍵マトリクスと同様の構成であり、鍵情報９０６、９０７、９０８、９０９から構成され、各鍵情報は、列番号、行番号発行鍵を含む。
本実施の形態に記憶されている暗号化セキュアＯＳ５９６を復号して生成されるセキュアＯＳには、ＯＳ発行鍵マトリクス６０２の各列から１個ずつ、計４個の発行鍵が割り当てられている。この４個の発行鍵の組み合わせは、オペレーティングシステムごとに異なる。
【０３７６】
鍵情報９０６〜９０９は、それぞれ、ＯＳ固有鍵マトリクス６０２の各列から、セキュアＯＳに割り当てられた固有鍵と固有鍵に対応するＯＳ固有鍵マトリクス６０２上の列番号と行番号とを含んでいる。
アプリ無効化情報６０４、６０６・・・は、無効化されたアプリケーションのアプリ固有鍵マトリクスの各鍵情報から列番号及び行番号を抽出したものである。
【０３７７】
一例として、アプリ無効化情報６０４は、上述のアプリＢと対応する。アプリ無効化情報６０４は、図５８に示すように、４個の列番号「１」＿９３１、「２」＿９３２、「３」＿９３３、「４」＿９３４と、それぞれの列番号と対応する行番号９３５〜９３８から構成される。列番号「１」＿９３１と行番号「２」＿９３５は、アプリ発行鍵マトリクス６０１の１列目から、アプリＢに割り当てられた発行鍵Ｋｅｙ＿２１と対応している。列番号「２」＿９３２と行番号「３」＿９３６、プリ発行鍵マトリクス６０１の２列目から、アプリＢに割り当てられた発行鍵Ｋｅｙ＿３２と対応している。同様に、列番号「３」＿９３３と行番号「３」＿９３７は、発行鍵Ｋｅｙ＿３３と対応しており、列番号「４」と行番号「４」は、発行鍵Ｋｅｙ＿４４と対応している。
【０３７８】
また、具体的には図示していないが、情報記憶部６１０は、無効化されたオペレーティングシステムのＯＳ固有鍵マトリクスの各鍵情報から列番号及び行番号を抽出したＯＳ無効化情報を記憶している。
＜アプリマトリクス無効化リスト６１１及びＯＳマトリクス無効化リスト６２１＞
アプリマトリクス無効化リスト６１１は、図６０に示すように、１６個の行列要素９１１〜９２６を、４行×４列の行列状に配置して構成される。説明の便宜上、ｉ行ｊ列目の行列要素に格納される行列要素を変数Ｍｉｊを用いて表現する。
【０３７９】
変数Ｍｉｊは、アプリ発行鍵マトリクス６０１上のｉ行ｊ列目の発行鍵を用いて、暗号化音楽復号プログラム５９１を初めとする暗号化アプリケーションを復号するための復号鍵に暗号化アルゴリズムＥ２を施して生成されたものである。図中のＥｎｃ（Ｋｅｙ＿ｉｊ，復号鍵）は、復号鍵を、発行鍵Ｋｅｙ＿ｉｊを用いて暗号化して生成されたものであることを示している。例えば、行番号「１」、列番号「１」の行列要素９１１である変数Ｍ１１は、アプリ発行鍵マトリクス６０１上の、行番号「１」、列番号「１」の行列要素６６１の発行鍵Ｋｅｙ＿１１を用いて、復号鍵を暗号化したものである。
【０３８０】
ここで、アプリマトリクス無効化リスト６１１は、情報記憶部６１０に記憶されているアプリ無効化情報が、アプリ無効化情報６０４のみである場合に生成されたものである。このとき、アプリ無効化情報６０４に含まれる行番号及び列番号と対応する行列要素Ｍ２１、Ｍ３２、Ｍ３３及びＭ４４は、復号鍵に変わってダミーデータ「００００」を、発行鍵を用いて暗号化したものである。
【０３８１】
ＯＳマトリクス無効化リスト６２１は、アプリマトリクス無効化リスト６１１と同様の構成であり、１６個の行列要素を４行×４列の行列状に配置したものである。ｉ行ｊ列目の行列要素は、暗号化セキュアＯＳ５９６を含む各種の暗号化オペレーティングシステムを復号するための復号鍵を、ＯＳ発行鍵マトリクス６０２のｉ行ｊ列目に配置された発行鍵を用いて暗号化したものである。ただし、ＯＳ無効化情報に含まれる行番号及び列番号と対応する行列要素は、前記復号鍵に代わって、ダミーデータを暗号化したものである。
【０３８２】
また、具体的には図示していないが、アプリマトリクス無効化リスト６１１及びＯＳマトリクス無効化リストには、その新旧を示すリストＩＤが含まれている。
（２）制御部
制御部は、インターネットを介して、携帯電話から、リスト要求を受信する。リスト要求を受信すると、情報記憶部６１０から、ＯＳマトリクス無効化リスト６２１及びアプリマトリクス無効化リスト６１１を読み出し、ハッシュ制御部、署名生成部によって生成された署名を付加した署名付ＯＳマトリクス無効化リストと署名付アプリマトリクス無効化リストとを携帯電話へ送信する。これは、実施の形態２の制御部２５７による、署名付ＯＳ無効化リスト及び署名付アプリ無効化リストの生成及び送信と同様であるので、詳細な説明は省略する。
【０３８３】
また、制御部は、入力部を介して、操作者により新たなアプリ無効化情報の入力及びアプリマトリクス無効化リストの生成の指示を受け付ける。受け付けた指示に従って、新たにアプリマトリクス無効化リストを生成する。
また、新たなＯＳ無効化情報の入力及びＯＳマトリクス無効化リストの生成の指示を受け付ける。受け付けた指示に従って、新たにＯＳマトリクス無効化リストを生成する。
【０３８４】
以下に図６１に示すフローチャートを用いて、アプリマトリクス無効化リストの生成の動作について説明する。なお、本実施の形態では、アプリ発行鍵マトリクス６０１及びアプリマトリクス無効化リストは、１６個の要素を４×４の行列状に配置して構成されるが、これに限るものではない。フローチャートにおいては、より一般的にｐ行ｎ列の場合について説明している。（ｐ、ｎは１以上の整数）
先ず、ｐ×ｎ個の各行列要素Ｍ１１、Ｍ１２・・・Ｍｐｎに復号鍵を代入する（ステップＳ７２１）。列番号を格納する変数ｊ及び行番号を格納する変数ｉを０で初期化する（ステップＳ７２２）。
【０３８５】
次に、アプリ無効化情報を読み出し（ステップＳ７２３）、変数ｊに１加算する（ステップＳ７２４）。読み出したアプリ無効化情報の列番号ｊと対応する行番号を抽出し、抽出した行番号を変数ｉに代入する（ステップＳ７２６）。
次に、行列要素Ｍｉｊにダミーデータ「００００」を代入する（ステップＳ７２７）。次に、変数ｊ＝ｎであるか否かを判断する（ステップＳ７２９）。ｊ＝ｎでないと判断すると（ステップＳ７２９のＮＯ）、ステップＳ７２４に戻って、ｊ＝ｎになるまでステップＳ７２４〜７２９を繰り返す。
【０３８６】
変数ｊ＝ｎであると判断した場合（ステップＳ７２９のＹＥＳ）、情報記憶部６１０に記憶されているアプリ無効化情報全てを読み出し終わっているか否かを判断し（ステップＳ７３１）、読み出し終えていなければ（ステップＳ７３１のＮＯ）、ステップＳ７２２に戻り、次のアプリ無効化情報についても、ステップＳ７２２〜７３１の処理を繰り返す。
【０３８７】
全てのアプリ無効化情報を読み出し終えていると判断すると（ステップＳ７３１のＹＥＳ）、変数ｉに０を代入し（ステップＳ７３４）、変数ｊに０を代入する（ステップＳ７３６）。次に、変数ｉに１加算し（ステップＳ７３７）、変数ｊに１加算する（ステップＳ７３９）。
アプリ発行鍵マトリクス６０１のｉ行ｊ列目の発行鍵Ｋｅｙ＿ｉｊを読み出す（ステップＳ７４１）。読み出した発行鍵Ｋｅｙ＿ｉｊを用いて、行列要素Ｍｉｊに暗号化アルゴリズムＥ２を施して、Ｅｎｃ（Ｋｅｙ＿ｉｊ，Ｍｉｊ）を生成し、生成したＥｎｃ（Ｋｅｙ＿ｉｊ，Ｍｉｊ）をＭｉｊに代入する（ステップＳ７４２）。
【０３８８】
変数ｊ＝ｎであれば（ステップＳ７４３のＹＥＳ）、ステップＳ７４４に処理を移し、変数ｊ＝ｎでなければ（ステップＳ７４３のＮＯ）、ステップＳ７３９へ戻り、変数ｊ＝ｎになるまで、ステップＳ７３９〜７４３の処理を繰り返す。
次に、変数ｉ＝ｐであれば（ステップＳ７４４のＹＥＳ）、アプリマトリクス無効化リストの生成を終了する。
【０３８９】
変数ｉ＝ｐでなければ（ステップＳ７４４のＮＯ）、ステップＳ７３６に戻り、ｉ＝ｐになるまで、ステップＳ７３６〜７４４の処理を繰り返す。
なお、ＯＳマトリクス無効化リストについても、ＯＳ発行鍵マトリクスとＯＳ無効化情報を用いて、同様の手順で生成する。
３．２携帯電話
本実施の形態の携帯電話は、実施の形態２の携帯電話４００と類似した構成である。従って、ここでは、実施の形態２と同様の部分の説明は省略し、本実施の形態の特徴部分についてのみ説明する。
【０３９０】
（１）セキュアメモリ６１３
セキュアメモリ６１３には、一例として、図６２に示すように暗号化音楽復号プログラム５９１及び暗号化セキュアＯＳ５９６を記憶している。
暗号化音楽復号プログラム５９１は、実施の形態２の音楽復号プログラム４４６と同様の音楽復号の手順を含む音楽復号プログラムに、暗号化アルゴリズムＥ３を施して、生成されたものである。また、暗号化音楽復号プログラム５９１は、ヘッダ部分に、音楽復号プログラムに固有のアプリ固有鍵マトリクス５９２と無効フラグ５９３を含んでいる。アプリ固有鍵マトリクス５９２については、上記において、述べたとおりである。無効フラグ５９３は、前記音楽復号プログラムが無効であるか否かを示すフラグであり「０」であれば、有効であることを、「１」であれば無効であることを示している。
【０３９１】
暗号化セキュアＯＳ５９６は、実施の形態２のセキュアＯＳ４４１と同様のオペレーティング機能を有するセキュアＯＳに、暗号化アルゴリズムＥ３を施して生成されたものである。暗号化セキュアＯＳ５９６は、前記セキュアＯＳに固有のＯＳ固有鍵マトリクス５９７及び無効フラグ５９８をヘッダ部分に含んでいる。ＯＳ固有鍵マトリクス５９７については、上記において、述べたとおりである。
【０３９２】
無効フラグ５９８は、セキュアＯＳが無効であるか否かを示すフラグであり「０」であれば、有効であることを、「１」であれば無効であることを示している。
（２）メモリ保護部５７１
メモリ保護部５７１は、図６２に示すように無効化リスト記憶部５７２、無効化リスト更新部５７５、アプリ検証部５７８、アプリ無効化部５７９、ＯＳ検証部５８１、ＯＳ無効化部５８２及び暗号・復号部５８６から構成される。
【０３９３】
無効化リスト記憶部５７２は、アプリマトリクス無効化リスト５７３及びＯＳマトリクス無効化リスト５７４を記憶している。アプリマトリクス無効化リスト５７３及びＯＳマトリクス無効化リスト５７４は、無効化リスト発行装置の情報記憶部６１０に記憶されているアプリマトリクス無効化リスト６１１及びＯＳマトリクス無効化リストと同様の構成である。
【０３９４】
無効化リスト更新部５７５の動作は、実施の形態２の無効化リスト更新部４２４と同様であり、アプリ無効化リスト及びＯＳ無効化リストに代わって、アプリマトリクス無効化リスト及びＯＳマトリクス無効化リストを更新する。
アプリ無効化部５７９及びＯＳ無効化部５８２の動作は、実施の形態２のアプリ無効化部４２９及びＯＳ無効化部４３２と同様であるので、ここでは、改めて説明しない。
【０３９５】
＜アプリ検証部５７８及びＯＳ検証部５８１＞
アプリ検証部５７８は、暗号化音楽復号プログラム５９１に含まれるアプリ固有鍵マトリクス５９２及び、無効化リスト記憶部５７２に記憶されているアプリマトリクス無効化リスト５７３を用いて、暗号化音楽復号プログラム５９１の復号鍵を生成する。正しく復号鍵を生成することができた場合、音楽復号プログラムが有効であると判定し、生成できなかった場合、音楽復号プログラムが無効であると判断する。上記の、音楽復号プログラムの検証の詳細な手順については、後に説明する。
【０３９６】
有効であると判断すると、暗号・復号部５８６へ生成した復号鍵を出力し、暗号化音楽復号プログラム１７６の復号を指示する。
無効であると判断すると、アプリ無効化部５７９へ無効化を指示する。
ＯＳ検証部５８１は、アプリ検証部５７８と同様にして、暗号化セキュアＯＳ５９６を復号して生成されるセキュアＯＳが有効であるか無効であるかを判定する。ここでは、アプリ固有鍵マトリクス５９２、アプリマトリクス無効化リスト５７３に代わって、ＯＳ固有鍵マトリクス５９７、ＯＳマトリクス無効化リスト５７４を用いる。
【０３９７】
＜暗号・復号部５８６＞
暗号・復号部５８６は、ＯＳ検証部５８１から暗号化セキュアＯＳ５９６の復号鍵を受け取り、復号を指示される。復号を指示されると、受け取った復号鍵を用いて、セキュアメモリ６１３上の暗号化セキュアＯＳ５９６に、復号アルゴリズムＤ３を施してセキュアＯＳを生成する。
【０３９８】
また、アプリ検証部５７８から暗号化音楽復号プログラム５９１の復号鍵を受け取り、復号を指示される。受け取った復号鍵を用いて、暗号化音楽復号プログラム５９１に復号アルゴリズムＤ３を施して音楽復号プログラムを生成する。
ここで、Ｄ３は、暗号化アルゴリズムＥ３によって生成された暗号文を復号するアルゴリズムであり、一例として、ＤＥＳ、ＡＥＳ（Advanced Encryption Standard）などを用いる。
【０３９９】
また、切替制御部５７６から出力される、セキュアメモリ６１３とバス１３０との切断を指示する切断指示を検出する。切断指示を検出すると、受け取った復号鍵によって、音楽復号プログラム及びセキュアＯＳを暗号化して暗号化音楽復号プログラム５９１及び暗号化セキュアＯＳ５９６を生成する。
（３）メモリ保護部５７１による検証動作
メモリ保護部５７１による、セキュアメモリ６１３上のプログラムの検証動作について、図６３のフローチャートを用いて説明する。
【０４００】
メモリ保護部５７１は、接続指示を受け取る（ステップＳ７０１）。接続指示を受け取ると、無効化リスト更新部５７５は、インターネットを介して無効化リスト発行装置から、最新のアプリマトリクス無効化リストとＯＳマトリクス無効化リストとを取得し、無効化リスト記憶部５７２に記憶されているアプリマトリクス無効化リスト５７３及びＯＳマトリクス無効化リスト５７４を更新する（ステップＳ７０２）。無効化リスト更新部５７５によるステップＳ７０２の処理は、実施の形態２の無効化リスト更新部４２４によるステップＳ６７２〜６７９（図４９）の処理と同様であり、ＯＳ無効化リストをＯＳマトリクス無効化リストに置き換え、アプリ無効化リストをアプリマトリクス無効化リストに置き換えればよい。
【０４０１】
次に、ＯＳ検証部５８１は、セキュアＯＳの検証を行い（ステップＳ７０３）、セキュアＯＳが有効であると判定すると（ステップＳ７０６のＹＥＳ）、暗号・復号部５８６へ暗号化セキュアＯＳ５９６の復号を指示し、暗号・復号部５８６は、暗号化セキュアＯＳ５９６を復号して、セキュアＯＳを生成する（ステップＳ７０７）。
セキュアＯＳが無効であると判定すると（ステップＳ７０６のＮＯ）、ＯＳ無効化部５８２へ指示して、無効フラグ５９８を「１」に設定する（ステップＳ７０９）。
【０４０２】
次に、アプリ検証部５７８は、音楽復号プログラムが有効であるか否かを検証する（ステップＳ７１１）。有効であると判定されると（ステップＳ７１２のＹＥＳ）、暗号・復号部５８６は、暗号化音楽復号プログラム５９１を復号して音楽復号プログラムを生成する（ステップＳ７１３）。
無効であると判断されると（ステップＳ７１２のＮＯ）、アプリ無効化部５７９は、無効フラグ５９３を「１」に設定する（ステップＳ７１６）。
【０４０３】
（４）音楽復号プログラムの検証
以下に、図６４のフローチャートを用いて、アプリ検証部５７８による音楽復号プログラムの検証処理について説明する。これは、図６３のステップＳ７１１の詳細である。本実施の形態では、アプリマトリクス無効化リスト５７３は、４行×４列の行列を構成しており、アプリ固有鍵マトリクス５９２は、４個の鍵情報を含んで構成されているが、ここでは、より一般的に、アプリマトリクス無効化リスト５７３がｎ行ｐ列のマトリクスを構成しており、アプリ固有鍵マトリクス５９２がｐ個の鍵情報から構成される場合について説明する。
【０４０４】
アプリ検証部５７８は、アプリ固有鍵マトリクス５７３を読み出す（ステップＳ７３１）。説明の便宜上、行番号を示す変数ｉと列番号を示す変数ｊとを導入して説明する。
アプリ検証部５７８は、変数ｊに１を代入する（ステップＳ７３２）。アプリ固有鍵マトリクス５９２の、列番号ｊと対応する行番号を、変数ｉに代入する（ステップＳ７３３）。
【０４０５】
次に、アプリマトリクス無効化リスト５７３から、行列要素Ｍｉｊを読み出す（ステップＳ７３６）。アプリ固有鍵マトリクス５９２から発行鍵Ｋｅｙ＿ｉｊを抽出し、抽出した発行鍵Ｋｅｙ＿ｉｊを用いて、読み出した行列要素Ｍｉｊに復号アルゴリズムＤ２を施して、復号する（ステップＳ７３７）。復号結果が「００００」でなければ（ステップＳ７３９のＮＯ）、音楽復号プログラムが有効であると判定し（ステップＳ７４１）、復号結果つまり暗号化音楽復号プログラム５９１の復号鍵を、暗号・復号部５８６へ出力する（ステップＳ７４２）。
【０４０６】
処理結果が「００００」であれば（ステップＳ７３９のＹＥＳ）、次に、変数ｊ＝ｐであるか否かを判断し、ｊ＝ｐでなければ（ステップＳ７４４のＮＯ）、変数ｊに１加算し（ステップＳ７４７）、ステップＳ７３３へ戻る。
変数ｊ＝ｐであれば（ステップＳ７４４のＹＥＳ）、音楽復号プログラムが無効であると判定する（ステップＳ７４６）。
【０４０７】
なお、ステップＳ７０３のＯＳ検証部５８１によるセキュアＯＳの検証は、図６１のフローチャートのアプリ固有鍵マトリクスをＯＳ固有鍵マトリクスに置き換え、アプリマトリクス無効化リストをＯＳマトリクス無効化リストに置き換えたものであるので、説明を省略する。
３．３まとめ・効果
以上、説明してきたように、実施の形態３において、携帯電話のセキュアメモリ６１３上の暗号化音楽復号プログラム５９１及び暗号化セキュアＯＳ５９６は、それぞれに固有のアプリ固有鍵マトリクス５９２、ＯＳ固有鍵マトリクス５９７を含んでいる。
【０４０８】
メモリ保護部５７１は、アプリマトリクス無効化リスト５７３及びアプリ固有鍵マトリクス５９２により音楽復号プログラムが有効であるか否かを判定する。有効である場合にのみ、アプリマトリクス無効化リスト５７３から、復号鍵を生成することが可能である。
セキュアＯＳについても、同様に、ＯＳマトリクス無効化リスト５７４及びＯＳ固有鍵マトリクスを用いて、有効か否かを判定する。
【０４０９】
アプリケーションの製造メーカーにおいて、複数のアプリケーションを同一の暗号鍵を用いて同一の方法で暗号化して出荷している場合について考える。
図５８のアプリ発行鍵マトリクス６０１を構成する１６個の鍵のうち、各アプリケーションには、各列から１個ずつ、合計４個の発行鍵が割り当てられる。このとき、異なるアプリケーションに割り当てられる発行鍵が４個とも一致することがないように割り当てられる。一例として、本実施の形態の音楽復号プログラムには、発行鍵Ｋｅｙ＿１１、Ｋｅｙ＿３２、Ｋｅｙ＿２３、Ｋｅｙ＿１４が割り当てられており、これらの発行鍵は、暗号化音楽復号プログラム５９１のアプリ固有鍵マトリクス５９２に含まれる。
【０４１０】
音楽復号プログラムと同一の製造メーカーから出荷されるアプリケーション（アプリＢと呼ぶ）には、発行鍵Ｋｅｙ＿２１、Ｋｅｙ＿３２、Ｋｅｙ＿３３、Ｋｅｙ＿４４が割り当てられており、暗号化アプリＢのアプリ発行鍵マトリクスには、これらの４個の発行鍵が含まれる。
ここで、出荷後にアプリＢが無効化すべきプログラムであることが判明すると、無効化リスト発行装置には、アプリ無効化情報６０４が追加される。アプリ無効化情報６０４は、アプリＢに割り当てられた４個の発行鍵と対応する列番号と行番号から構成されている。アプリ無効化情報６０４に基づいて生成されたアプリマトリクス無効化リスト６１１は、図６０に示すように、行列要素Ｍ２１、Ｍ３２、Ｍ３３及びＭ４４にダミーデータを含んでいるため、暗号化アプリＢに割り当てられた４個の発行鍵では、復号鍵を生成することができない。
【０４１１】
図５８に示すように、音楽復号プログラムにもＫｅｙ＿３２が割り当てられているが、図６４のフローチャートを用いて説明した検証動作によると、その他の発行鍵によって、復号鍵を生成することができる。
このように、各アプリケーションに複数の発行鍵を割り当てておき、アプリ無効化リストと発行鍵とを用いて、復号鍵を生成する構成であれば、同一の方法で暗号化されていても、無効化すべきアプリケーションだけを無効化することができる。
【０４１２】
さらに、暗号・復号部５８６は、セキュアメモリ６１３とバスとを切断する際にセキュアＯＳ及び音楽復号プログラムを初めとするアプリケーションを再度暗号化する。従って、通常メモリ上のプログラムがＣＰＵを使用している間、セキュアメモリ６１３上のプログラムをより確実に保護することができる。また、このような構成の場合メモリ保護部は、物理的にバスとセキュアメモリ６１３とを切断しなくてもよい。
【０４１３】
３．４変形例
（１）実施の形態３において、メモリ保護部５７１は、切替制御部１０６から、接続指示を受ける度に、通信制御部を介して、最新のＯＳマトリクス無効化リスト及びアプリマトリクス無効化リストを取得して、これらを更新し、セキュアメモリ６１３上の各プログラムを検証している。しかし、ＯＳマトリクス無効化リスト及びアプリマトリクス無効化リストの更新、セキュアメモリ６１３上の各プログラムの検証を行うタイミングは、これに限るものではない。
【０４１４】
一例として、携帯電話の起動時でもよいし、１日に１回というように、定期的に行っても良い。また、起動時には、ＯＳマトリクス無効化リスト及びアプリマトリクス無効化リストの更新を行い、起動時以降に接続指示を受け取った際に、プログラムの検証を行うとしても良い。
また、各プログラムを起動する際、例えば、通常ＯＳからセキュアＯＳへの切替処理の際には、セキュアＯＳの検証を行い、セキュアＯＳが音楽復号プログラムを起動する際に音楽復号プログラムの検証を行うとしてもよい。
【０４１５】
また、メモリ保護部５７１から無効化リスト発行装置へリスト要求を送信し、最新のＯＳマトリクス無効化リスト及びアプリマトリクス無効化リストを取得しているが、新たに無効化すべきプログラムが判明し、ＯＳマトリクス無効化リスト及びアプリマトリクス無効化リストを作成しなおした際に、無効化リスト発行装置から携帯電話へ送信されるとしてもよい。
【０４１６】
（２）携帯電話は、インターネットを介して、最新のＯＳマトリクス無効化リスト及びアプリマトリクス無効化リストを取得しているが、メモリカードなどの記録媒体から取得しても良い。
（３）これまで、本発明の１つの実施の形態として携帯電話について説明してきたが、以下に説明するようなＬＡＮを構成する通信機器であるとしてもよい。
【０４１７】
ＬＡＮを構成する機器のうちいずれかひとつが、最新の無効化リストを取得し、他の機器に配布するとしても良い。
一例として、図６５に示すような、ホームネットワークを形成する機器である。ホームネットワークは、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）６５０、ノートＰＣ６５１、ＤＶＤプレーヤー６５２、ホームサーバ６５３、電子レンジ６５４をバスによって接続して構成される。
【０４１８】
各機器は、通常のオペレーティングシステムやアプリケーションからは、直接アクセスすることができないセキュアメモリを備えており、セキュアメモリ上にロードして実行する各種のアプリケーションやオペレーティングシステムの有効性を検証する機能を有する。
ホームサーバ６５３は、インターネット２０と接続されており、定期的に無効化リスト発行装置２５０へ、アプリ無効化リスト及びＯＳ無効化リストを要求する。インターネットを介して、無効化リスト発行装置２５０から最新のアプリ無効化リスト及びＯＳ無効化リストを取得する。取得した無効化リストを、バスを介して、ホームネットワークを構成する各機器へ出力する。
４．実施の形態４
本発明の実施の形態４について、以下に説明する。
【０４１９】
４．１携帯電話の構成
本実施の形態の携帯電話は、実施の形態１の携帯電話１００と同様に、デバッガＩＦ、ＣＰＵ１０２、ＭＭＵ、二次記憶部、切替制御部、割込コントローラ、入力部、表示部、通常メモリ、共有メモリ、セキュアメモリ７１３、メモリ保護部７０１、入出力部、暗号処理デバイス、無線通信制御部、マイク、スピーカ、通信部、アンテナ、バッファ、符号処理部、Ｄ／Ａ変換部から構成され、各回路はバスに接続されている。
【０４２０】
本実施の形態の携帯電話において、メモリ保護部７０１及びセキュアメモリ７１３以外の各部の構成及び動作は、実施の形態１と同様であるので、説明を省略し、ここでは、本実施の形態の特徴部分についてのみ説明する。
（１）セキュアメモリ７１３
セキュアメモリ７１３は、図６６に示すように、音楽復号プログラム７０４、通信鍵生成プログラム７０６などのセキュアアプリケーション及びセキュアＯＳ７０７を記憶している。
【０４２１】
音楽復号プログラム７０４は、実施の形態１の音楽復号プログラム１７６と同様の音楽復号の処理手順を含むセキュアアプリケーションである。
通信鍵生成プログラム７０６は、携帯電話がインターネットを介してコンテンツの送受信を行う際の暗号鍵を生成するセキュアアプリケーションである。
セキュアＯＳ７０７は、実施の形態１のセキュアＯＳ１７１と同様のオペレーティングシステムである。
【０４２２】
ここで、セキュアメモリ７１３上の各プログラムは、セキュアメモリ上に起動されると、自身のアクセス情報をアクセス管理部７０２へ出力する。アクセス情報とは、各プログラムがアクセス可能なメモリ領域のアドレスである。
（２）メモリ保護部７０１
メモリ保護部７０１は、図６６に示すようにアクセス管理部７０２と信号監視部７０３とを含んで構成される。
【０４２３】
アクセス管理部７０２は、セキュアメモリ７１３上の各プログラムからアクセス情報を受け取り、受け取ったアクセス情報を該当するプログラムと対応付けて記憶している。また、各プログラムごとに不正アクセスの回数を計数するカウンタを備えている。
信号監視部７０３は、予め、各プログラムの不正アクセスの許される回数（許容回数）を記憶している。信号監視部７０３は、セキュアメモリ７１３とＣＰＵとの間のバス上の信号を監視し、ＣＰＵのアクセス対象となっているセキュアメモリ７１３上のアドレスを検出する。
【０４２４】
次に、アクセス管理部７０２から、現在実行中のプログラムのアクセス情報を読み出し、読み出したアクセス情報と検出したアドレスとを比較する。検出したアドレスが、読み出したアクセス情報の示す記憶領域に含まれていれば、そのまま、監視を続ける。
含まれていなければ、アクセス管理部７０２が該当するプログラムと対応付けて記憶しているカウンタに１加算する。次に、カウンタと記憶している許容回数とを比較する。カウンタが許容回数以下であれば、そのまま監視を続ける。
【０４２５】
カウンタが許容回数を超えていれば、該当するプログラムが不正であると判定する。
ここで、不正であると判定されたプログラムが音楽復号プログラム７０４であった場合、信号監視部７０３は、強制的に、音楽復号プログラム７０４の実行を中止し、セキュアＯＳ７０７にＣＰＵ１０２の実行権を移す。
不正であると判定されたプログラムがその他のセキュアアプリケーションである場合も同様である。
【０４２６】
不正であると判定されたプログラムがセキュアＯＳ７０７である場合、信号監視部７０３は、強制的に、セキュアＯＳ７０７の実行を中止し、ＣＰＵ１０２及びＭＭＵをクリアし、切替制御部へ切替指示を出力する。
４．２まとめ・効果
以上説明してきたように、本発明の携帯電話は、セキュアメモリ７１３にロードされている各プログラムの動作を監視し、不正の動作を繰り返すプログラムの実行を中止する。このようにすることで、万一、セキュアメモリ７１３中のプログラムに欠陥があった場合や、実行途中で不正な改ざんが加えられた場合でも、これらのプログラムの実行を停止することができる。
【０４２７】
４．３実施の形態４の変形例
（１）上記の実施の形態では、メモリ保護部７０１は、信号監視部７０３により、バス上の信号を監視することで不正な動作を検出しているが、これに代わって、定期的にＣＰＵのプログラムカウンタ値を監視するとしても良い。
（２）上記の実施の形態では、セキュアメモリ７１３上の各プログラムが、起動時に、各プログラムごとに異なるアクセス情報をアクセス管理部７０２出力し、信号監視部７０３は、これらのアクセス情報を基に、各プログラムの動作を監視しているが、予め、アクセス管理部７０２が、セキュアメモリ７１３上のアクセス禁止領域を示す情報を記憶しているとしてもよい。この場合、いずれのプログラムが実行中であっても、禁止領域にアクセスしようとすると、信号監視部は、ＣＰＵ１０２によるプログラム実行を中止し、ＣＰＵ１０２及びＭＭＵをクリアし、切替制御部へ切替指示を出力する。
【０４２８】
（２）本実施の形態において、メモリ保護部７０１は、実施の形態２において説明したように、無効化リスト記憶部、アプリ検証部、アプリ無効化部、ＯＳ検証部、ＯＳ無効化部を備えており、切替制御部から接続指示を受けると、セキュアメモリ上の各プログラムが有効であるか否かを判定するとしてもよい。
この構成において、信号監視部７０３は、動作途中に不正な動作を行うプログラムを発見し、そのプログラムの動作を停止させると共に、無効化リスト記憶部の記憶しているＯＳ無効化リスト又はアプリ無効化リストに、不正動作を行ったプログラムと対応するセキュアＯＳＩＤ又はアプリＩＤを追加する。
【０４２９】
このようにすることで、新たに発見された無効なプログラムを、再度、実行することがなくなる。
５．実施の形態
本発明の実施の形態５について以下に説明する。
実施の形態５の携帯電話７５０は、２枚のメモリカードを装着する。メモリカードのうち一方には、ＯＳ（オペレーティングシステム）及び、各種のアプリケーションが記憶されており、携帯電話７５０は、これらのプログラムを読み出して実行する。説明の便宜上このメモリカードを通常メモリカード８００と呼ぶ。
【０４３０】
もう一方のメモリカードには、保護されるべき処理を行うプログラムが暗号化されて記憶されている。各プログラムは、プログラム部分とデータ部分とから構成される。説明の便宜上、このメモリカードをセキュアメモリカード８２０と呼ぶ。
携帯電話７５０は、セキュアメモリカード８２０上の各プログラムが、他のプログラムのプログラム部分を読み出すことは許可するが、他のプログラムのデータ部分を読み出すことを禁止する。
【０４３１】
５．１  セキュアメモリカード８２０
セキュアメモリカード８２０は、図６７に示すように、入出力部８２１及び情報記憶部８３０から構成される。
セキュアメモリカード８２０は、具体的にはマイクロプロセッサ、ＲＡＭ及びＲＯＭを含んで構成されるコンピュータシステムであり、前記ＲＡＭ、ＲＯＭにはコンピュータプログラムが記憶されている。前記マイクロプロセッサが前記コンピュータプログラムに従って動作することにより、セキュアメモリカード８２０は、その機能の一部を達成する。
【０４３２】
入出力部８２１は、外部機器との間で情報の入出力を行う。
情報記憶部８３０は、セキュアＩＤ８５０、暗号化音楽復号プログラム８３１、暗号化鍵生成プログラム８４１などを記憶している。
セキュアＩＤ８５０は、セキュアメモリカード８２０に固有の情報であり、セキュアメモリカード８２０がセキュアな処理を行うプログラムを格納していることを示している。
【０４３３】
暗号化音楽復号プログラム８３１は、ＩＤ８３２「Ａ」、暗号化復号プログラム８３４及び暗号化復号データ８３６を含む。ＩＤ８３２「Ａ」は、暗号化音楽復号プログラム８３１に固有の識別情報である。
暗号化復号プログラム８３４は、音楽データを復号する手順を含む復号プログラムを暗号化して生成されたものであり、暗号化復号データ８３６は、復号プログラムが復号の処理に使用するパラメータなどのデータを暗号化したものである。
【０４３４】
暗号化鍵生成プログラム８４１は、ＩＤ８４２「Ｂ」、暗号化生成プログラム８４４、暗号化鍵データ８４６を含んで構成される。
ＩＤ８４２「Ｂ」は、暗号化鍵生成プログラム８４１に固有の識別情報である。暗号化生成プログラム８４４は、暗号鍵を生成する手順を含む生成プログラムを暗号化したものであり、暗号化鍵データ８４６は、前記生成プログラムの使用するパラメータなどのデータを暗号化したものである。
【０４３５】
５．２  通常メモリカード８００
通常メモリカード８００は、図６８に示すように、入出力部８０１と情報記憶部８０２とを含んで構成される。
入出力部８０１は、情報記憶部８０２と外部機器との間で、各種のデータの入出力を行う。
【０４３６】
情報記憶部８０２は、音楽再生プログラム８０８を初めとする各種のアプリケーション及びＯＳ８０６を記憶している。情報記憶部８０２に記憶されているプログラムは、それぞれのプログラムが実行する処理の手順を含むコード部とデータ部とから構成される。また、それぞれのプログラムに固有のプログラムＩＤを有している。一例として、ＯＳ８０６は、プログラムＩＤ「ＯＳ」を有しており、音楽再生プログラム８０８は、プログラムＩＤ「Ｅ」を有している。
【０４３７】
５．３  携帯電話７５０
携帯電話７５０は、図６８に示すように、デバッガＩＦ７５１、ＣＰＵ７５２、ＭＭＵ７５３、割込コントローラ７５７、入力部７５８、表示部７５９、メモリ７６１、メモリ保護部７６４、入出力部７６５、入出力部７６６、無線通信制御部７６８、通信部７７１、アンテナ７７２、マイク７６９、スピーカ７７０、バッファ７７３、符号処理部７７４、Ｄ／Ａ変換部７７６をバス７６０によって接続して構成される。
【０４３８】
デバッガＩＦ７５１、ＭＭＵ７５３、割込コントローラ７５７、入力部７５８、表示部７５９、無線通信制御部７６８、通信部７７１、アンテナ７７２、マイク７６９、スピーカ７７０、バッファ７７３、符号処理部７７４Ｄ／Ａ変換部７７６の動作及び構成は実施の形態１と同様であるのでここでは説明を省略する。また、メモリ７６１は、各種のデータ及びプログラムを記憶しており、ＣＰＵ７５２は、メモリ７６１、通常メモリカード８００及びセキュアメモリカード８２０に記憶されているプログラムに含まれる命令を１個ずつフェッチし、フェッチした命令を解読し実行する。
【０４３９】
以下に、本実施の形態の特徴部分であるメモリ保護部７６４、入出力部７６５、入出力部７６６について説明する。
（１）入出力部７６５及び入出力部７６６
入出力部７６５及び入出力部７６６は、２枚のメモリカードのいずれかと接続され、メモリカードとメモリ保護部７６４との間で、情報の入出力を行う。
【０４４０】
（２）メモリ保護部７６４
メモリ保護部７６４は、図６９に示すように、復号部７８１、復号鍵記憶部７８２、アクセス制御部７８３、鍵記憶部７８４、メモリ情報記憶部７８５及びＩＤ検出部７８６から構成される。
（２−１）鍵記憶部７８４
鍵記憶部７８４は、暗号化音楽復号プログラム８３１の復号鍵及び暗号化鍵生成プログラム８４１の復号鍵をそれぞれのプログラムのＩＤと対応付けて記憶している。
【０４４１】
（２−２）復号部７８１及び復号鍵記憶部７８２
復号部７８１は、アクセス制御部７８３のから、復号指示及び暗号文を受け取る。復号指示を受け取ると、復号鍵記憶部７８２から復号鍵を読み出し、読み出した復号鍵を用いて、暗号化データを復号し、平文を生成する。生成した平文をＣＰＵ７５２へ出力する。
ここで復号部７８１が復号する暗号化データは、セキュアメモリカード８２０に記憶されている暗号化音楽復号プログラム８３１、暗号化鍵生成プログラム８４１を構成する暗号化データである。  
【０４４２】
復号鍵記憶部７８２は、復号部７８１の使用する復号鍵を１個だけ格納している。
（２−３）メモリ情報記憶部７８５
メモリ情報記憶部７８５は、図７０に示すように、セキュアメモリ情報テーブル８１１及び通常メモリ情報テーブル８６１を記憶している。
セキュアメモリ情報テーブル８１１は、複数のセキュアメモリ情報８１２、８１３・・・から構成される。各セキュアメモリ情報は、プログラムＩＤ、コードアドレス及びデータアドレスを含む。
【０４４３】
プログラムＩＤは、セキュアメモリカード８２０に記憶されている各プログラムのＩＤである。コードアドレスは、セキュアメモリカード８２０内に記憶されている暗号化アプリケーションのプログラム部分の格納されている領域を示すアドレスである。データアドレスは、暗号化アプリケーションのデータ部分が格納されている領域を示すアドレスである。
【０４４４】
具体的には、セキュアメモリ情報８１２は、プログラムＩＤとして、暗号化音楽復号プログラム８３１のＩＤ「Ａ」８３２と、コードアドレスとして、暗号化復号プログラム８３４の記憶されているアドレス「Ａ０００〜Ａ１１１」と、データアドレスとして、暗号化復号データ８３６の記憶されているアドレス「Ａ２２２〜Ａ３３３」を含んでいる。
セキュアメモリ情報８１３は、プログラムＩＤとして、暗号化鍵生成プログラム８４１のＩＤ「Ｂ」８４２と、コードアドレスとして、暗号化生成プログラム８４４の記憶されているアドレス「Ａ４４４〜Ａ５５５」と、データアドレスとして、暗号化鍵データ８４６の記憶されているアドレス「Ａ６６６〜Ａ７７７」を含んでいる。
【０４４５】
通常メモリ情報テーブル８６１は、複数の通常メモリ情報８６２、８６３・・・を含んで構成され、各通常メモリ情報は、プログラムＩＤ、コードアドレス及びデータアドレスを含む。
プログラムＩＤは、通常メモリカード８００上に記憶されているプログラムのＩＤであり、コードアドレスは、プログラムＩＤと対応するプログラムのプログラム部分が記憶されている領域を示すアドレスであり、データアドレスは、データ部分が記憶されている領域のアドレスである。
【０４４６】
具体的に、通常メモリ情報８６２は、通常メモリカード８００上に記憶されているＯＳ８０６と対応しており、通常メモリ情報８６３は、音楽再生プログラム８０８と対応している。
（２−４）ＩＤ検出部７８６
ＩＤ検出部７８６は、ＣＰＵ７５２のプログラムカウンタ（以下ＰＣ）を常時監視しており、ＣＰＵ７５２が、セキュアメモリカード８２０上のプログラムを実行している間は、ＣＰＵ７５２が実行中のプログラムを示すプログラムＩＤを記憶している。
【０４４７】
以下に、図７１のフローチャートを用いて、ＩＤ検出部７８６の動作について説明する。なお、説明の便宜上ステップＳ８０１から説明を開始する。このとき、ＣＰＵ７５２は、通常メモリカード８００又はメモリ７６１上に記憶されているプログラムを実行している。
ＩＤ検出部７８６は、ＰＣを監視し（ステップＳ８０１）、メモリ情報記憶部７８５の記憶しているセキュアメモリ情報テーブル８１１及び通常メモリ情報テーブル８６１に含まれる、各プログラムのコードアドレスと、ＰＣの示すアドレスとを比較することにより、ＰＣの示すアドレスがセキュアメモリカード８２０上のアドレスであるか否かを判断する（ステップＳ８０２）。
【０４４８】
セキュアメモリカード８２０上のアドレスでなければ（ステップＳ８０２のＮＯ）、ＰＣの監視を継続する。
セキュアメモリカード８２０上のアドレスであると判断すると（ステップＳ８０２のＹＥＳ）、次に、ＰＣから検出したアドレスと対応するセキュアメモリ情報をセキュアメモリ情報テーブル８１１から選択し、選択したセキュアメモリ情報に含まれるプログラムＩＤを抽出する（ステップＳ８０３）。抽出したプログラムＩＤを記憶する（ステップＳ８０４）。次に、アクセス制御部７８３へ、セキュアメモリカード８２０上のプログラムの実行が開始されることを示すセキュアアクセス通知を出力する（ステップＳ８０５）。
【０４４９】
次に、ＰＣを監視し（ステップＳ８０６）、ＰＣに格納されているアドレスがセキュアメモリカード８２０上のアドレスであるか否かを判断する（ステップＳ８０７）。
セキュアメモリカード８２０上のアドレスであると判断すると（ステップＳ８０７のＹＥＳ）、ＰＣから検出したアドレスと対応するセキュアメモリ情報をセキュアメモリ情報テーブル８１１から選択し、選択したセキュアメモリ情報に含まれるプログラムＩＤを抽出する（ステップＳ８０９）。抽出したプログラムＩＤとＩＤ検出部７８６自身の記憶しているプログラムＩＤとを比較する。両者が一致していれば（ステップＳ８１１のＹＥＳ）、ステップＳ８０６へ戻って、ＰＣの監視を続ける。
【０４５０】
両者が一致していない場合（ステップＳ８１１のＮＯ）、記憶しているプログラムＩＤを抽出したプログラムＩＤに書き換え（ステップＳ８１２）、ステップＳ８０６へ戻る。
ステップＳ８０７において、セキュアメモリカード８２０上のアドレスでないと判断すると（ステップＳ８０７のＮＯ）、ＩＤ検出部７８６自身の記憶しているプログラムＩＤを消去し（ステップＳ８１４）、ステップＳ８０１へ戻る。
【０４５１】
（２−５）アクセス制御部７８３
アクセス制御部７８３は、予め、セキュアメモリカード８２０に書き込まれているセキュアＩＤを記憶している。
入出力部７６５及び入出力部７６６を介して、メモリカードが装着されたことを検出する。メモリカードの装着を検出すると、メモリカードに書き込まれているデータを検索する。記憶しているセキュアＩＤと同一のセキュアＩＤ８５０を検出した場合、そのメモリカードがセキュアメモリカード８２０であることを検知する。ここでは、入出力部２６５が、通常メモリカード８００と接続されており、セキュアメモリカード８２０がセキュアメモリカード８２０と接続されている場合を想定する。
【０４５２】
アクセス制御部７８３は、入出力部７６５を介して通常メモリカード８００の装着を検出すると、入出力部７６５を介して、通常メモリカード８００に記憶されている情報をサーチし、通常メモリ情報テーブルを生成し、生成した通常メモリ情報テーブルをメモリ情報記憶部７８５へ格納する。
また、入出力部７６６を介して、セキュアメモリカード８２０の装着を検出すると、入出力部７６６を介して、セキュアメモリカード８２０に記憶されている情報をサーチし、セキュアメモリ情報テーブルを生成し、生成したセキュアメモリ情報テーブルをメモリ情報記憶部７８５に書き込む。
【０４５３】
アクセス制御部７８３は、ＣＰＵ７５２が通常メモリカード８００へアクセスする際に、ＣＰＵ７５２から出力される信号（以下アクセス信号と呼ぶ）を、そのまま通常メモリカード８００へ仲介し、また、通常メモリカード８００から、出力されるデータを受け取り、受け取ったデータをＣＰＵ７５２へ出力する。
ＣＰＵ７５２がセキュアメモリカード８２０へアクセスする際には、アクセス信号からアクセス先のアドレスを抽出し、抽出したアドレスによって、セキュアメモリカード８２０データの読み出し又読み出しの禁止を行う。このような、アクセス制御部７８３の動作について、図７１、７２に示すフローチャートを用いて、詳細に説明する。なお、説明の便宜上、ステップＳ８２１から説明を始める。このとき、ＣＰＵ７５２は、通常メモリカード８００又はメモリ７６１上のプログラムを実行している。
【０４５４】
アクセス制御部７８３は、ＣＰＵ７５２と通常メモリカード８００との間で、データの入出力を仲介する（ステップＳ８２１）。
ＩＤ検出部７８６から、セキュアメモリカード８２０上のプログラムの実行が開始されることを示すセキュアアクセス通知を受け取る（ステップＳ８０５）。
セキュアアクセス通知を受け取ると、アクセス制御部７８３は、デバッガＩＦ７５１を無効化し（ステップＳ８２３）、ＩＤ検出部７８６に記憶されているプログラムＩＤを読み出す（ステップＳ８２４）。読み出したプログラムＩＤと対応する復号鍵を鍵記憶部７８４から読み出し（ステップＳ８２６）、読み出した復号鍵を復号鍵記憶部７８２へ書き込む（ステップＳ８２７）。
【０４５５】
次に、ＣＰＵ７５２から出力されるアクセス信号を受け取り、受け取ったアクセス信号から、アクセス先のアドレスを検出する（ステップＳ８２９）。
アクセス先のアドレスを検出すると、ＩＤ検出部７８６からプログラムＩＤを読み出す（ステップＳ８３１）。プログラムＩＤを読み出すと（ステップＳ８３２のＹＥＳ）、コードアドレス又はデータアドレスに検出したアクセス先アドレスを含むセキュアメモリ情報を、セキュアメモリ情報テーブル８１１から選択し、選択したセキュアメモリ情報からプログラムＩＤを抽出する（ステップＳ８３４）。
【０４５６】
抽出したプログラムＩＤとＩＤ検出部７８６から読み出したプログラムＩＤとを比較し、両者が一致していれば（ステップＳ８３６のＹＥＳ）、ステップＳ８４４へ処理を移す。
両者が一致していない場合（ステップＳ８３６のＮＯ）、アクセス制御部７８３は、さらに、検出したアドレスが、選択したセキュアメモリ情報のコードアドレスに含まれているのか、データアドレスに含まれているのかを判定する（ステップＳ８３８）。データアドレスに含まれていると判定した場合（ステップＳ８３８のＮＯ）、アクセスが許可できないことを示すエラー通知をＣＰＵ７５２へ出力し、ステップＳ８２９へ戻る。
【０４５７】
コードアドレスに含まれると判定した場合（ステップＳ８３８のＹＥＳ）、抽出したプログラムＩＤと対応する復号鍵を、鍵記憶部７８４から読み出し、復号鍵記憶部７８２の記憶している復号鍵を、読み出した復号鍵に変更する（ステップＳ８４２）。
次に、入出力部７６６を介して検出したアドレスに該当する記憶領域に記憶されている情報を読み出す（ステップＳ８４４）。読み出した情報の復号を復号部７８１へ指示し（ステップＳ８４６）、ステップＳ８２９へ戻る。
【０４５８】
ステップＳ８３２において、ＩＤ検出部７８６に記憶されているプログラムＩＤが存在しない場合（ステップＳ８３２のＮＯ）、アクセス制御部７８３は、復号鍵記憶部７８２に記憶されている復号鍵を消去し（ステップＳ８５１）、デバッガＩＦ７５１を有効にし（ステップＳ８５２）ステップＳ８２１へ戻る。
５．４  まとめ・効果
以上、説明してきたように、本発明の携帯電話は、通常メモリカード及びセキュアメモリカードに記憶されているプログラムを実行する。セキュアメモリカードに記憶されているプログラは予め暗号化されている。
【０４５９】
メモリ保護部７６４は、ＣＰＵ７５２がセキュアメモリカード８２０に記憶されているプログラムを実行する際に、実行中のプログラムによって、アクセスを許可する領域と、禁止する領域とを管理している。
音楽復号プログラムが実行される場合を例に説明すると、ＣＰＵ７５２は、暗号化音楽復号プログラム８３１に含まれる暗号化音楽復号プログラム８３１の記憶されている領域と、暗号化鍵生成プログラムの暗号化生成プログラム８４４の記憶されている領域にアクセスすることはできるが、暗号化鍵生成プログラムの暗号化鍵データ８４６の記憶されている領域にはアクセスできない。
【０４６０】
このようにして、セキュアメモリカード８２０上の各アプリケーションは、他のアプリケーションから、自身のデータ部にアクセスされ、不正にデータを読み出し、変更されることを回避できる。
また、セキュアメモリカード８２０に記憶されている情報は、暗号化されているため、セキュアメモリカード８２０上のプログラム以外のプログラムをＣＰＵ７５２が実行している途中に、セキュアメモリカード８２０にアクセスした場合でも、解読することができない。従って、セキュアメモリカード８２０上のデータを不正なアクセスから保護することができる。
５．５  実施の形態５に関する変形例
上記の実施の形態では、セキュアメモリカード８２０上のセキュアアプリケーションの実行中にＣＰＵ７５２が、他のアプリケーションのデータ部分にアクセスしようとした場合、アクセス制御部７８３は、ＣＰＵ７５２にエラー通知を出力しているが、実施の形態４の場合と同様に、他のプログラム、例えばＯＳ８０６にＣＰＵ７５２の実行権を移すとしても良い。この場合、アクセス制御部７８３は、復号鍵記憶部７８２に記憶されている復号鍵を消去し、ＯＳ８０６の記憶されているアドレスをＣＰＵ７８２のプログラムカウンタに設定する。
６．  その他の変形例
以上、実施の形態１〜５によって、本発明について説明してきたが、本発明は、これらの実施の形態に限定されるものではなく、以下のような場合も含む。
【０４６１】
（１）本発明は、上記の実施の形態１〜３及び変形例を実行する方法であってもよい。
（２）また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０４６２】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０４６３】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（３）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０４６４】
本発明を構成する各装置及び記録媒体は、保護される必要のある情報を取り扱う産業、例えば、映像及び音声を含むコンテンツの作成、配給に係る産業、及び、これらの情報を取り扱う電器機器を製造し、販売する産業において、経営的に、また継続的及び反復的に使用することができる。また、本発明を構成する各装置及び記録媒体は、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
【図面の簡単な説明】
【０４６５】
【図１】図１は、実施の形態１の携帯電話１００の使用例を示す。
【図２】図２は、携帯電話１００及びメモリカード３００の構成を示すブロック図である。
【図３】図３は、二次記憶部１０４に記憶されている情報の一例を示す。
【図４】図４は、通常メモリ１１１に記憶されている情報の一例を示す。
【図５】図５は、アプリ管理表１６６の詳細を示す。
【図６】図６は、セキュアメモリ１１３に記憶されている情報の一例を示す。
【図７】図７は、セキュアアプリ管理表１８６の詳細を示す。
【図８】図８は、通常メモリ１１１及びセキュアメモリ１１３に記憶されているプログラムの関連を示したブロック図である。
【図９】通常ＯＳ１５１及びセキュアメモリ１１３の取り扱うコマンドのデータ構成を示す。
【図１０】通常ＯＳ１５１の動作を示すフローチャートである。
【図１１】セキュアＯＳ１７１の動作を示すフローチャートである。
【図１２】音楽復号デーモン１５６の動作を示すフローチャートである。
【図１３】通常ＯＳ１５１からセキュアＯＳ１７１への切替処理を示したフローチャートである。
【図１４】セキュアＯＳ１７１から通常ＯＳ１５１への切替処理を示したフローチャートである。
【図１５】携帯電話１００の動作を示したフローチャートである。
【図１６】音楽復号プログラムの登録処理における各プログラムの動作を示したフローチャートである。
【図１７】音楽復号プログラムの登録処理における各プログラムの動作を示したフローチャートである。図１６から続く。
【図１８】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。
【図１９】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図１８から続く。
【図２０】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図１９から続く。
【図２１】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図２０から続く。
【図２２】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図２１から続く。
【図２３】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図２２から続く。
【図２４】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図２３から続く。
【図２５】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図２４から続く。
【図２６】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図２５から続く。
【図２７】音楽復号プログラム１７６への処理依頼における各プログラムの動作を示したフローチャートである。図２６から続く。
【図２８】通常ＯＳ１５１の実行中における、通常入出力デバイス１３２による割込発生時の処理を示すフローチャートである。図２１ステップＳ２３９の詳細である。
【図２９】セキュアＯＳ１７１実行中における、通常入出力デバイス１３２による割込発生時の処理を示すフローチャートである。
【図３０】通常ＯＳ１５１の実行中における、セキュアデバイス１３３による割込発生時の処理を示すフローチャートである。図２３ステップＳ２８７の詳細である。
【図３１】通常ＯＳ１５１の実行中における、セキュアデバイス１３３による割込発生時の処理を示すフローチャートである。図３０から続く。
【図３２】通常ＯＳ１５１の実行中における、暗号処理デバイス１１７による割込発生時の処理を示すフローチャートである。図２７ステップＳ３３７の詳細である。
【図３３】通常ＯＳ１５１の実行中における、暗号処理デバイス１１７による割込発生時の処理を示すフローチャートである。図３２から続く。
【図３４】通常ＯＳ１５１の実行中における、暗号処理デバイス１１７による割込発生時の処理を示すフローチャートである。図３３から続く。
【図３５】音楽復号プログラム１７６の削除処理を示したフローチャートである。
【図３６】携帯電話１００の動作において、プログラム間のコマンドの受け渡しを示す。
【図３７】携帯電話１００の動作において、プログラム間のコマンドの受け渡しを示す。
【図３８】携帯電話１００の動作において、プログラム間のコマンドの受け渡しを示す。図３７から続く。
【図３９】携帯電話１００の動作において、プログラム間のコマンドの受け渡しを示す。図３８から続く。
【図４０】携帯電話１００の動作において、プログラム間のコマンドの受け渡しを示す。図３９から続く。
【図４１】携帯電話１００の動作において、プログラム間のコマンドの受け渡しを示す。図４０から続く。
【図４２】携帯電話１００の動作において、プログラム間のコマンドの受け渡しを示す。図４１から続く。
【図４３】通常メモリ１１１に記憶されている情報の一例を示す。
【図４４】携帯電話１００の起動時の動作を示すフローチャートである。
【図４５】セキュアメモリ１１３に記憶されている情報の一例を示す。
【図４６】ＭＭＵ制御プログラム１８４により形成される論理メモリ空間の一例を示す。
【図４７】実施の形態１の変形例における、各プログラム間の関連を示すブロック図である。
【図４８】実施の形態１の変形例において、通常ＯＳ１５１及びセキュアＯＳ１７１が有するセキュアデバイスドライバ管理表２３１の構成を示す。
【図４９】実施の形態２の携帯電話４００の使用例を示す。
【図５０】無効化リスト発行装置２５０の構成を示すブロック図である。
【図５１】携帯電話４００に含まれるメモリ保護部４１４及びセキュアメモリ４１３の構成を示すブロック図である。
【図５２】メモリ保護部４１４の動作を示すフローチャートである。
【図５３】メモリ保護部４１４の動作を示すフローチャートである。図５２から続く。
【図５４】実施の形態２の変形例におけるメモリ保護部４５４及びセキュアメモリ４５３の構成を示すブロック図である。
【図５５】セキュアＯＳ証明書の詳細を示す。
【図５６】実施の形態２の変形例において、音楽復号プログラム４７６の備えるアプリ証明書５０１、メーカー証明書５１１、ＣＡ証明書５２１の構成及び関連を示す。
【図５７】ＯＳ無効化リストの構成の一例を示す。
【図５８】実施の形態３における無効化リスト発行装置の情報記憶部６１０に記憶されている情報の一例を示す。
【図５９】アプリ固有鍵マトリクス５９２及びＯＳ固有鍵マトリクス５９７の構成を示す。
【図６０】アプリマトリクス無効化リスト６１１の詳細な構成を示す。
【図６１】アプリマトリクス無効化リストの生成の処理手順を示すフローチャートである。
【図６２】実施の形態３の携帯電話の備えるメモリ保護部５７１及びセキュアメモリ６１３の構成を示すブロック図である。
【図６３】メモリ保護部５７１による検証動作を示すフローチャートである。
【図６４】アプリ検証部５７８による音楽復号プログラム５９２の検証動作を示すフローチャートである。
【図６５】実施の形態３の変形例のホームネットワークの構成を示す構成図である。
【図６６】実施の形態４の携帯電話を構成するメモリ保護部７０１及びセキュアメモリ７１３の構成を示すブロック図である。
【図６７】実施の形態５において、セキュアメモリカード８２０の構成及びセキュアメモリカード８２０に記憶されている情報の一例を示す。
【図６８】実施の形態５の携帯電話７５０及び携帯電話７５０に装着される通常メモリカード８００及びセキュアメモリカード８２０の構成を示すブロック図である。
【図６９】メモリ保護部７６４の構成を示すブロック図である。
【図７０】セキュアメモリテーブル８１１及び通常メモリテーブル８６１の構成を示す。
【図７１】アクセス制御部７８３及びＩＤ検出部７８６の動作を示すフローチャートである。
【図７２】アクセス制御部７８３動作を示すフローチャートである。図７１から続く。
【符号の説明】
【０４６６】
１０    携帯電話網
１５    基地局
２０    インターネット
１００    携帯電話
１０１    デバッガＩＦ
１０２    ＣＰＵ
１０３    ＭＭＵ
１０４    二次記憶部
１０６    切替制御部
１０７    割込コントローラ
１０８    入力部
１０９    表示部
１１１    通常メモリ
１１２    共有メモリ
１１３    セキュアメモリ
１１４    メモリ保護部
１１６    入出力部
１１７    暗号処理デバイス
１１８    無線通信制御部
１１９    マイク
１２０    スピーカ
１２１    通信部
１２２    アンテナ
１２３    バッファ
１２４    符号処理部
１２６    Ｄ／Ａ変換部
１３０    バス
１３１    アクセス部
１３２    通常入出力デバイス
１３３    セキュア入出力デバイス
３００    メモリカード
【図１】
0004629416.tif 000002
【図２】
0004629416.tif 000003
【図３】
0004629416.tif 000004
【図４】
0004629416.tif 000005
【図５】
0004629416.tif 000006
【図６】
0004629416.tif 000007
【図７】
0004629416.tif 000008
【図８】
0004629416.tif 000009
【図９】
0004629416.tif 000010
【図１０】
0004629416.tif 000011
【図１１】
0004629416.tif 000012
【図１２】
0004629416.tif 000013
【図１３】
0004629416.tif 000014
【図１４】
0004629416.tif 000015
【図１５】
0004629416.tif 000016
【図１６】
0004629416.tif 000017
【図１７】
0004629416.tif 000018
【図１８】
0004629416.tif 000019
【図１９】
0004629416.tif 000020
【図２０】
0004629416.tif 000021
【図２１】
0004629416.tif 000022
【図２２】
0004629416.tif 000023
【図２３】
0004629416.tif 000024
【図２４】
0004629416.tif 000025
【図２５】
0004629416.tif 000026
【図２６】
0004629416.tif 000027
【図２７】
0004629416.tif 000028
【図２８】
0004629416.tif 000029
【図２９】
0004629416.tif 000030
【図３０】
0004629416.tif 000031
【図３１】
0004629416.tif 000032
【図３２】
0004629416.tif 000033
【図３３】
0004629416.tif 000034
【図３４】
0004629416.tif 000035
【図３５】
0004629416.tif 000036
【図３６】
0004629416.tif 000037
【図３７】
0004629416.tif 000038
【図３８】
0004629416.tif 000039
【図３９】
0004629416.tif 000040
【図４０】
0004629416.tif 000041
【図４１】
0004629416.tif 000042
【図４２】
0004629416.tif 000043
【図４３】
0004629416.tif 000044
【図４４】
0004629416.tif 000045
【図４５】
0004629416.tif 000046
【図４６】
0004629416.tif 000047
【図４７】
0004629416.tif 000048
【図４８】
0004629416.tif 000049
【図４９】
0004629416.tif 000050
【図５０】
0004629416.tif 000051
【図５１】
0004629416.tif 000052
【図５２】
0004629416.tif 000053
【図５３】
0004629416.tif 000054
【図５４】
0004629416.tif 000055
【図５５】
0004629416.tif 000056
【図５６】
0004629416.tif 000057
【図５７】
0004629416.tif 000058
【図５８】
0004629416.tif 000059
【図５９】
0004629416.tif 000060
【図６０】
0004629416.tif 000061
【図６１】
0004629416.tif 000062
【図６２】
0004629416.tif 000063
【図６３】
0004629416.tif 000064
【図６４】
0004629416.tif 000065
【図６５】
0004629416.tif 000066
【図６６】
0004629416.tif 000067
【図６７】
0004629416.tif 000068
【図６８】
0004629416.tif 000069
【図６９】
0004629416.tif 000070
【図７０】
0004629416.tif 000071
【図７１】
0004629416.tif 000072
【図７２】
0004629416.tif 000073