(57)【特許請求の範囲】
【請求項１】
オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに基づき生成された複数の被保護プログラムを記憶しているプログラム記憶手段と、
解析の対象とされた被保護プログラムを無効化する無効化手段と、
前記複数の被保護プログラムから、無効化されていない１の被保護プログラムを選択する選択手段と、
選択された１の被保護プログラムを実行する実行手段と
を備えることを特徴とするセキュア処理装置。
【請求項２】
前記セキュア処理装置は、
前記実行手段が１の被保護プログラムを実行する際に、前記被保護プログラムが解析の対象とされているか否かを判断する解析検出手段を備え、
前記無効化手段は、
無効化されている被保護プログラムを示す無効化リストを記憶する無効化リスト記憶部と、
前記解析検出手段により、前記被保護プログラムが解析の対象とされていると判断されると、前記無効化リストに、前記被保護プログラムが無効化された旨を登録する無効化登録部とを備える
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項３】
前記無効化リストは、当該無効化リストの正当性を証明するための署名データが付加されており、
前記選択手段は、
前記無効化リストに付加されている前記署名データを検証し、前記署名データの検証の結果、前記無効化リストの不正が検出された場合には、被保護プログラムの選択処理を中止する
ことを特徴とする請求項２に記載のセキュア処理装置。
【請求項４】
前記複数の被保護プログラムは、オリジナルプログラムを難読化した難読化プログラムであって、各被保護プログラムは、難読化の方法及び／又は難読化の程度がそれぞれ異なることにより、異なるコードを有するプログラムである
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項５】
前記複数の被保護プログラムの内、何れか１以上の被保護プログラムは、
前記難読化の方法として、前記オリジナルプログラムに含まれる複数の部分プログラムの内、異なる部分プログラムを暗号化する方法を用い、生成されたプログラムである
ことを特徴とする請求項４に記載のセキュア処理装置。
【請求項６】
部分プログラムを暗号化することにより生成された前記１以上の被保護プログラムは、
暗号化の対象である各部分プログラムが、異なる暗号化アルゴリズム及び／又は異なる暗号鍵を用いて暗号化されたプログラムである
ことを特徴とする請求項５に記載のセキュア処理装置。
【請求項７】
前記複数の被保護プログラムの内、何れか１以上の被保護プログラムは、
前記難読化の方法として、前記オリジナルプログラムに含まれる複数の命令の内、相互に依存関係にない命令である並列命令の実行順序を入れ替える方法を用い、生成されたプログラムである
ことを特徴とする請求項４に記載のセキュア処理装置。
【請求項８】
前記複数の被保護プログラムの内、何れか１以上の被保護プログラムは、
前記難読化の方法として、前記オリジナルプログラムに含まれる命令を、当該命令と異なる処理を行い、且つ当該命令と同一の結果を出力する１以上の命令からなる恒等命令に置き換える方法を用い、生成されたプログラムである
ことを特徴とする請求項４に記載のセキュア処理装置。
【請求項９】
前記複数の被保護プログラムの内、何れか１以上の被保護プログラムは、
前記難読化の方法として、前記オリジナルプログラムの結果に影響を与えない命令であるダミー命令を、前記オリジナルプログラムに挿入する方法を用い、生成されたプログラムである
ことを特徴とする請求項４に記載のセキュア処理装置。
【請求項１０】
前記セキュア処理装置は、
前記実行手段が１の被保護プログラムを実行する際に、前記被保護プログラムが解析の対象とされているか否かを判断する解析検出手段を備える
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項１１】
前記解析検出手段は、
前記実行手段による被保護プログラムの実行中にデバッガを検出すると、検出したデバッガを無効化するデバッガ検出部と、
前記デバッガ検出部によりデバッガが検出されると、前記実行手段に対し、実行中止を指示する指示部とを備え、
前記実行手段は、前記指示部から実行中止の指示を受け付けると、実行中である前記被保護プログラムの実行を中止する
ことを特徴とする請求項１０に記載のセキュア処理装置。
【請求項１２】
前記解析検出手段は、
被保護プログラムの改ざんを検出する改ざん検出部と、
前記改ざん検出部により改ざんが検出されると、前記実行手段に対し、実行中止を指示する指示部とを備え、
前記実行手段は、前記指示部から実行中止の指示を受け付けると、前記被保護プログラムの実行を中止する
ことを特徴とする請求項１０に記載のセキュア処理装置。
【請求項１３】
前記解析検出手段は、
前記被保護プログラムが解析の対象とされていると判断すると、前記解析に係る解析ログ情報を生成するログ情報生成部を備える
ことを特徴とする請求項１０に記載のセキュア処理装置。
【請求項１４】
前記セキュア処理装置は、ネットワークを介して外部サーバと接続されており、
前記ログ情報生成部は、生成した前記解析ログ情報を、前記外部サーバへ送信する
ことを特徴とする請求項１３に記載のセキュア処理装置。
【請求項１５】
前記解析検出手段は、更に、
所定の数値に設定された閾値を記憶している閾値記憶部と、
被保護プログラムが解析の対象とされていると判断した回数を保持し、前記判断の都度、保持している回数を更新する解析回数計数部とを備え、
前記無効化手段は、
前記解析回数計数部が保持している回数が前記閾値を超える場合に、前記被保護プログラムを無効化する
ことを特徴とする請求項１０に記載のセキュア処理装置。
【請求項１６】
前記選択手段は、
無効化されていない１の被保護プログラムをランダムに選択する
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項１７】
前記選択手段は、
選択した被保護プログラムを識別するための情報を記憶しており、
前記情報を参照し、未選択であり、且つ無効化されていない１の被保護プログラムをランダムに選択する
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項１８】
前記選択手段は、
予め所定の選択順序を記憶しており、
無効化されていない１の被保護プログラムを、前記選択順序に応じて選択する
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項１９】
前記選択手段は、
前記複数の被保護プログラムについて、各被保護プログラムの難読化の程度を示す難読化度情報を記憶しており、
前記難読化度情報を参照し、難読化の程度の高い被保護プログラムから順に実行されるように、無効化されていない１の被保護プログラムを選択する
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項２０】
前記選択手段は、
前記複数の被保護プログラムについて、各被保護プログラムの難読化の程度を示す難読化度情報を記憶しており、
前記難読化度情報を参照し、難読化の程度の低い被保護プログラムから順に実行されるように、無効化されていない１の被保護プログラムを選択する
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項２１】
前記選択手段は、
実行速度の速い被保護プログラムから順に実行されるように、無効化されていない１の被保護プログラムを選択する
ことを特徴とする請求項１に記載のセキュア処理装置。
【請求項２２】
前記セキュア処理装置は、ネットワークを介して、被保護プログラムを保持しているプログラム更新サーバと接続されており、
前記選択手段は、
無効化されていない被保護プログラムの残数が、所定の閾値以下であるか否かを判断する判断部と、
前記判断部により、所定の閾値以下であると判断された場合に、前記プログラム更新サーバに対し、新たな被保護プログラムの送信を要求するプログラム要求部と、
前記プログラム更新サーバから、新たな被保護プログラムを受信するプログラム受信部と
を備えることを特徴とする請求項１に記載のセキュア処理装置。
【請求項２３】
オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに基づき生成された複数の被保護プログラムを記憶しているプログラム記憶手段と、
解析の対象とされた被保護プログラムを無効化する無効化手段と、
前記複数の被保護プログラムから、無効化されていない１の被保護プログラムを選択する選択手段と、
選択された１の被保護プログラムを実行する実行手段と
を備えることを特徴とする集積回路。
【請求項２４】
セキュア処理装置で用いられるセキュア処理方法であって、
前記セキュア処理装置は、
オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに基づき生成された複数の被保護プログラムを記憶しており、
前記セキュア処理方法は、
解析の対象とされた被保護プログラムを無効化する無効化ステップと、
前記複数の被保護プログラムから、無効化されていない１の被保護プログラムを選択する選択ステップと、
選択された１の被保護プログラムを実行する実行ステップと
を含むことを特徴とするセキュア処理方法。
【請求項２５】
ネットワークを介して接続されてセキュア処理装置とプログラム更新サーバとから構成されるセキュア処理システムであって、
前記セキュア処理装置は、
オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに基づき生成された複数の被保護プログラムを記憶している第１記憶手段と、
解析の対象とされた被保護プログラムを無効化する無効化手段と、
前記複数の被保護プログラムから、無効化されていない１の被保護プログラムを選択する選択手段と、
選択された１の被保護プログラムを実行する実行手段と、
前記第１記憶手段に記憶されている複数の被保護プログラムの内、無効化されていない被保護プログラムの残数が、所定の閾値以下である場合に、前記プログラム更新サーバに対し、被保護プログラムの送信を要求する要求手段とを備え、
前記プログラム更新サーバは、
複数の被保護プログラムを記憶している第２記憶手段と、
前記セキュア処理装置から、被保護プログラムの送信要求を受け付ける要求受付手段と、
前記要求受付手段が前記送信要求を受け付けると、前記第２記憶手段から、１以上の被保護プログラムを読み出して、前記セキュア処理装置へ送信する送信手段とを備える
ことを特徴とするセキュア処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの不正な改ざんや解析を防止する技術に関する。
【背景技術】
【０００２】
ＰＣや携帯電話機を用いて視聴するための有料のデジタルコンテンツが配信されているが、不正コピーを防止するために、デジタルコンテンツは暗号化されて配信される。そのため、デジタルコンテンツを再生するためのプログラムは、暗号化を解くための暗号鍵を含んでいる。従って、不正解析を目的とする悪意のユーザが再生用のプログラムを解析して、暗号鍵を特定することができれば、デジタルコンテンツを不正にコピーされてしまう。
【０００３】
このようなプログラムの解析を防止する技術は、従来から存在しており、解析防止の技術が施されたプログラムに対し、悪意のユーザは、一般的に毎回異なる不正解析の手法を試行しながら徐々に解析を進めていき、最終的に暗号鍵等の秘密情報を取得する。そこで、不正解析を検出すると、それ以降プログラムの実行を不可能にすることで、そのプログラムに対して不正解析が繰り返されることを防ぐ技術がある。
【非特許文献１】「逆解析や改変からソフトを守る」  日経エレクトロニクス１９９８．１．５  （Ｐ２０９−２２０）
【非特許文献２】「ソフトウェアの耐タンパー化技術」富士ゼロックス  テクニカル  レポート  Ｎｏ．１３
【非特許文献３】「ザ・プロテクト」秀和システム出版  １９８５年
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、プログラムの不正な解析、及び改ざんを行う意図の無い善意のユーザの誤操作が、不正な解析、及び改ざんとして検出される場合がある。このような場合、上記の従来技術では、プログラムの実行が不可能になり、以後、そのプログラムを利用することができなくなる。これは、善意のユーザにとって不利益となる。
本発明は、上記の問題点に鑑みなされたものであって、プログラムの不正解析の防止と、善意のユーザにとっての利便性とを両立することができるセキュア処理システムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記の目的を達成するために、本発明は、セキュア処理装置であって、オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに基づき生成された複数の被保護プログラムを記憶しているプログラム記憶手段と、解析の対象とされた被保護プログラムを無効化する無効化手段と、前記複数の被保護プログラムから、無効化されていない１の被保護プログラムを選択する選択手段と、選択された１の被保護プログラムを実行する実行手段とを備えることを特徴とする。
【発明の効果】
【０００６】
上記の構成によると、解析の対象とされた被保護プログラムを無効化することにより、悪意のユーザにより同一の被保護プログラムに対する解析が再試行されるのを防止することができる。更に、当該セキュア処理装置は、複数の被保護プログラムを記憶しているため、解析の対象とされた被保護プログラムが無効化された場合であっても、無効化されていない他の被保護プログラムを実行することにより、善意のユーザのプログラムを利用する権利を担保することができる。
【０００７】
ここで、前記セキュア処理装置は、前記実行手段が１の被保護プログラムを実行する際に、前記被保護プログラムが解析の対象とされているか否かを判断する解析検出手段を備え、前記無効化手段は、無効化されている被保護プログラムを示す無効化リストを記憶する無効化リスト記憶部と、前記解析検出手段により、前記被保護プログラムが解析の対象とされていると判断されると、前記無効化リストに、前記被保護プログラムが無効化された旨を登録する無効化登録部とを備えるように構成してもよい。
【０００８】
この構成によると、無効化リスト記憶部が無効化リストを記憶していることにより、選択手段は、無効化された被保護プログラムを識別可能であり、実行すべき被保護プログラムとして、無効化されていない被保護プログラムを選択することができる。また、解析検出手段により、解析の対象となった被保護プログラムが検出されると、無効化登録部により無効化リストが更新されるので、選択手段は、常に新しい無効化リストを参照して、無効化されていない被保護プログラムを選択することができる。
【０００９】
ここで、前記無効化リストは、当該無効化リストの正当性を証明するための署名データが付加されており、前記選択手段は、前記無効化リストに付加されている前記署名データを検証し、前記署名データの検証の結果、前記無効化リストの不正が検出された場合には、被保護プログラムの選択処理を中止するように構成してもよい。
この構成によると、不正解析を試みる悪意のユーザにより、無効化リストが改ざんされた場合であっても、署名データを検証することにより、無効化リストの改ざんの有無を判断することが可能となる。また、無効化リストの改ざんが検出された場合には、全ての被保護プログラムの実行を中止することができ、不正解析を防止することができる。
【００１０】
ここで、前記複数の被保護プログラムは、オリジナルプログラムを難読化した難読化プログラムであって、各被保護プログラムは、難読化の方法及び／又は難読化の程度がそれぞれ異なることにより、異なるコードを有するプログラムであるように構成してもよい。
この構成によると、悪意のユーザによる被保護プログラムの解析を困難にすることができる。
【００１１】
ここで、前記複数の被保護プログラムの内、何れか１以上の被保護プログラムは、前記難読化の方法として、前記オリジナルプログラムに含まれる複数の部分プログラムの内、異なる部分プログラムを暗号化する方法を用い、生成されたプログラムであるように構成してもよい。
この構成によると、前記１以上の被保護プログラムは、暗号化されている部分プログラム、即ち暗号化されている位置が異なるために、悪意のユーザが複数回解析を試みた場合であっても、解析が困難となる。
【００１２】
ここで、部分プログラムを暗号化することにより生成された前記１以上の被保護プログラムは、暗号化の対象である各部分プログラムが、異なる暗号化アルゴリズム及び／又は異なる暗号鍵を用いて暗号化されたプログラムであるように構成してもよい。
この構成によると、前記１以上の被保護プログラムは、暗号化されている位置が異なるだけでなく、暗号化のアルゴリズムや暗号鍵も異なるため、更に解析を困難にすることができる。
【００１３】
ここで、前記複数の被保護プログラムの内、何れか１以上の被保護プログラムは、前記難読化の方法として、前記オリジナルプログラムに含まれる複数の命令の内、相互に依存関係にない命令である並列命令の実行順序を入れ替える方法を用い、生成されたプログラムであるように構成してもよい。
この構成によると、前記１以上の被保護プログラムは、オリジナルプログラムの並列性に基づき生成されており、オリジナルプログラムと同一の出力結果を担保しつつ、悪意のユーザによる解析を困難にすることができる。
【００１４】
ここで、前記複数の被保護プログラムの内、何れか１以上の被保護プログラムは、前記難読化の方法として、前記オリジナルプログラムに含まれる命令を、当該命令と異なる処理を行い、且つ当該命令と同一の結果を出力する１以上の命令からなる恒等命令に置き換える方法を用い、生成されたプログラムであるように構成してもよい。
この構成によると、前記１以上の被保護プログラムは、オリジナルプログラムの恒等命令を用いて生成されており、オリジナルプログラムと同一の出力結果を担保しつつ、悪意のユーザによる解析を困難にすることができる。
【００１５】
ここで、前記複数の被保護プログラムの内、何れか１以上の被保護プログラムは、前記難読化の方法として、前記オリジナルプログラムの結果に影響を与えない命令であるダミー命令を、前記オリジナルプログラムに挿入する方法を用い、生成されたプログラムであるように構成してもよい。
この構成によると、前記１以上の被保護プログラムは、ダミーコードを用いて冗長化して生成されており、オリジナルプログラムと同一の出力結果を担保しつつ、悪意のユーザによる解析を困難にすることができる。
【００１６】
ここで、前記セキュア処理装置は、前記実行手段が１の被保護プログラムを実行する際に、前記被保護プログラムが解析の対象とされているか否かを判断する解析検出手段を備えるように構成してもよい。
この構成によると、解析検出手段が被保護プログラムの解析の可能性を検出することにより、無効化手段は、秘密の情報が暴露される危険のある被保護プログラムを無効化することができる。
【００１７】
ここで、前記解析検出手段は、前記実行手段による被保護プログラムの実行中にデバッガを検出すると、検出したデバッガを無効化するデバッガ検出部と、前記デバッガ検出部によりデバッガが検出されると、前記実行手段に対し、実行中止を指示する指示部とを備え、前記実行手段は、前記指示部から実行中止の指示を受け付けると、実行中である前記被保護プログラムの実行を即座に中止するように構成してもよい。
【００１８】
この構成によると、当該セキュア処理装置は、デバッガを検出する機能を有し、更に、検出したデバッガを無効化することにより、実行中の被保護プログラムが解析され、秘匿にすべき情報が暴露されるのを防止することができる。
ここで、前記解析検出手段は、被保護プログラムの改ざんを検出する改ざん検出部と、前記改ざん検出部により改ざんが検出されると、前記実行手段に対し、実行中止を指示する指示部とを備え、前記実行手段は、前記指示部から実行中止の指示を受け付けると、前記被保護プログラムの実行を中止するように構成してもよい。
【００１９】
この構成によると、当該セキュア処理装置は、改ざんが検出された被保護プログラム以外の他の被保護プログラムは実行可能であるため、善意のユーザの利益を害することなく不正なプログラムの実行を防止することができる。
ここで、前記解析検出手段は、前記被保護プログラムが解析の対象とされていると判断すると、前記解析に係る解析ログ情報を生成するログ情報生成部を備えるように構成してもよい。
【００２０】
この構成によると、解析に係る解析ログ情報を生成することにより、どのような解析行為がなされたかを知ることができる。また、セキュア処理装置の開発段階におけるテスト工程において、解析検出手段が正しく解析行為を検出するか否かを確認することができる。
ここで、前記セキュア処理装置は、ネットワークを介して外部サーバと接続されており、前記ログ情報生成部は、生成した前記解析ログ情報を、前記外部サーバへ送信するように構成してもよい。
【００２１】
この構成によると、解析ログ情報を外部サーバへ送信することにより、外部サーバでは、どのような解析行為がなされたのかを分析することができる。解析行為を分析することにより、より解析の困難な被保護プログラムを生成することができる。
ここで、前記解析検出手段は、更に、所定の数値に設定された閾値を記憶している閾値記憶部と、被保護プログラムが解析の対象とされていると判断した回数を保持し、前記判断の都度、保持している回数を更新する解析回数計数部とを備え、前記無効化登録部は、前記解析回数計数部が保持している回数が前記閾値を超える場合に、前記無効化リストに、前記被保護プログラムが無効化された旨を登録するように構成してもよい。
【００２２】
この構成によると、解析された回数が、予め設定されている閾値を超えた場合にのみ、被保護プログラムが無効化される。したがって、善意のユーザの偶然による誤操作で、直ちに実行中の被保護プログラムが無効化されてしまうことを防ぐことができる。また、悪意のユーザが解析を繰り返すと、解析の回数が予め設定されている閾値を超え、被保護プログラムが無効化されるので、被保護プログラムに含まれる秘匿にすべき情報が暴露されることを防止することができる。
【００２３】
ここで、前記選択手段は、前記無効化リストを参照し、無効化されていない１の被保護プログラムをランダムに選択するように構成してもよい。
この構成によると、選択する被保護プログラム、即ち実行する被保護プログラムが毎回ランダムに決定されるので、悪意のユーザによる不正解析を困難にすることができる。
ここで、前記選択手段は、選択した被保護プログラムを識別するための情報を記憶しており、前記情報と前記無効化リストとを参照し、未選択であり、且つ無効化されていない１の被保護プログラムをランダムに選択するように構成してもよい。
【００２４】
この構成によると、選択する被保護プログラム、即ち実行する被保護プログラムが、毎回ランダムに決定され、尚且つ一度実行された被保護プログラムが、次回から選択されないため、悪意のユーザによる不正解析をより困難にすることができる。
ここで、前記選択手段は、予め所定の選択順序を記憶しており、前記無効化リストを参照し、無効化されていない１の被保護プログラムを、前記選択順序に応じて選択するように構成してもよい。
【００２５】
この構成によると、所定の選択順序を記憶しておくことで、実行する被保護プログラムをランダムに選択する場合と比較すると、乱数生成の処理等を省略することができ、処理時間を短縮することができる。
ここで、前記選択手段は、前記複数の被保護プログラムについて、各被保護プログラムの難読化の程度を示す難読化度情報を記憶しており、前記難読化度情報と前記無効化リストとを参照し、難読化の程度の高い被保護プログラムから順に実行されるように、無効化されていない１の被保護プログラムを選択するように構成してもよい。
【００２６】
この構成によると、難読化の程度の高い被保護プログラム、即ち、解析の困難な被保護プログラムから順に実行することで、悪意のユーザによる不正解析を効果的に防止することができる。
ここで、前記選択手段は、前記複数の被保護プログラムについて、各被保護プログラムの難読化の程度を示す難読化度情報を記憶しており、
前記難読化度情報を参照し、難読化の程度の低い被保護プログラムから順に実行されるように、無効化されていない１の被保護プログラムを選択するように構成してもよい。
【００２７】
一般的に、難読化の程度が高い被保護プログラムほど、プログラム実行速度が遅く、難読化の程度が高い被保護プログラムほど、プログラム実行速度が速くなるの。従って、この構成によると、実行速度の速い被保護プログラムから実行され、不正解析の意図のない善意のユーザにとっては、利便性が高いセキュア処理装置を提供することができる。
ここで、前記選択手段は、実行速度の速い被保護プログラムから順に実行されるように、無効化されていない１の被保護プログラムを選択するように構成してもよい。
【００２８】
この構成によると、実行速度の速い被保護プログラムから実行されるので、不正解析の意図のない善意のユーザにとっては、利便性が高いセキュア処理装置を提供することができる。
ここで、前記セキュア処理装置は、ネットワークを介して、被保護プログラムを保持しているプログラム更新サーバと接続されており、前記選択手段は、無効化されていない被保護プログラムの残数が、所定の閾値以下であるか否かを判断する判断部と、前記判断部により、所定の閾値以下であると判断された場合に、前記プログラム更新サーバに対し、新たな被保護プログラムの送信を要求するプログラム要求部と、前記プログラム更新サーバから、新たな被保護プログラムを受信するプログラム受信部とを備えるように構成してもよい。
【００２９】
この構成によると、プログラム記憶手段に記憶されている複数の被保護プログラムが全て無効化された場合であっても、セキュア処理装置は、プログラム更新サーバから新たな被保護プログラムを取得することが可能であり、善意のユーザのプログラムを利用する権利を担保することができる。
また、プログラム記憶手段の記憶容量が少なく、予め多くの被保護プログラムを記憶しておいくことができないセキュア処理装置であっても、外部のプログラム更新サーバから被保護プログラムを取得することが可能である。
【００３０】
また、本発明は、ネットワークを介して接続されてセキュア処理装置とプログラム更新サーバとから構成されるセキュア処理システムであって、前記セキュア処理装置は、オリジナルプログラムと同一の結果が得られるように、前記オリジナルプログラムに基づき生成された複数の被保護プログラムを記憶している第１記憶手段と、解析の対象とされた被保護プログラムを無効化する無効化手段と、前記複数の被保護プログラムから、無効化されていない１の被保護プログラムを選択する選択手段と、選択された１の被保護プログラムを実行する実行手段と、前記第１記憶手段に記憶されている複数の被保護プログラムの内、無効化されていない被保護プログラムの残数が、所定の閾値以下である場合に、前記プログラム更新サーバに対し、被保護プログラムの送信を要求する要求手段とを備え、前記プログラム更新サーバは、複数の被保護プログラムを記憶している第２記憶手段と、前記セキュア処理装置から、被保護プログラムの送信要求を受け付ける要求受付手段と、前記要求受付手段が前記送信要求を受け付けると、前記第２記憶手段から、１以上の被保護プログラムを読み出して、前記セキュア処理装置へ送信する送信手段とを備えることを特徴とする。
【００３１】
この構成によると、解析の対象とされた被保護プログラムを無効化することにより、悪意のユーザにより同一の被保護プログラムに対する解析が再試行されるのを防止することができる。更に、当該セキュア処理装置は、複数の被保護プログラムを記憶しているため、解析の対象とされた被保護プログラムが無効化された場合であっても、無効化されていない他の被保護プログラムを実行することにより、善意のユーザのプログラムを利用する権利を担保することができる。
【００３２】
また、第１記憶手段に記憶されている複数の被保護プログラムが全て無効化された場合であっても、セキュア処理装置は、プログラム更新サーバから新たな被保護プログラムを取得することが可能であり、善意のユーザのプログラムを利用する権利を担保することができる。
【発明を実施するための最良の形態】
【００３３】
本発明に係る実施の形態として、セキュア処理システム１について図面を参照して説明する。
＜構成＞
１．セキュア処理システム１
図１は、セキュア処理システム１の構成を示すシステム構成図である。同図に示すように、セキュア処理システム１は、携帯電話機１０、プログラム更新サーバ２０、及びネットワーク３０から構成される。
【００３４】
携帯電話機１０は、無線電波を用いて通信を行う可搬型の電話機である。携帯電話機１０は、暗号化コンテンツをダウンロードし、ダウンロードした暗号化コンテンツを保持している。また、携帯電話機１０は、暗号化コンテンツを復号し、再生するための暗号化コンテンツ復号プログラムを保持している。ここで、携帯電話機１０が保持している暗号化コンテンツは、音楽コンテンツに、暗号化アルゴリズムＥを施して生成されたデータである。
【００３５】
プログラム更新サーバ２０は、ネットワーク３０を介して携帯電話機１０と接続されており、携帯電話機１０による暗号化コンテンツの復号に用いられる暗号化コンテンツ復号プログラムの更新を行う。
ここで、ネットワーク３０の具体例はインターネットである。また、図１では、携帯電話網及び無線基地局等を省略している。
【００３６】
２．携帯電話機１０
図２は、携帯電話機１０の構成を機能的に示す機能ブロック図である。同図に示すように、携帯電話機１０は、アンテナ１０１、送受信部１０２、通信制御部１０３、記憶部１０４、表示部１０５、操作部１０６、スピーカ１０７、マイク１０８、及びセキュア処理部１０９から構成される。ここで、アンテナ１０１、送受信部１０２、通信制御部１０３、記憶部１０４、表示部１０５、操作部１０６、スピーカ１０７、及びマイク１０８は、通常の携帯電話機としての機能を達成するための機能ブロックであり、セキュア処理部１０９が、本発明の特徴的な機能ブロックである。なお、携帯電話機１０は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ等から構成されるコンピュータシステムである。
【００３７】
送受信部１０２は、アンテナ１０１を介して、通話、電子メール送受信、ネットワーク３０を介したプログラム更新サーバ２０との通信等を行う。
通信制御部１０３は、通信制御用コンピュータプログラムを記憶しており、マイクロプロセッサが通信制御用コンピュータプログラムを実行することにより、携帯電話機１０が有する通話、メール送受信、ネットワーク接続等の通信機能を制御する。
【００３８】
記憶部１０４は、電話帳やスケジュール帳、送受信済みの電子メールデータ、ダウンロードした暗号化コンテンツ等を記憶している。
表示部１０５は、液晶ディスプレィを含み、各種の画面を液晶ディスプレィに表示する。
操作部１０６は、携帯電話機１０の操作面に設けられた複数のボタン等から構成され、ボタンの押下により、ユーザからの入力を受け付ける。
【００３９】
スピーカ１０７は、音声を出力し、マイク１０８は、音声の入力を受け付ける。
セキュア処理部１０９は、プログラム記憶部１１１、実行プログラム選択部１１２、プログラムロード部１１３、プログラムロード領域１１４、プログラム実行部１１５、不正解析検出部１１６、無効化リスト記憶部１１７、及び無効化リスト更新部１１８から構成される。
【００４０】
プログラム記憶部１１１は、ＦｌａｓｈＲＯＭ、ＥＥＰＲＯＭ、又はＨＤＤで構成される。図３は、プログラム記憶部１１１の内部を示す図である。同図に示すように、プログラム記憶部１１１は、被保護プログラムＡ（２０１）、被保護プログラムＢ（２０２）、…、被保護プログラムＣ（２０３）を含む、複数個の被保護プログラムを記憶している。
各被保護プログラムには、プログラム識別子が付与されている。具体的に、被保護プログラムＡ（２０１）には、プログラム識別子Ａ：０００１（２１１）、被保護プログラムＢ（２０２）には、プログラム識別子Ｂ：０００２（２１２）、被保護プログラムＣ（２０３）には、プログラム識別子Ｃ：０００３（２１３）が付与されている。
【００４１】
ここで、被保護プログラムの性質について、図４を用いて説明する。
プログラム記憶部１１１に記憶されている全ての被保護プログラムは、暗号化コンテンツ復号プログラムであるオリジナルプログラム２００を、難読化して生成されたプログラムであり、図４に示すように、オリジナルプログラム２００及び各被保護プログラムは、暗号化コンテンツ３０１と復号鍵３０２とを入力値とすると、同一の出力値である復号コンテンツ３０３を出力する。なお、本実施形態における被保護プログラムは、復号鍵３０２を内部に含んでいるものとする。
【００４２】
ここで、難読化とは、プログラムをその構造的意味を変えずに複雑化することで、プログラムの解析を困難にすることを目的とした技術であり、具体的には、オリジナルプログラム２００の一部又は全部に暗号化を施したり、オリジナルプログラム２００に、実行に影響を与えない不要なダミーコードを挿入したり、オリジナルプログラム２００に含まれる一部のコードを、当該一部のコードと異なるコードであるが同一の結果を得られる等価なコードに置き換えたり、オリジナルプログラム２００に含まれるコードの内、順序を入れ替えても結果の変わらないコードの順序を入れ替えたり、１つのモジュールを複数のモジュールに分割したり、制御構造を複雑化したりする方法より実現される。
【００４３】
なお、各被保護プログラムは、それぞれ異なる方法で難読化されたり、複数の方法をそれぞれ異なる組み合わせで用いて難読化されたり、それぞれ異なる暗号化アルゴリズムや暗号鍵を用いて暗号化されたり、それぞれオリジナルプログラム２００の異なる部分が暗号化されたり、それぞれ異なる程度で難読化されたりすることにより、異なるバイナリコードを有するプログラムである。難読化の程度は、ダミーコードの追加サイズや、制御構造の複雑化パターン、モジュールの分割数、暗号化アルゴリズムの強度等を変更することにより変えることができる。
【００４４】
実行プログラム選択部１１２は、無効化リスト記憶部１１７に記憶されている無効化リスト５００を参照し、無効化されていない１つの被保護プログラムを選択する。実行プログラム選択部１１２は、選択した被保護プログラムのプログラム先頭アドレス、及びプログラムサイズを無効化リストから読み出し、読み出したプログラム先頭アドレス、及びプログラムサイズを、プログラムロード部１１３へ通知する。なお、実行プログラム選択部１１２は、乱数生成器を用いて乱数を生成し、生成した乱数に基づき、実行する被保護プログラムを選択する。被保護プログラム選択の詳細については、後述する。
【００４５】
ここで、無効化リスト５００を参照することにより、全ての被保護プログラムが無効化されていると判断する場合には、実行プログラム選択部１１２は、無効化リスト更新部１１８に対し、新たな被保護プログラムのダウンロードを要求する。
プログラムロード部１１３は、実行プログラム選択部１１２から、プログラム先頭アドレス、及びプログラムサイズを受け取ると、被保護プログラムをプログラムロード領域１１４にロードする。プログラムロード領域１１４は、本実施形態では具体例としてＲＡＭである。
【００４６】
プログラム実行部１１５は、マイクロプロセッサを含み、プログラムロード領域１１４にロードされた被保護プログラムを実行する。
先に述べたように、被保護プログラムは、暗号化コンテンツ復号プログラムであるから、プログラム実行部１１５は、被保護プログラムを実行することにより、記憶部１０４から暗号化コンテンツを読み出し、読み出した暗号化コンテンツに、コンテンツ復号鍵を用いて復号アルゴリズムＤを施し、音楽コンテンツを復号する。プログラム実行部１１５は、復号された音楽コンテンツを、通信制御部１０３を介してスピーカ１０７へ出力する。ここで、復号アルゴリズムＤは、暗号化アルゴリズムＥを施して暗号化された暗号文を、平文に変換するアルゴリズムである。
【００４７】
不正解析検出部１１６は、図５に示すように、デバッガ検出部４０１、改ざん検出部４０２、及び不正解析通知部４０３から構成される。
デバッガ検出部４０１は、プログラム実行部１１５による被保護プログラムの実行中に、インサーキットエミュレータ（登録商標である。）や、ソフトウェアデバッガを検出する機能を有する。デバッガ検出部４０１は、デバッガを検出すると、デバッガインタフェースを切断する等により、デバッガを無効化する。デバッガ検出部４０１は、デバッガを無効化すると、不正解析通知部４０３に不正解析を検出した旨を通知する。
【００４８】
改ざん検出部４０２は、予め、図６に示す改ざん検出値テーブル４１０を記憶している。改ざん検出値テーブル４１０は、改ざん検出値情報４１１、４１２、…、４１３を含み、各改ざん検出値情報は、プログラム識別子と判定用改ざん検出値とを含む。プログラム識別子は、被保護プログラムを一意に識別するための情報である。判定用改ざん検出値は、対応付けられているプログラム識別子により識別される被保護プログラムに、予め一方向関数を用いて算出された値であり、改ざんの有無を判定するために用いられるデータである。
【００４９】
ここで、改ざん検出値テーブル４１０は、プログラム記憶部１１１に記憶されているすべての被保護プログラムについて、各被保護プログラムと１対１に対応する改ざん検出値情報を含んでいる。
具体的には、改ざん検出値情報４１１は、プログラム識別子「０００１」と判定用改ざん検出値「検出値Ａ」とを含む。プログラム識別子「０００１」は、被保護プログラムＡ（２０１）に対応するプログラム識別子であるから、判定用改ざん検出値「検出値Ａ」は、被保護プログラムＡ（２０１）の改ざんの有無を判定するために用いられるデータである。
【００５０】
また、改ざん検出値情報４１２は、プログラム識別子「０００２」と判定用改ざん検出値「検出値Ｂ」とを含む。プログラム識別子「０００２」は、被保護プログラムＢ（２０２）に対応するプログラム識別子であるから、改ざん検出値「検出値Ｂ」は、被保護プログラムＢ（２０２）の改ざんの有無を判定するために用いられるデータである。
また、改ざん検出値情報４１３は、プログラム識別子「０００３」と判定用改ざん検出値「検出値Ｃ」とを含む。プログラム識別子「０００３」は、被保護プログラムＣ（２０３）に対応するプログラム識別子であるから、改ざん検出値「検出値Ｃ」は、被保護プログラムＣ（２０３）の改ざんの有無を判定するために用いられるデータである。
【００５１】
改ざん検出部４０２は、新たな被保護プログラムのダウンロードに伴い、無効化リスト更新部１１８から、判定用改ざん検出値とプログラム識別子とを受け取ると、これらを新に改ざん検出値テーブル４１０に登録する。
改ざん検出部４０２は、プログラムロード領域１１４に被保護プログラムがロードされると、ロードされた被保護プログラムに一方向関数を用いて、改ざん検出値を算出する。改ざん検出部４０２は、算出された改ざん検出値と、改ざん検出値テーブル４１０に記述されている判定用改ざん検出値とが一致するか否か判断する。一致する場合には、プログラムロード領域１１４にロードされている被保護プログラムは改ざんされていないと判定し、一致しない場合は、被保護プログラムは改ざんされていると判定する。改ざん検出部４０２は、被保護プログラムの改ざんを検出すると、不正解析通知部４０３に不正解析を検出した旨を通知する。なお、判定用改ざん検出値及び改ざん検出値は、一例として、ＳＨＡ（ＳｅｃｕｒｅＨａｓｈ Ａｌｇｏｒｉｔｈｍ）‐１を用いて算出するものとする。
【００５２】
不正解析通知部４０３は、デバッガ検出部４０１及び改ざん検出部４０２から不正解析を検出した旨の通知を受けると、プログラム実行部１１５に対し、プログラムの実行中止を指示し、更に、不正解析ログ情報を生成する。不正解析通知部４０３は、生成した不正解析ログ情報を、通信制御部１０３、送受信部１０２、アンテナ１０１、及びネットワーク３０を介して、プログラム更新サーバ２０へ送信する。
【００５３】
図７は、不正解析通知部４０３が生成する不正解析ログ情報４２０のデータ構成を示す図である。同図に示すように、不正解析ログ情報４２０は、プログラム識別子欄４２１、不正解析検知コード欄４２２、汎用レジスタ値欄４２３、スタックポインタ欄４２４、リンクレジスタ欄４２５、及びプログラムカウンタ欄４２６を含む。
プログラム識別子欄４２１には、不正解析検知時にプログラム実行部１１５が実行していた被保護プログラムを識別するプログラム識別子が記述される。不正解析検知コード欄４２２には、不正解析を検出したのが、デバッガ検出部４０１及び改ざん検出部４０２の何れであるかを示す不正解析検知コードが記述される。不正解析検知コードは、デバッガ検出部４０１がデバッガを検出した場合は「１」に設定され、改ざん検出部４０２が改ざんを検出した場合は「２」に設定される。汎用レジスタ値欄４２３、スタックポインタ欄４２４、リンクレジスタ欄４２５、及びプログラムカウンタ欄４２６には、デバッガ検出時におけるマイクロプロセッサ内部の、レジスタファイルの各値が記述される。
【００５４】
なお、デバッグレジスタを有するプロセッサを利用する場合には、不正解析通知部４０３は、デバッグレジスタの状態を示す値や、デバッグレジスタにセットされているアドレス値などを不正解析ログ情報に記述してもよい。
無効化リスト記憶部１１７は、図８に示す無効化リスト５００を保持している。無効化リスト５００は、複数のプログラム無効化情報を含み、各プログラム無効化情報は、プログラム識別子、プログラム先頭アドレス、プログラムサイズ、及び無効化フラグから構成される。
【００５５】
プログラム識別子は、被保護プログラムを一意に識別するための情報である。プログラム先頭アドレスは、対応する被保護プログラムの、プログラム記憶部１１１における記録開始位置を示し、プログラムサイズは、被保護プログラムのデータサイズを示す情報である。無効化フラグは、対応する被保護プログラムが無効化されているか否かを示す情報であり、「０」及び「１」の何れかに設定される。「０」は、被保護プログラムが無効化されていないことを示し、「１」は、被保護プログラムが無効化されていることを示す。
【００５６】
ここで、無効化リスト５００は、プログラム記憶部１１１に記憶されているすべての被保護プログラムについて、各被保護プログラムと１対１に対応するプログラム無効化情報を含んでいる。具体的に、プログラム無効化情報５０１は、被保護プログラムＡ（２０１）に対応しており、プログラム無効化情報５０２は、被保護プログラムＢ（２０２）に対応しており、プログラム無効化情報５０３は、被保護プログラムＣ（２０３）に対応している。
【００５７】
無効化リスト更新部１１８は、実行プログラム選択部１１２から被保護プログラムのダウンロード要求を受け付けると、受け付けたダウンロード要求を通信制御部１０３、送受信部１０２、アンテナ１０１、及びネットワーク３０を介して、プログラム更新サーバ２０へ送信する。無効化リスト更新部１１８は、ダウンロード要求に応じて、プログラム更新サーバ２０から送信された被保護プログラムと判定用改ざん検出値とを、ネットワーク３０、アンテナ１０１、送受信部１０２、及び通信制御部１０３を介して受信する。無効化リスト更新部１１８は、受信した被保護プログラムをプログラム記憶部１１１へ書き込み、受信した判定用改ざん検出値と被保護プログラムを識別するプログラム識別子とを、不正解析検出部１１６の改ざん検出部４０２へ出力する。
【００５８】
また、無効化リスト更新部１１８は、以下の場合に、無効化リスト記憶部１１７に記憶されている無効化リスト５００を更新する。
（ａ）被保護プログラムの不正解析が検出された場合。即ち、無効化リスト更新部１１８は、不正解析通知部４０３から不正解析が検出された被保護プログラムのプログラム識別子を受け取ると、受け取ったプログラム識別子と対応付けられている無効化フラグを「０」から「１」に書き換えることにより、無効化リスト５００を更新する。
【００５９】
（ｂ）プログラム更新サーバ２０から新たな被保護プログラムを受信した場合。即ち、無効化リスト更新部１１８は、プログラム更新サーバ２０から被保護プログラムと判定用改ざん検出値とを受信すると、受信した被保護プログラムに係るプログラム無効化情報を生成し、生成したプログラム無効化情報を無効化リスト５００に登録する。
３．プログラム更新サーバ２０
図９は、プログラム更新サーバ２０の構成を機能的に示す機能ブロック図である。同図に示すように、プログラム更新サーバ２０は、送受信部６０１、制御部６０２、不正解析ログ情報記憶部６０３、及び更新用プログラム記憶部６０４から構成される。プログラム更新サーバ２０は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット等から構成されるコンピュータシステムである。
【００６０】
送受信部６０１は、ネットワーク接続ユニットであって、ネットワーク３０を介して携帯電話機１０から送信される情報を受信し、受信した情報を制御部６０２へ出力する。また、送受信部６０１は、制御部６０２から出力される情報を受け取り、受け取った情報を、ネットワーク３０を介して、携帯電話機１０へ送信する。
制御部６０２は、プログラム更新サーバ２０全体を制御する。具体的には、制御部６０２は、送受信部６０１及びネットワーク３０を介して、携帯電話機１０から被保護プログラムのダウンロード要求を受け付けると、更新用プログラム記憶部６０４から被保護プログラムと判定用改ざん検出値とを読み出し、読み出した被保護プログラムと判定用改ざん検出値とを送受信部６０１へ出力する。また、制御部６０２は、送受信部６０１及びネットワーク３０を介して、携帯電話機１０から不正解析ログ情報を受信すると、受信した不正解析ログ情報を、不正解析ログ情報記憶部６０３に書き込む。
【００６１】
不正解析ログ情報記憶部６０３は、携帯電話機１０から送信された不正解析ログ情報を記憶する。
図１０は、更新用プログラム記憶部６０４の内部を示す図である。同図に示すように、更新用プログラム記憶部６０４は、被保護プログラムＸ（６１１）、被保護プログラムＹ（６１２）、…、被保護プログラムＺ（６１３）を含む、複数個の被保護プログラムを記憶している。
【００６２】
各被保護プログラムには、プログラム識別子が付与されている。具体的に、被保護プログラムＸ（６１１）には、プログラム識別子Ｘ：１００１（６２１）、被保護プログラムＹ（６１２）には、プログラム識別子Ｙ：１００２（６２２）、被保護プログラムＺ（６１３）には、プログラム識別子Ｚ：１００３（６２３）が付与されている。
なお、更新用プログラム記憶部６０４に記憶されている各被保護プログラムは、携帯電話機１０のプログラム記憶部１１１に記憶されている被保護プログラムと同様に、オリジナルプログラム２００を難読化して生成したプログラムであって、それぞれが異なるバイナリコードを有し、更に、図４に示す性質を有する。即ち、被保護プログラムＸ（６１１）、被保護プログラムＹ（６１２）、…、被保護プログラムＺ（６１３）は、暗号化コンテンツ３０１及びコンテンツ復号鍵３０２を入力値とすると、出力値として、復号コンテンツ３０３を出力する。
【００６３】
また、更新用プログラム記憶部６０４は、各被保護プログラムに対応付けて、判定用改ざん検出値を記憶している。図１０に示すように、被保護プログラムＸ（６１１）と、判定用改ざん検出値Ｘ（６３１）とが対応しており、被保護プログラムＹ（６１２）と、判定用改ざん検出値Ｙ（６３２）とが対応しており、被保護プログラムＺ（６１３）と、判定用改ざん検出値Ｚ（６３３）とが対応している。各判定用改ざん検出値は、対応する被保護プログラムに、予め一方向関数を用いて算出された値であり、対応する被保護プログラムの改ざんの有無を判定するために用いられるデータである。
【００６４】
＜動作＞
ここでは、図１１から図１５に示すフローチャートを用いて、セキュア処理システム１の動作について説明する。
１．セキュア処理システム１全体の動作
図１１は、セキュア処理システム１全体の動作を示すフローチャートである。なお、ここに示す動作は、携帯電話機１０において暗号化コンテンツの復号要求が発生することにより開始する。
【００６５】
携帯電話機１０の実行プログラム選択部１１２は、無効化リスト記憶部１１７に記憶されている無効化リスト５００を読み込む（ステップＳ１０１）。実行プログラム選択部１１２は、無効化リスト５００の無効化フラグを読み、プログラム記憶部１１１に記憶されている全ての被保護プログラムが、無効化されているか否か判断する（ステップＳ１０２）。
【００６６】
全ての被保護プログラムが無効化されている場合（ステップＳ１０２でＹＥＳ）、即ち、無効化リスト５００の無効化フラグが全て「１」に設定されている場合、携帯電話機１０は、被保護プログラムの更新処理を行う（ステップＳ１０３）。無効化されていない被保護プログラムが存在する場合、即ち、無効化リスト５００に、「０」に設定されている無効化フラグが存在する場合（ステップＳ１０２でＮＯ）、実行プログラム選択部１１２は、被保護プログラム選択処理を行い、１の被保護プログラムを選択する（ステップＳ１０４）。
【００６７】
次に、プログラムロード部１１３は、ステップＳ１０４において選択された１の被保護プログラムを、プログラム記憶部１１１からプログラムロード領域１１４へロードする（ステップＳ１０５）。
次に、不正解析検出部１１６の改ざん検出部４０２は、プログラムロード領域１１４にロードされた被保護プログラムの改ざん検出値を算出する（ステップＳ１０６）。被保護プログラムの改ざんが検出された場合（ステップＳ１０７でＹＥＳ）、即ち、ステップＳ１０６で算出した改ざん検出値が、予め保持している判定用改ざん検出値と一致しない場合は、ステップＳ１１２に進む。
【００６８】
被保護プログラムの改ざんが検出されない場合（ステップＳ１０７でＮＯ）、即ち、ステップＳ１０６で算出した改ざん検出値が、予め保持している判定用改ざん検出値と一致する場合は、プログラム実行部１１５は、ステップＳ１０５でロードされた被保護プログラムの実行を開始する（ステップＳ１０８）。
被保護プログラムの実行中に、不正解析検出部１１６のデバッガ検出部４０１がデバッガを検出しなければ（ステップＳ１０９でＮＯ）、プログラム実行部１１５は、被保護プログラムの実行を継続する。
【００６９】
被保護プログラムの実行中に、デバッガ検出部４０１がデバッガを検出すると（ステップＳ１０９でＹＥＳ）、デバッガ検出部４０１は、デバッガを無効化し、ステップＳ１１１に進む。
改ざんを検出した改ざん検出部４０２、及びデバッガを検出したデバッガ検出部４０１は、不正解析通知部４０３に対し、その旨を通知し、不正解析通知部４０３はプログラム実行部１１５に対し実行中止を指示する。その後、プログラム実行部１１５は実行していた被保護プログラムの実行を中止する（ステップＳ１１２）。
【００７０】
不正解析通知部４０３は、不正解析通知処理を行い（ステップＳ１１３）、携帯電話機１０は処理を終了する。
２．被保護プログラム更新処理の動作
図１２は、被保護プログラム更新処理の動作を示すフローチャートである。なお、ここに示す動作は、図１１に示したフローチャートにおけるステップＳ１０３の詳細である。
【００７１】
携帯電話機１０の実行プログラム選択部１１２は、新たな被保護プログラムのダウンロードを要求するためのダウンロード要求を生成する（ステップＳ２０１）。実行プログラム選択部１１２は、生成したダウンロード要求を、無効化リスト更新部１１８へ出力し、無効化リスト更新部１１８は、通信制御部１０３、送受信部１０２、アンテナ１０１、及びネットワーク３０を介して、プログラム更新サーバ２０へ、ダウンロード要求を送信し、プログラム更新サーバ２０の送受信部６０１は、ダウンロード要求を受信する（ステップＳ２０２）。
【００７２】
プログラム更新サーバ２０の制御部６０２は、送受信部６０１からダウンロード要求を受け取ると、更新用プログラム記憶部６０４から、被保護プログラムと判定用改ざん検出値とを読み出す（ステップＳ２０３）。制御部６０２は、読み出した被保護プログラムと判定用改ざん検出値とを、送受信部６０１へ出力する。
送受信部６０１は、ネットワーク３０を介して被保護プログラムと判定用改ざん検出値とを携帯電話機１０へ送信し、携帯電話機１０の送受信部１０２は、アンテナ１０１を介して、被保護プログラムと判定用改ざん検出値とを受信する（ステップＳ２０４）。
【００７３】
無効化リスト更新部１１８は、ステップＳ２０４で受信した被保護プログラムに係るプログラム無効化情報を生成し、生成したプログラム無効化情報を、無効化リスト記憶部１１７に記憶されている無効化リスト５００に登録する（ステップＳ２０５）。
次に、無効化リスト更新部１１８は、ステップＳ２０４で受信した判定用改ざん検出値とプログラム識別子とを、不正解析検出部１１６の改ざん検出部４０２へ出力し、改ざん検出部４０２は、判定用改ざん検出値をプログラム識別子と対応付けて、改ざん検出値テーブル４１０に登録する（ステップＳ２０６）。
【００７４】
更に、無効化リスト更新部１１８は、ステップＳ２０４で受信した被保護プログラムを、プログラム記憶部１１１に書き込み（ステップＳ２０７）、書き込みが終了すると（ステップＳ２０８）、図１１のステップＳ１０４に戻り処理を続ける。
３．プログラム選択処理１の動作
図１３は、プログラム選択処理１の動作を示すフローチャートである。なお、ここに示す動作は、図１１に示したフローチャートにおけるステップＳ１０４の詳細である。
【００７５】
実行プログラム選択部１１２は、無効化リスト記憶部１１７に記憶されている無効化リスト５００を参照し、無効化リスト５００に登録されているプログラム無効化情報の総数、即ち、プログラム記憶部１１１に記憶されている被保護プログラムの総数をＮとする（ステップＳ３０１）。
次に、実行プログラム選択部１１２は、乱数生成器にて、１からＮまでの整数範囲で、乱数ｒを生成する（ステップＳ３０２）。実行プログラム選択部１１２は、無効化リスト５００に含まれるＮ個のプログラム無効化情報の内、上からｒ番目に位置するプログラム無効化情報に含まれる無効化フラグを読む（ステップＳ３０３）。
【００７６】
無効化フラグが１に設定されている場合（ステップＳ３０４でＹＥＳ）、対応する被保護プログラムは無効化されていることから、実行プログラム選択部１１２は、当該被保護プログラムを選択できないため、ステップＳ３０２に戻り、別の被保護プログラムを選択する処理を続ける。
無効化フラグが０に設定されている場合（ステップＳ３０４でＮＯ）、対応する被保護プログラムは無効化されていないため、実行プログラム選択部１１２は、ｒ番目の被保護プログラムを選択する（ステップＳ３０５）。実行プログラム選択部１１２は、選択した被保護プログラムに係るプログラム識別子、プログラム先頭アドレス、及びプログラムサイズを、無効化リストから読み出し、読み出したプログラム識別子、プログラム先頭アドレス、及びプログラムサイズを、プログラムロード部１１３へ通知する（ステップＳ３０６）。その後、図１１のステップＳ１０５へ戻り、処理を続ける。
【００７７】
なお、実行プログラム選択部１１２による被保護プログラム選択処理は、上記の方法に限定されず、次に説明する方法を用いてもよい。
４．プログラム選択処理２の動作
ここでは、図１４に示すフローチャートを用いて、プログラム選択処理２の動作について説明する。プログラム選択処理２は、先に説明したプログラム選択処理１の変形例であり、図１１に示したフローチャートのステップＳ１０４の詳細に相当する。
実行プログラム選択部１１２は、無効化リスト記憶部１１７に記憶されている無効化リスト５００を参照し、無効化リスト５００に登録されているプログラム無効化情報の総数、即ち、プログラム記憶部１１１に記憶されている被保護プログラムの総数をＮとする（ステップＳ４０１）。
【００７８】
ここで、実行プログラム選択部１１２は、内部に乱数リストを保持している。乱数リストは、既に乱数生成器にて生成された乱数を登録しているリストである。実行プログラム選択部１１２は、乱数リストを参照し（ステップＳ４０２）、乱数リストに登録されている乱数の総数を計数する。乱数リストに登録されている乱数の総数がＮの場合（ステップＳ４０３でＹＥＳ）、実行プログラム選択部１１２は、内部に保持している乱数リストをクリアする（ステップＳ４０４）。
【００７９】
乱数リストに登録されている乱数の総数がＮより少ない場合（ステップＳ４０３でＮＯ）、実行プログラム選択部１１２は、乱数生成器にて、１からＮまでの整数範囲で、乱数ｒを生成する（ステップＳ４０５）。実行プログラム選択部１１２は、ステップＳ４０５で生成した乱数ｒが乱数リストに登録済みであるか否か判断する。
乱数ｒが、乱数リストに登録済みである場合（ステップＳ４０６でＹＥＳ）、実行プログラム選択部１１２は、ステップＳ４０１に戻り処理を続ける。乱数ｒが、乱数リストに登録されていない場合（ステップＳ４０６でＮＯ）、ステップＳ４０５で生成した乱数ｒを、乱数リストに登録する（ステップＳ４０７）。
【００８０】
続いて、実行プログラム選択部１１２は、無効化リスト５００に含まれるＮ個のプログラム無効化情報の内、上からｒ番目に位置するプログラム無効化情報に含まれる無効化フラグを読む（ステップＳ４０８）。
無効化フラグが１に設定されている場合（ステップＳ４０９でＹＥＳ）、対応する被保護プログラムは無効化されていることから、実行プログラム選択部１１２は、当該被保護プログラムを選択できないため、ステップＳ４０１に戻り処理を続ける。
【００８１】
無効化フラグが０に設定されている場合（ステップＳ４０９でＮＯ）、対応する被保護プログラムは無効化されていないため、実行プログラム選択部１１２は、ｒ番目の被保護プログラムを選択する（ステップＳ４１０）。実行プログラム選択部１１２は、選択した被保護プログラムに係るプログラム識別子、プログラム先頭アドレス、及びプログラムサイズを、無効化リストから読み出し、読み出したプログラム識別子、プログラム先頭アドレス、及びプログラムサイズを、プログラムロード部１１３へ通知する（ステップＳ４１１）。その後、図１１のステップＳ１０５へ戻り、処理を続ける。
【００８２】
５．不正解析通知処理の動作
ここでは、図１５に示すフローチャートを用いて、不正解析通知処理の動作について説明する。なお、ここで説明する動作は、図１１のステップＳ１１３の詳細である。
不正解析検出部１１６の不正解析通知部４０３は、プログラム実行部１１５を介してプログラムロード領域１１４にロードされていた被保護プログラムのプログラム識別子を取得する（ステップＳ５０１）。
【００８３】
次に、不正解析通知部４０３は、不正解析を検出したのがデバッガ検出部４０１であるか、又は改ざん検出部４０２であるかを判断する。
不正解析を検出したのがデバッガ検出部４０１の場合（ステップＳ５０２で「デバッガ検出」）、不正解析通知部４０３は、不正解析検知コードを「１」に設定する（ステップＳ５０３）。その後、不正解析通知部４０３は、プログラム実行部１１５に含まれるレジスタファイルから汎用レジスタ、スタックポインタ、リンクレジスタ、及びプログラムカウンタの各値を取得する（ステップＳ５０４）。
【００８４】
不正解析を検出したのが改ざん検出部４０２の場合（ステップＳ５０２で「改ざん検出」）、不正解析通知部４０３は、不正解析検知コードを「２」に設定する（ステップＳ５０５）。
不正解析通知部４０３は、取得したプログラム識別子を、不正解析ログ情報４２０のプログラム識別子４２１欄に記述し、更に、「１」及び「２」の何れかに設定した不正解析検知コードを不正解析検知コード欄４２２に記述する。次に、不正解析通知部４０３は、ステップＳ５０４でレジスタファイルの各値を取得した場合には、取得した各値を、不正解析ログ情報４２０の汎用レジスタ値欄４２３、スタックポインタ欄４２４、リンクレジスタ欄４２５、及びプログラムカウンタ欄４２６の各欄に記述し、不正解析ログ情報４２０を生成する（ステップＳ５０６）。
【００８５】
不正解析通知部４０３は、生成した不正解析ログ情報４２０を、通信制御部１０３、送受信部１０２、アンテナ１０１、及びネットワーク３０を介して、プログラム更新サーバ２０へ送信し、プログラム更新サーバ２０は不正解析ログ情報４２０を受信する（ステップＳ５０７）。
プログラム更新サーバ２０の制御部６０２は、送受信部６０１から不正解析ログ情報４２０を受信すると、受信した不正解析ログ情報４２０を、不正解析ログ情報記憶部６０３へ書き込み、不正解析ログ情報記憶部６０３は、不正解析ログ情報４２０を記憶する（ステップＳ５０８）。
【００８６】
一方、携帯電話機１０の不正解析通知部４０３は、ステップＳ５０１で取得したプログラム識別子と共に、無効化リスト更新部１１８に対し、不正解析の検出を通知する（ステップＳ５０９）。無効化リスト更新部１１８は、不正解析の検出を受け付けると、無効化リストから、受け付けたプログラム識別子により識別されるプログラム無効化情報の無効化フラグを「１」に設定する（ステップＳ５１０）。その後、図１１のフローチャートに戻る。
【００８７】
＜その他の変形例＞
（１）本発明における被保護プログラムは、オリジナルプログラムの全体に難読化処理を施し、生成されたプログラムであってもよいし、オリジナルプログラムの一部分に難読化処理を施し、生成されたプログラムであってもよい。
（２）上記実施形態では、携帯電話機１０のプログラム記憶部１１１は、それぞれが異なるバイナリコードを有する複数の被保護プログラムを記憶する構成を備えるが、本発明において、プログラム記憶部１１１は、バイナリコードである被保護プログラムを記憶していることは必須ではなく、例えば、異なる難読化を施したソースプログラムである被保護プログラムを記憶している構成であってもよい。この場合、プログラム実行部１１５は、インタプリタを用い、各被保護プログラムを実行するように構成してもよい。
【００８８】
（３）上記実施形態では、携帯電話機１０の改ざん検出部４０２は、一方向関数を用いて改ざん検出を行う構成を有するが、本発明における改ざん検出の方法は一方向関数に限定されないのは勿論であり、例えば、予め各被保護プログラムを暗号化した暗号化被保護プログラムを記憶しており、実行プログラム選択部１１２により選択された被保護プログラムに、同じ暗号化処理を施した結果と、予め記憶している暗号化被保護プログラムとを比較することにより、改ざんの有無を検出する方法などを用いてもよい。
【００８９】
（４）上記実施形態では、携帯電話機１０の実行プログラム選択部１１２は、図１３に示したプログラム選択処理１、又は図１４に示したプログラム選択処理２を実施することにより無効化されていない１つの被保護プログラムを選択する構成を有するが、本発明における被保護プログラムの選択方法は、これらに限定されず、例えば、以下のような場合も本発明に含まれる。
【００９０】
（ａ）実行プログラム選択部１１２は、予め所定の選択順序を記憶しており、当該選択順序に応じて実行すべき被保護プログラムを選択してもよい。
具体的には、実行プログラム選択部１１２は、選択順序に応じて並べられたプログラム識別子を記憶しており、暗号化コンテンツの復号要求が発生すると、実行プログラム選択部１１２は、選択順序が上位のプログラム識別子を読み出す。続いて、実行プログラム選択部１１２は、無効化リスト記憶部１１７から無効化リスト５００を読み込み、先に読み出したプログラム識別子により識別される被保護プログラムが、無効化されているか否かを判断する。無効化されていない場合には、当該被保護プログラムを選択し、プログラム先頭アドレス、及びプログラムサイズを、プログラムロード部１１３へ通知する。無効化されている場合には、実行プログラム選択部１１２は、選択順位が次のプログラム識別子を読み出し、上記の処理を繰り返す。このように、実行プログラム選択部１１２は、所定の選択順序に応じて、無効化されていない１の被保護プログラムを選択する。
【００９１】
（ｂ）実行プログラム選択部１１２は、予め各被保護プログラムの難読化の程度に応じた選択順序を記憶しており、当該選択順序に応じて実行すべき被保護プログラムを選択してもよい。上記実施形態で述べたように、各被保護プログラムの難読化の程度は、ダミーコードの追加サイズや、制御構造の複雑化パターン、モジュールの分割数、暗号化アルゴリズムの強度等によりそれぞれ異なっており、難読化の程度が高いほど、被保護プログラムの解析や改ざんは困難になる。
【００９２】
実行プログラム選択部１１２は、難読化の程度が高い順にプログラム識別子を記憶しており、暗号化コンテンツの復号要求が発生すると、実行プログラム選択部１１２は、上位の、即ち難読化の程度が高い被保護プログラムのプログラム識別子を読み出す。その後、実行プログラム選択部１１２は、（ａ）と同様の処理を行い、難読化の程度の高い被保護プログラムから順に、無効化されていない１の被保護プログラムを選択する。
【００９３】
また、実行プログラム選択部１１２は、難読化の程度が低い被保護プログラムから順に、無効化されていない１の被保護プログラムを選択するように構成してもよい。これは、一般的に難読化の程度の高い被保護プログラムほど、実行速度が遅くなるので、不正解析を行わない善意のユーザにとっては、実行速度の速いプログラム、即ち、難読化の程度の低いプログラムから優先的に選択される方が望ましいからである。
【００９４】
また、難読化の程度に依らず、実際の実行速度が速い順に、無効化されていない１の被保護プログラムを選択するように構成してもよい。この場合、実行プログラム選択部１１２が、各被保護プログラムを識別するプログラム識別子と対応付けて、各被保護プログラムの実行速度を示す情報を記憶していてもよいし、携帯電話機１０が被保護プログラムをダウンロードする都度、テスト実行を行い、ダウンロードした被保護プログラムの実行速度を測定するように構成してもよい。
【００９５】
（５）上記実施形態では、改ざん検出部４０２は、被保護プログラムがプログラムロード領域１１４にロードされたときに改ざん検出値の算出を行い、改ざんの有無を判定する構成を有するが、発明における被保護プログラムの改ざん検出は、被保護プログラムがロードされる前にプログラム記憶部１１１に記憶されているプログラムに対して行ってもよいし、被保護プログラムの実行前に行ってもよいし、ロードされたプログラムに対して実行中定期的に行ってもよい。
【００９６】
（６）上記実施の形態では、不正解析検出部１１６の不正解析通知部４０３は、デバッガ検出部４０１及び改ざん検出部４０２の何れかから、不正解析を検出した旨の通知を受け付けると、無条件でプログラム実行部１１５に対し、被保護プログラムの実行中止を指示すると共に、不正解析ログ情報を作成する構成を有するが、例えば、以下のような場合であっても、本発明に含まれる。
【００９７】
不正解析通知部４０３は、予め所定数を示す閾値を保持している。不正解析通知部４０３は、デバッガ検出部４０１及び改ざん検出部４０２から不正解析を検出した旨の通知を受け付ける都度、その回数をカウントする。カウントしている回数が保持している閾値を超えると、不正解析検出部４０３は、プログラム実行部１１５に対し、被保護プログラムの実行中止を指示すると共に、不正解析ログ情報を作成するように構成してもよい。これにより、善意のユーザの誤操作が不正解析と判定され、直ちに実行中のプログラムが停止することを防止することができる。
【００９８】
（７）上記実施形態では、不正解析が検出（デバッガ検出又は改ざん検出）された被保護プログラムは、無効化リストの無効化フラグを「０」から「１」に書き換えることにより無効化される構成を有するが、本発明におけるプログラムの無効化は、無効化フラグの書き換えに加えて、プログラム記憶部１１１内の被保護プログラムをゼロクリアしたり、乱数データでメモリを上書きしたりすることにより、実際にプログラムが実行されないようにしてもよい。このように、解析された可能性のある被保護プログラムを実行不能にすることで、ユーザの誤作動等により、無効化したはずの被保護プログラムが再度実行される危険を低減することができる。
【００９９】
また、無効化された被保護プログラムの無効化フラグを「１」に書き換える構成に換えて、無効化リストからプログラム無効化情報を削除するように構成してもよい。無効化リストからプログラム無効化情報を削除することにより、無効化された被保護プログラムのアドレス等に係る情報が削除されるので、ユーザの誤作動等により、無効化したはずの被保護プログラムが再度実行される危険を低減することができる。
【０１００】
また、上記実施形態では、被保護プログラムが無効化されているか否かを無効化フラグにより判定する構成を有するが、この構成は必須ではなく、フラグに換えて、他の情報により判定する場合も本発明に含まれる。
（８）本発明における無効化リストには、正当な機関から発行された署名データが付加されていてもよい。この場合、実行プログラム選択部１１２は、ステップＳ１０１（図１１）で無効化リストを読み込んだ後、署名データの検証を行い、署名データの検証に成功した場合、ステップＳ１０２以降の処理を継続し、署名データの検証に失敗した場合、即ち無効化リストが不正である場合には、ステップＳ１０２以降の処理を行わないように構成してもよい。この構成によると、無効化されている被保護プログラムが。無効化リストの改ざんにより無効化されていないものと判断されて、実行されるのを防止することができる。
【０１０１】
（９）上記実施形態では、保護対象プログラムは、暗号化コンテンツ復号プログラムであるオリジナルプログラム２００のみであるが、本発明においては、保護対象のプログラムは複数存在してもよい。
この場合、複数の保護対象プログラムのそれぞれについて、複数の被保護プログラムが生成され、プログラム記憶部１１１には、これら複数の被保護プログラムが記憶されているものとする。また、無効化リスト記憶部１１７には、保護対象プログラム毎にそれぞれ無効化リストが記憶されているものとする。
【０１０２】
（１０）本発明においては、携帯電話機１０がプログラム更新サーバ２０からダウンロードした被保護プログラムは、プログラム記憶部１１１内の、無効化されている被保護プログラムが記憶されている領域に上書きしてもよいし、プログラム記憶部１１１内の他の領域に記憶してもよい。これにより、無効化された被保護プログラムの消去と新たな被保護プログラムの追加とを一度に行うことができる。また、無効化された被保護プログラムの記憶領域を、追加する新たな被保護プログラムの記憶領域として再利用するので、プログラム記憶部１１１の容量を有効に利用することができる。
【０１０３】
（１１）上記実施形態において、携帯電話機１０は、プログラム記憶部１１１に記憶されている全ての被保護プログラムが無効化されていると判断してから、プログラム更新サーバから新たな被保護プログラムをダウンロードする構成を有するが、この構成は必須ではなく、プログラム更新サーバから被保護プログラムをダウンロードするタイミングについては特に限定しない。例えば、１つの被保護プログラムが無効化される都度、携帯電話機１０は、プログラム更新サーバ２０から新たな被保護プログラムをダウンロードしてもよい。
【０１０４】
また、携帯電話機１０は、プログラム記憶部１１１に記憶されている全ての被保護プログラムが無効化されておらず、有効な被保護プログラムが残っている状態であっても、プログラム更新サーバ２０から新たな被保護プログラムをダウンロードしてもよい。例えば、プログラム記憶部１１１に記憶されている有効な被保護プログラムの数が所定数以下になったら場合、携帯電話機１０が過去の選択履歴を保持し、同じ被保護プログラムが選択される確率が所定値以上になった場合等に、新たな被保護プログラムをダウンロードするように構成してもよい。
【０１０５】
この構成によると、携帯電話機１０は、有効な被保護プログラムの数が減ってくると、新しい被保護プログラムを取得するので、実行する被保護プログラムをある程度ランダムに選択することが保証できる。
（１２）本発明において、携帯電話機１０とプログラム更新サーバ２０との間の通信は、安全な通信路、所謂ＳＡＣ（Ｓｅｃｕｒｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｈａｎｎｅｌ）を確立し、ＳＡＣを介して、被保護プログラムのダウンロード処理、不正解析ログ情報の送受信処理を行うよう構成してもよい。なお、ＳＡＣについては、Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ（ＳＳＬ）等で利用されており、既知の技術で実現可能であるから、説明は省略する。
【０１０６】
（１３）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ‐ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ‐ＲＯＭ、ＤＶＤ‐ＲＡＭ、ＢＤ（Ｂｌｕ‐ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０１０７】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０１０８】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（１４）また本発明は、上記実施形態における携帯電話機１０及びプログラム更新サーバ２０の機能ブロックの一部又は全てが集積回路であるＬＳＩとして実現される場合も本発明に含まれる。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されてもよい。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０１０９】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路で実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field ProgrammableGate Array）やＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
更には、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応などが可能性として有り得る。
【０１１０】
（１５）前記実施形態及び前記変形例をそれぞれ組み合わせた構成も、本発明に含まれる。
【産業上の利用可能性】
【０１１１】
本発明は、デジタルコンテンツを配信するサービス業において、不正解析により秘匿にすべき情報が暴露されるのを防止する仕組みとして利用することができる。また、本発明は、デジタルコンテンツを再生する再生装置を生産する製造業においても利用することができる。
【図面の簡単な説明】
【０１１２】
【図１】セキュア処理システム１の構成を示すシステム構成図である。
【図２】携帯電話機１０の構成を機能的に示す機能ブロック図である。
【図３】プログラム記憶部１１１に記憶されている被保護プログラムを示す図である。
【図４】セキュアプログラムの特徴について説明するための図である。
【図５】不正解析検出部１１６の機能を説明するための図である。
【図６】改ざん検出部４０２が保持する改ざん検出値テーブル４１０のデータ構成を示す図である。
【図７】不正解析ログ情報４２０のデータ構成を示す図である。
【図８】無効化リスト５００のデータ構成を示す図である。
【図９】プログラム更新サーバ２０の構成を機能的に示す機能ブロック図である。
【図１０】更新用プログラム記憶部６０４に記憶されている被保護プログラムを示す図である。
【図１１】セキュア処理システム１全体の動作を示すフローチャートである。
【図１２】セキュア処理システム１における被保護プログラムの更新処理を示すフローチャートである。
【図１３】セキュア処理システム１におけるプログラム選択処理１の動作を示すフローチャートである。
【図１４】セキュア処理システム１におけるプログラム選択処理２の動作を示すフローチャートである。
【図１５】セキュア処理システム１における不正検出時の処理を示すフローチャートである。
【符号の説明】
【０１１３】
１    セキュア処理システム
１０    携帯電話機
２０    プログラム更新サーバ
３０    ネットワーク
１０１    アンテナ
１０２    送受信部
１０３    通信制御部
１０４    記憶部
１０５    表示部
１０６    操作部
１０７    スピーカ
１０８    マイク
１０９    セキュア処理部
１１１    プログラム記憶部
１１２    実行プログラム選択部
１１３    プログラムロード部
１１４    プログラムロード領域
１１５    プログラム実行部
１１６    不正解析検出部
１１７    無効化リスト記憶部
１１８    無効化リスト更新部
４０１    デバッガ検出部
４０２    改ざん検出部
４０３    不正解析通知部
６０１    送受信部
６０２    制御部
６０３    不正解析ログ情報記憶部
６０４    更新用プログラム記憶部
【図１】
0004796050.tif 000002
【図２】
0004796050.tif 000003
【図３】
0004796050.tif 000004
【図４】
0004796050.tif 000005
【図５】
0004796050.tif 000006
【図６】
0004796050.tif 000007
【図７】
0004796050.tif 000008
【図８】
0004796050.tif 000009
【図９】
0004796050.tif 000010
【図１０】
0004796050.tif 000011
【図１１】
0004796050.tif 000012
【図１２】
0004796050.tif 000013
【図１３】
0004796050.tif 000014
【図１４】
0004796050.tif 000015
【図１５】
0004796050.tif 000016