(57)【要約】  情報処理装置は、第１のプロセッサと、情報保護部と、情報保護部と第１のプロセッサとを接続する第１の通信路とを有する。情報保護部は、情報保護部を第１の通信路と接続するインターフェース回路と、第２のプロセッサと、第１のプロセッサから参照できず、一方、前記第２のプロセッサから参照可能な第１のメモリとを有する。インターフェース回路は、第１の通信路から受信したコマンドが、情報保護部宛てのコマンドである場合、そのコマンドを第２のプロセッサに渡し、一方、第１の通信路から受信したコマンドが情報保護部宛てのコマンドでない場合、そのコマンドを第２のプロセッサに渡さない。そして第２のプロセッサは、第１のプロセッサから第１の通信路を介して情報保護部宛てのコマンドを受信すると、第１のメモリに記憶された情報に関する処理を実行する。
2015045172.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
情報保護部と、
前記情報保護部と前記第１のプロセッサとを接続する第１の通信路とを有し、
前記情報保護部は、
前記情報保護部を前記第１の通信路と接続するインターフェース回路と、
第２のプロセッサと、
前記第１のプロセッサから参照できず、一方、前記第２のプロセッサから参照可能な第１のメモリとを有し、
前記インターフェース回路は、前記第１の通信路から受信したコマンドが、前記情報保護部宛てのコマンドである場合、当該コマンドを前記第２のプロセッサに渡し、一方、前記第１の通信路から受信したコマンドが、前記情報保護部宛てのコマンドでない場合、当該コマンドを前記第２のプロセッサに渡さず、
前記第２のプロセッサは、前記第１のプロセッサから前記第１の通信路を介して前記情報保護部宛てのコマンドを受信すると、前記第１のメモリに記憶された情報に関する処理を実行する、
情報処理装置。
【請求項２】
前記インターフェース回路は、前記情報保護部内から発せられた信号のうち、前記情報保護部の外部を宛先とする宛先情報を含む信号を前記第１の通信路へ出力し、一方、前記情報保護部の外部を宛先とする宛先情報を含まない信号を前記第１の通信路へ出力しない、請求項１に記載の情報処理装置。
【請求項３】
前記インターフェース回路と前記第２のプロセッサとは第２の通信路を介して互いに通信可能に接続され、
前記第１のメモリは、前記インターフェース回路と接続されていない第３の通信路を介して前記第２のプロセッサと互いに通信可能に接続される、請求項１に記載の情報処理装置。
【請求項４】
前記第１のメモリは、プログラムを記憶し、
前記第２のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取ると、前記プログラムを第１の部分と第２の部分に分割し、前記プログラム中の前記第１の部分を示す情報と前記第２の部分とを前記第１のプロセッサへ出力し、前記第１のプロセッサから前記情報保護部宛てのコマンドとして前記第１の部分を実行するコマンドを受け取ると前記第１の部分の処理を実行する、請求項１〜３の何れか一項に記載の情報処理装置。
【請求項５】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、
前記第２のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取る度に、前記乱数発生回路に乱数を発生させ、前記第１のメモリに記録された乱数と前記第２の部分の対応関係を表すテーブルを参照して前記発生した乱数に対応する前記第２の部分を特定することで、前記プログラムの前記第２の部分を変更する、請求項４に記載の情報処理装置。
【請求項６】
前記プログラムの前記第２の部分は複数のモジュールを有し、前記第２のプロセッサは、前記乱数に基づいて、前記プログラムの実行の際の前記複数のモジュールの呼び出し順を変更することなく、前記複数のモジュールの記述順序を入れ替える、請求項５に記載の情報処理装置。
【請求項７】
前記第２のプロセッサは、前記乱数に基づいて、前記第２の部分の処理に無関係な処理を実行するかまたは何の処理もしないダミーコードの数及び該ダミーコードごとの挿入位置を決定し、該決定した数の前記ダミーコードのそれぞれを、前記第２の部分の前記決定した挿入位置に挿入する、請求項５に記載の情報処理装置。
【請求項８】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、かつ、前記プログラムは複数のモジュールを有し、
前記第２のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取る度に、前記乱数発生回路に乱数を発生させ、前記第１のメモリに記録された乱数と前記第２の部分に属するモジュールの対応関係を表すテーブルを参照して前記発生した乱数に対応する前記第２の部分に属するモジュールを特定することで、前記複数のモジュールのうち前記第１の部分に属するモジュールと前記第２の部分に属するモジュールの組み合わせを変更する、請求項４に記載の情報処理装置。
【請求項９】
前記プログラムの前記第２の部分を記憶する第２のメモリをさらに有し、
前記第２のプロセッサは、前記プログラムの前記第２の部分からスキャン演算値を算出するスキャンプログラムを生成し、前記スキャンプログラムを用いて算出した第１のスキャン演算値を前記第１のメモリに記憶し、前記スキャンプログラムを前記第１のプロセッサへ出力し、かつ、
前記第１のプロセッサが前記第２のメモリに対して前記スキャンプログラムを実行することにより得られた第２のスキャン演算値を含む前記情報保護部宛てのコマンドを受け取ると、前記第１のスキャン演算値と前記第２のスキャン演算値を比較し、前記第１のスキャン演算値と前記第２のスキャン演算値が異なる場合、前記第１のプロセッサへ前記プログラムの前記第２の部分が改ざんされていることを示す信号を送信する、請求項４〜８の何れか一項に記載の情報処理装置。
【請求項１０】
前記第２のプロセッサは、前記スキャンプログラムを変更し、前記スキャンプログラムが変更される度に変更後のスキャンプログラムを用いて前記第１のスキャン演算値を算出するとともに、該変更後のスキャンプログラムを前記第１のプロセッサへ出力する、請求項９に記載の情報処理装置。
【請求項１１】
前記第２のプロセッサは、前記プログラムを第１の部分と第２の部分に分割するときに、前記プログラムの前記第２の部分内に所定の演算を行う認証コードを追加するとともに、該所定の演算により得られた第１の値を前記第１のメモリに記憶し、かつ、
前記第１のプロセッサが前記プログラムの前記第２の部分の実行中に前記認証コードに達することにより該認証コードに従って前記所定の演算を行って得られた第２の値を含む前記情報保護部宛てのコマンドを受け取ると、前記第１の値と前記第２の値を比較し、前記第１の値と前記第２の値が異なる場合、前記第１のプロセッサへ前記プログラムを停止させることを示す信号を送信する、請求項４に記載の情報処理装置。
【請求項１２】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、タイミング信号を生成するタイミング回路をさらに有し、
前記第２のプロセッサは、前記プログラムの前記第２の部分を前記第１のプロセッサへ出力してからの経過時間を前記タイミング信号に基づいて計時し、該経過時間が所定時間に達しても、前記第２の値を含む前記情報保護部宛てのコマンドを受け取っていない場合、前記第１のプロセッサへ前記プログラムを停止させることを示す信号を送信する、請求項１１に記載の情報処理装置。
【請求項１３】
前記第１のメモリは、暗号鍵を記憶し、
前記第２のプロセッサは、前記暗号鍵を用いて暗号化されたプログラムを含む前記情報保護部宛てのコマンドを受信すると、当該暗号化されたプログラムを前記暗号鍵を用いて復号する、請求項１〜３の何れか一項に記載の情報処理装置。
【請求項１４】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、かつ、前記第１のメモリは、秘密鍵と公開鍵のペアのうちの公開鍵とを記憶し、
前記第２のプロセッサは、前記暗号鍵を前記公開鍵を用いて暗号化して得られた鍵と前記乱数発生回路により発生された乱数とを、前記秘密鍵と前記公開鍵のペアを記憶するサーバへ送信し、前記サーバから受信した値を前記ペアの前記公開鍵を用いて復号して得られた値と前記乱数が一致すると、前記暗号鍵を前記暗号化されたプログラムの復号に利用する、請求項１３に記載の情報処理装置。
【請求項１５】
前記第１のプロセッサが参照可能であり、かつ、暗号化された情報を記憶する第２のメモリをさらに有し、
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、入力された値に対して所定の演算を行う暗号回路をさらに有し、
前記第１のメモリは、過去の所定時点における前記暗号化された情報を前記暗号回路に入力することにより得られた第１の値を記憶し、
前記第２のプロセッサは、前記第１のプロセッサから前記第２のメモリに記憶された前記暗号化された情報を含む前記情報保護部宛てのコマンドを受け取ると、当該コマンドに含まれる前記暗号化された情報を前記暗号回路に入力することにより第２の値を求め、前記第１の値と前記第２の値が異なっていると前記第１のプロセッサへ前記第２のメモリに記憶されている前記暗号化された情報が改ざんされていることを示す信号を送信する、請求項１〜３の何れか一項に記載の情報処理装置。
【請求項１６】
前記第１のメモリ及び前記第２のメモリの何れも不揮発性メモリを有し、前記第２のメモリの不揮発性メモリの容量よりも前記第１のメモリの不揮発性メモリの容量の方が小さい、請求項１５に記載の情報処理装置。
【請求項１７】
前記情報保護部と前記第１のプロセッサは一つの集積回路として実装される、請求項１〜１６の何れか一項に記載の情報処理装置。
【請求項１８】
第１のプロセッサと、情報保護部と、前記情報保護部と前記第１のプロセッサとを接続する通信路とを有し、前記情報保護部は、前記情報保護部を前記通信路と接続するインターフェース回路と、第２のプロセッサと、前記第１のプロセッサから参照できず、一方、前記第２のプロセッサから参照可能なメモリとを有する情報処理装置における情報処理方法であって、
前記インターフェース回路は、前記通信路を介して受信したコマンドが前記情報保護部宛てのコマンドか否か判定し、
前記受信したコマンドが前記情報保護部宛てのコマンドである場合、前記第２のプロセッサは、当該コマンドに従って、前記メモリに記憶された情報に関する処理を実行する、
ことを含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、情報の漏洩または不正な改ざんを防止する情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
近年、携帯端末に代表されるように、プロセッサを含む一つのシステムＬＳＩに装置の主要な機能が実装された装置が開発されている。このような装置において、システムＬＳＩ上で動作するオペレーションシステムなどのソフトウェア、または、他の装置と情報を交換するためのインタフェースが開示されていることがある。オペレーションシステムまたはインターフェースが開示されているため、様々なサードパーティのソフトウェア開発業者がその装置上で動作する独自ソフトウェアを開発することが可能となっている。【０００３】
しかし、インタフェースまたはオペレーションシステムが開示されることにより、ハッカーなど悪意ある第三者が、プロセッサ上で動作するソフトウェアを違法に改ざんすることが容易となる。さらに、悪意ある第三者が、改ざんされたソフトウェアを利用して装置に記憶されている個人情報または著作権付きコンテンツといった機密情報を不正にコピーしたり、そのような機密情報を書き換えたり、あるいは、装置を不正利用することが容易になる。【０００４】
そこで、そのような不正なソフトウェアの改ざん及び機密情報の不正コピーなどを防止するための様々な技術が提案されている。例えば、システムＬＳＩに、暗号回路または認証回路といった、セキュリティー機能を司る回路が個別に実装されたものが提案されている。このような実装は、装置外部からのハッキング攻撃には有効であるが、セキュリティー機能を制御する回路がハッキングするような装置内部からのハッキング攻撃には、脆弱である。【０００５】
例えば、コンテンツの不正コピーを防止するために、コンテンツは暗号化されて伝送または保存される。しかし、装置がそのコンテンツを再生する際に暗号復号鍵が盗まれるとコンテンツが不正にコピーされるおそれがある。例えば、プロセッサが暗号復号鍵を使用してコンテンツを復号することを想定する。この場合、外部からアクセス可能なプロセッサまたは仕様が開示されているオペレーションシステムなどオープンな環境でプロセッサが暗号復号鍵を扱うと、ハッカーにその暗号復号鍵が知られてしまう危険性がある。【０００６】
また、システムＬＳＩに含まれる、セキュリティー機能を司る回路と別個に設けられた揮発性または不揮発性のメモリ領域は、基本的に第三者が自由にアクセスできる領域である。そのため、ハッカーがそのようなメモリ領域に何らかの手段によってハッキングプログラムを記憶させる可能性がある。このような場合、ハッカーは、メモリ領域に記憶されている正当なプログラムまたは機密情報（鍵情報及び個人情報を含む）をハッキング（例えば、不正改ざんまたは不正アクセス）できる。【０００７】
例えば、不揮発性のメモリ領域に暗号化された状態で個人情報などが記憶されていても、その個人情報を復号する鍵も同じメモリ領域に記憶されていれば、ハッカーにメモリ領域内の情報を解析されて個人情報をハッキングされる可能性がある。さらに、個人情報の復号を不揮発性メモリ領域内の独自の復号プログラムによって実現したとしても、やはりそのプログラムをハッカーに解析されて、情報が漏えいするおそれがある。あるいは、ハッカーは、その独自プログラムを解析し、個人情報を漏えいするようにその独自プログラムを改ざんする可能性もある。【０００８】
このように、セキュリティー機能を司る回路と別個に設けられたメモリ領域に記憶されている機密情報に不正アクセスすることで、悪意のある第三者が機密情報を盗み出すおそれがある。あるいは、悪意のある第三者が、機密情報を扱うプログラムを機密情報が漏えいするように不正に改ざんすることで間接的に機密情報が盗まれる可能性がある。【０００９】
また、装置内の情報を保護するために、セキュリティー機能の一部を司るセキュリティーカードを、システムＬＳＩに接続することも提案されている（例えば、特許文献１を参照）。例えば、デジタルテレビ放送では、圧縮された映像ストリームがスクランブル鍵を用いて暗号化されているとともに、放送される映像ストリームの中に数秒毎に更新されるその映像ストリームの復号に利用されるスクランブル鍵が含まれる。一方、スクランブル鍵を復号するワーク鍵がセキュリティーカードに内蔵されている。そしてチューナーにより選択された番組（チャンネル）情報（上記のストリーム）の一部は、システムＬＳＩのメインプロセッサ上で動作するプログラムによってセキュリティーカードに入力される。そしてセキュリティーカードから復号されたスクランブル鍵が出力される。復号されたスクランブル鍵をメインプロセッサが受け取り、例えば、暗号回路に入力する。暗号回路には、スクランブル鍵とともにスクランブル鍵で暗号化された圧縮映像ストリームが入力され、その暗号回路は、圧縮映像ストリームを復号して出力する。復号された圧縮映像ストリームは、映像処理回路に入力されて伸長処理され、ＹＰｂＰｒ映像信号、あるいはＲＧＢ映像信号に変換される。その映像信号がグラフィックス回路に入力される。グラフィックス回路は、例えば、番組タイトルなどの付加情報をその映像信号に合成して、最終的に得られた映像がモニターに出力される。モニターは、その映像を表示する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００７−２８１８１３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
セキュリティーカードは、外部からアクセスしたり、改ざんが極めて困難なセキュア・モジュール（耐tamperモジュール）のため、セキュリティカードに内蔵されたワーク鍵などの機密情報が漏洩する可能性は低い。しかし、上記の映像処理の大部分は、メインプロセッサが、セキュリティーカードとは別個に設けられたメモリ領域を用いて行っているため、ハッキングされる可能性がある。【００１２】
そこで本明細書は、機密情報への不正なアクセスをより困難にする情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
一つの実施形態によれば、情報処理装置が提供される。この情報処理装置は、第１のプロセッサと、情報保護部と、情報保護部と第１のプロセッサとを接続する第１の通信路とを有する。情報保護部は、情報保護部を第１の通信路と接続するインターフェース回路と、第２のプロセッサと、第１のプロセッサから参照できず、一方、前記第２のプロセッサから参照可能な第１のメモリとを有する。インターフェース回路は、第１の通信路から受信したコマンドが、情報保護部宛てのコマンドである場合、そのコマンドを第２のプロセッサに渡し、一方、第１の通信路から受信したコマンドが情報保護部宛てのコマンドでない場合、そのコマンドを第２のプロセッサに渡さない。そして第２のプロセッサは、第１のプロセッサから第１の通信路を介して情報保護部宛てのコマンドを受信すると、第１のメモリに記憶された情報に関する処理を実行する。【００１４】
本発明の目的及び利点は、請求項において特に指摘されたエレメント及び組み合わせにより実現され、かつ達成される。
上記の一般的な記述及び下記の詳細な記述の何れも、例示的かつ説明的なものであり、請求項のように、本発明を制限するものではないことを理解されたい。
【発明の効果】
【００１５】
本明細書に開示された情報処理装置は、機密情報への不正なアクセスをより困難にすることができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、情報処理装置の一例であるシステムＬＳＩの概略構成図である。
【図２】図２は、情報保護部のハードウェア構成図である。
【図３】図３は、情報保護部により実行される情報処理の動作フローチャートである。
【図４】図４（Ａ）及び図４（Ｂ）は、それぞれ、プログラムＡに属するモジュールとプログラムＢに属するモジュールの一例を示す図である。
【図５】図５（Ａ）及び図５（Ｂ）は、それぞれ、プログラムＢの一例を示す図である。
【図６】図６（Ａ）及び図６（Ｂ）は、それぞれ、プログラムＢの他の一例を示す図である。
【図７】図７は、スキャンプログラムのコードの一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、図を参照しつつ、様々な実施形態による情報処理装置について説明する。この情報処理装置は、例えば、システムＬＳＩとして実装され、その一部に、機密情報を扱う情報保護部を有する。情報保護部は、機密情報及び機密情報を扱うプログラムを記憶するための揮発性のメモリ回路及び不揮発性のメモリ回路とともに、機密情報を扱うプログラムの少なくとも一部が動作するプロセッサを有する。情報保護部の外部からは、情報保護部内のメモリへのアクセスができないようになっている。メインのプロセッサから情報保護部を呼び出すコマンドをバスを介して情報保護部が受け取ると、情報保護部内のプロセッサがそのコマンドを解析して、情報保護部内のメモリの必要な領域にアクセスする。そしてこの情報保護部は、外部から要求された機密情報を完全に再生するためには、情報保護部にアクセスする必要がある形式にして、その機密部を外部へ出力する。あるいは、この情報保護部は、プログラムの一部のみを外部のメモリ領域に展開させ、そのプログラムの他の一部を情報保護部内のメモリ領域に展開する。これにより、この情報処理装置は、機密情報及びプログラムが解析されたり、あるいは改ざんされることを防止する。
【００１８】
図１は、情報処理装置の一例であるシステムＬＳＩの概略構成図である。
システムＬＳＩ１は、例えば、一つの集積回路であり、通信回路２と、無線処理回路３と、映像処理回路４と、グラフィックス処理回路５と、揮発性メモリ回路６と、不揮発性メモリ回路７と、メインプロセッサ８と、情報保護部９とを有する。システムＬＳＩ１が有するこれらの各部は、バス１０を介して互いに通信可能に接続されている。このシステムＬＳＩ１は、例えば、携帯電話機、携帯情報端末、コンピュータまたはテレビ受信機といった様々な装置に実装可能である。
【００１９】
通信回路２は、システムＬＳＩ１を通信ネットワークと接続するためのインターフェース回路であり、その通信ネットワークの規格に従って情報を送信または受信する。通信ネットワークの規格は、例えば、Ethernet（登録商標）とすることができる。そして通信回路２は、通信ネットワークを介して受信した情報を、メインプロセッサ８または情報保護部９へ渡す。あるいは、通信回路２は、メインプロセッサ８または情報保護部９から受け取った情報を通信ネットワークへ出力する。
【００２０】
無線処理回路３は、無線電波によって搬送され、アンテナ（図示せず）を介して受信した無線信号に含まれる情報を取り出して、メインプロセッサ８または情報保護部９へ渡す。無線電波は、例えば、デジタル放送の電波であり、無線信号は、例えば、１以上のチャネルについての、暗号化され、かつ、圧縮された映像ストリームを含む。この場合、無線処理回路３は、チューナーであり、無線信号から、メインプロセッサ８からの制御に従って選択されたチャネルの暗号化され、かつ、圧縮された映像ストリームを取り出す。そして無線処理回路３は、その暗号化され、かつ、圧縮された映像ストリームをメインプロセッサ８または情報保護部９へ渡す。
あるいは、無線処理回路３は、所定の無線通信規格に従って、基地局から受信した無線信号に含まれる各種の情報を取り出したり、システムＬＳＩ１が実装された装置から基地局へ送信する無線信号を生成する回路であってもよい。
【００２１】
映像処理回路４は、メインプロセッサ８または情報保護部９により復号された、圧縮された映像ストリームを、その映像ストリームを圧縮するのに用いられた圧縮符号化方式に従って伸長し、映像データを再現する。映像処理回路４は、例えば、Moving Picture Experts Group (MPEG)-2、MPEG-4、H.264 MPEG-4 AVCなどの圧縮符号化方式で圧縮された映像ストリームを伸長する。映像処理回路４は、再現された映像ストリームに含まれる各ピクチャを表示順序に従ってグラフィックス処理回路５へ渡す。
【００２２】
グラフィックス処理回路５は、映像処理回路４から受け取った各ピクチャを、表示順序に従って、システムＬＳＩ１が実装された装置の表示装置（図示せず）に表示させる。
【００２３】
揮発性メモリ回路６は、例えば、ダイナミックメモリを有し、システムＬＳＩ１上で実行される様々なプログラムによって扱われる情報を一時的に記憶する。
【００２４】
不揮発性メモリ回路７は、例えば、フラッシュメモリ（登録商標）といった、不揮発性のランダムアクセス可能なメモリ回路及びマスクＲＯＭといった読み出し専用のメモリ回路を有する。そして不揮発性メモリ回路７は、システムＬＳＩ１への電力供給が停止されても消去されないことが望まれる様々な情報及びシステムＬＳＩ１で動作する、機密情報を扱わない様々なプログラムを記憶する。さらに、揮発性メモリ回路６または不揮発性メモリ回路７は、情報保護部９と連携して動作するプログラムの一部を記憶してもよい。
【００２５】
メインプロセッサ８は、例えば、論理演算回路及び数値演算回路を有し、システムＬＳＩ１で動作する様々なプログラムを実行する。またメインプロセッサ８は、機密情報を扱う場合、あるいは、不正なアクセスを防止したいプログラムを実行する場合、情報保護部９へ、実行中のプログラムに応じたコマンドを送信する。情報保護部９へアクセスするためのコマンドは、例えば、所定長または可変長の持つビット列であり、その先頭部分に、情報保護部９へのコマンドであることを表す、所定長（例えば、4〜8ビット）のビット列で表されたコマンド識別情報を含む。さらに、そのコマンドは、例えば、コマンド識別情報に後続して、コマンドの種類を表す所定長（例えば、4〜8ビット）のビット列と、そのコマンドの実行に必要な情報を含む。コマンドの種類を表すビット列は、コマンドの種類ごとに一意に定められる。またメインプロセッサ８は、情報保護部９からそのプログラムの実行に必要な情報を受け取る。
【００２６】
情報保護部９は、セキュリティーに関する処理を行う装置であり、情報保護部９内に個人情報、暗号復号鍵といった機密情報及びプログラムなどを保持する。そして情報保護部９は、外部から情報保護部９内に記憶されている各種の機密情報またはプログラムにアクセスしたり、それら機密情報及びプログラムの改ざんが困難な耐Tamperモジュールである。
【００２７】
図２は、情報保護部９のハードウェア構成図である。情報保護部９は、インターフェース回路１１と、乱数発生回路１２と、マスター鍵生成回路１３と、暗号回路１４と、タイミング回路１５と、揮発性メモリ回路１６と、不揮発性メモリ回路１７と、サブプロセッサ１８とを有する。情報保護部９が有するこれらの各部は、情報保護部９内に形成されたバス２０を介して互いに通信可能に接続される。また、乱数発生回路１２、マスター鍵生成回路１３、暗号回路１４、タイミング回路１５、揮発性メモリ回路１６、及び不揮発性メモリ回路１７は、サブプロセッサ１８は参照可能となっているが、情報保護部９の外部から参照不可能となっている。具体的には、サブプロセッサ１８のみが、乱数発生回路１２、マスター鍵生成回路１３、暗号回路１４、タイミング回路１５、揮発性メモリ回路１６、及び不揮発性メモリ回路１７にアクセスするためのアドレス情報を知っている。一方、メインプロセッサ８など、情報保護部９の外部にあるユニットは、情報保護部９内のこれらの回路のアドレス情報を知らない。そしてサブプロセッサ１８は、情報保護部９内の回路の何れかにアクセスする場合には、そのアクセスする回路のアドレス情報を含むコマンドを生成してバス２０に出力する。
【００２８】
インターフェース回路１１は、情報保護部９をシステムＬＳＩ１のバス１０に接続するためのインターフェースである。そしてインターフェース回路１１は、バス１０を介して受け取ったビット列の先頭部分のビット列が、情報保護部９に対するコマンドであることを表すコマンド識別情報と一致すると、そのビット列をバス２０を介してサブプロセッサ１８へ渡す。またインターフェース回路１１は、サブプロセッサ１８からバス２０を介して受け取った情報またはプログラムの一部などをバス１０へ出力する。ただし、インターフェース回路１１は、情報保護部９内のサブプロセッサ１８以外の各部が出力する信号は情報保護部９の外へ出力しないように形成されてもよい。そのために、例えば、サブプロセッサ１８から情報保護部９の外へ出力される情報を含むビット列の先頭に、情報保護部９の外の機器を宛先とすることを表す所定長の識別ビット列がサブプロセッサ１８により付される。そしてインターフェース回路１１は、バス２０を流れるビット列のうち、その識別ビット列を含むビット列のみを情報保護部９の外へ出力する。
【００２９】
またインターフェース回路１１は、情報保護部９を初期化するための初期化コマンドをバス１０を介して受け取ると、その初期化コマンドをサブプロセッサ１８へ渡す。なお、初期化コマンドには、コマンドの種類を表すビット列として、情報保護部９を初期化するコマンドであることを表すビット列が含まれる。
なお、システムＬＳＩ１が有する複数の端子のうちの何れかの端子が、初期化コマンド入力用に、サブプロセッサ１８と接続されていてもよい。この場合には、その初期化コマンド入力用の端子を介して初期化コマンドが入力されることにより、情報保護部９は初期化される。
【００３０】
乱数発生回路１２は、所定の乱数発生方法に従って乱数を発生させる。なお、乱数発生回路１２によって採用される乱数発生方法は、ハードウェアまたはソフトウェアによって乱数を発生させる様々な乱数発生方法のうちの何れの方法であってもよい。乱数発生回路１２により発生された乱数は、例えば、プログラムの一部を情報保護部９の内部で動作するサブプログラムとメインプロセッサ８で動作する他のサブプログラムとに分割するために利用される。
【００３１】
マスター鍵生成回路１３は、所定のビット列で表されるマスター鍵を生成する。マスター鍵は、例えば、情報保護部９が扱う情報を暗号化または復号するために用いられる。またマスター鍵は、情報保護部９の個別鍵などの安全性を保つために、その個別鍵をマスター鍵とともに暗号化するためにも利用可能である。
【００３２】
暗号回路１４は、所定の暗号化方式に従って、情報保護部９が扱う情報を暗号化し、または、暗号化された情報を復号する。なお、暗号回路１４で採用される暗号化方式は、DES暗号またはAES暗号といった様々な共通鍵暗号方式の何れであってもよく、あるいは、RSA暗号または楕円DSAといった、様々な公開鍵暗号方式の何れであってもよい。また暗号回路１４は、複数の暗号化方式に対応していてもよい。さらに、暗号回路１４は、ハッシュ関数に従って様々な情報のハッシュ値を演算する回路を有していてもよい。
なお、サブプロセッサ１８が、サブプロセッサ１８上で動作するプログラムに従って、情報の暗号化、復号またはハッシュ値の算出などの処理を行う場合、暗号回路１４は省略されてもよい。
【００３３】
タイミング回路１５は、情報保護部９内の各部にタイミング信号を供給する回路である。例えば、システムＬＳＩ１全体を駆動するクロック信号がタイミング回路１５の入力用端子を介して入力されることにより、タイミング回路１５は、そのクロック信号によって駆動される。情報保護部９の外部から直接タイミング回路１５にアクセスできないので、タイミング回路１５から供給されるタイミング信号は、改ざんが困難な信頼性が高い信号となる。そのため、タイミング回路１５から供給されるタイミング信号は、情報保護部９の外部で利用されてもよい。
【００３４】
タイミング回路１５が供給するタイミング信号（以下では、便宜上、高信頼タイミング信号と呼ぶ）は、例えば、コンテンツの視聴期限などを確認するために、サブプロセッサ１８により利用される。あるいは、高信頼タイミング信号は、サブプロセッサ１８上で動作する各種のDigital Rights Management(DRM)用プログラムまたはConditional Access System(CAS)プログラムによって利用されてもよい。
【００３５】
タイミング回路１５の初期化は、例えば、下記の手順に従って実行される。
先ず、システムＬＳＩ１が実装された装置に電源が投入される。このとき、情報保護部９のサブプロセッサ１８が、揮発性メモリ回路１６または不揮発性メモリ回路１７に記憶されているDRMプログラムに従って、通信ネットワークまたは基地局を経由してDRMサーバ（図示せず）に接続する。そして、サブプロセッサ１８は、その接続時点でのDRMサーバが供給する信頼性の高い時刻情報を取得する。その際、セキュリティーを向上するために、DRMサーバとシステムＬＳＩ１が実装された装置間は、所定の暗号化通信方式などに従って通信が行われてもよい。そしてサブプロセッサ１８は、その時刻情報に示された時刻でタイミング回路１５を初期化する。初期化以降は、タイミング回路１５が、クロック信号の周波数に従って、高信頼タイミング信号を出力することで、システムＬＳＩ１が実装された装置とDRMサーバ間の接続を無くす。これにより、通信ネットワークの負荷が軽減される。
【００３６】
なお、いろいろなシステムＬＳＩ１のクロック周波数がDRMサーバのクロック周波数と異なることもある。この場合、以下の手順に従って、高信頼タイミング信号は補正されてもよい。
・システムＬＳＩ１からDRMサーバへの１回目のアクセスによって、情報保護部９がDRMサーバから１回目の時刻情報を受信する。そしてサブプロセッサ１８は、その１回目の時刻情報に示された時刻でタイミング回路１５を初期化する。ここで、例えば、１回目の時刻情報に示された時刻を表す値が「100」であったとする。この場合、タイミング回路１５から出力される高信頼タイミング信号の初期値も<100>に設定される。
・その後、システムＬＳＩ１は、DRMサーバに再接続し、２回目の時刻情報を受信する。ここで、２回目の時刻情報に示された時刻を表す値が「120」であったとする。一方、タイミング回路１５から出力される高信頼タイミング信号に示された時刻の値は、タイミング回路１５の初期化設定時の値から、システムＬＳＩ１のクロック周波数ごとにカウントアップされて、２回目の時刻情報受信時に、例えば、<140>になっていたとする。
・サブプロセッサ１８は、この２回の時刻情報に基づいて、高信頼タイミング信号を補正できる。この例では、１回目の時刻情報受信時の高信頼タイミング信号の値と２回目の時刻情報受信時の高信頼タイミング信号の値の差は<40>である。一方、実際の経過時間は、１回目と２回目の時刻情報受信時の時刻値の差から「20」である。このことから、DRMサーバのクロック周波数に対する、高信頼タイミング信号のクロック周波数の比は、2(=<40>/「20」)倍であることが分かる。
【００３７】
そこで、サブプロセッサ１８は、高信頼タイミング信号を利用する場合、例えば、次式に従って補正時刻値Ctを算出する。
Ct = C0+(Cc-C0)/r
ここで、C0は、高信頼タイミング信号の初期化値であり、Ccは、現在の高信頼タイミング信号の値である。そしてrは、DRMサーバのクロック周波数に対する、高信頼タイミング信号のクロック周波数の比であり、上記の例では2となる。比rは、例えば、１度算出されると、不揮発性メモリ回路１７に記憶される。そのため、１度比rが算出されれば、それ以降、サブプロセッサ１８は、不揮発性メモリ回路１７を参照して、この比rを読み出せばよいので、比rの算出は、１回だけ実行されればよい。
【００３８】
この演算をサブプロセッサ１８が必要に応じて実行する。これにより、システムＬＳＩ１のクロック周波数がDRMサーバのクロック周波数と異なっていても、サブプロセッサ１８は、タイミング回路１５からの高信頼タイミング情報に従って、信頼性の高い時刻情報を得ることができる。そのため、サブプロセッサ１８は、時刻情報を必要とする度に、DRMサーバにアクセスしなくてもよい。
【００３９】
なお、比rの算出は、定期的（例えば、1時間ごと、1日ごと）に行われてもよい。システムＬＳＩ１のクロック回路は、情報保護部９内に存在しないため、他のクロック回路に置き換えられる可能性があるためである。高信頼タイミング信号の値を補正して得られる時刻値と、DRMサーバから受信した時刻情報に表された時刻値が一致しないことが連続して複数回起きる場合は、システムＬＳＩ１のクロック回路が置き換えられた可能性がある。この場合、サブプロセッサ１８は、情報保護部９をエラー状態にし、エラー状態であることを表すフラグを不揮発性メモリ回路１７に記憶させた上で、情報保護部９の動作を停止させてもよい。
この場合、エラー状態からの復帰は、例えば、システムＬＳＩ１が実装された装置の電源再投入により行われるか、あるいは、情報保護部９の管理サーバ（図示せず）から通信ネットワークを介してエラー状態解除命令を受信することで行われる。
【００４０】
揮発性メモリ回路１６は、例えば、ダイナミックメモリを有し、情報保護部９で扱われる情報及び実行中のプログラムの少なくとも一部を一時的に記憶する。
【００４１】
不揮発性メモリ回路１７は、例えば、フラッシュメモリ（登録商標）といった、不揮発性のランダムアクセス可能なメモリ回路及びマスクＲＯＭといった読み出し専用のメモリ回路を有する。そして不揮発性メモリ回路１７は、情報保護部９への電力供給が停止されても消去されないことが望まれる様々な機密情報及び情報保護部９で動作する様々なプログラムを記憶する。なお、不揮発性メモリ回路１７のメモリ容量は、システムＬＳＩ１自体の不揮発性メモリ回路７のメモリ容量よりも少なくてよい。これにより、製造コストが高い不揮発性メモリが少なくて済むので、システムＬＳＩ１自体の製造コストも低減できる。
【００４２】
不揮発性メモリ回路１７には、例えば、以下のような機密情報またはプログラムが記憶される。なお、不揮発性メモリ回路１７には、下記の様々な情報及びプログラムの全てが記憶されていてもよく、あるいは、そのうちの一部のみが記憶されていてもよい。
・情報保護部９自身の識別情報。この識別情報は、情報保護部９ごとに一意に設定され、例えば、プログラムのダウンロード時、工場出荷時、あるいは、初期化の時に使用される。
・情報保護部９ごとに一意に設定される、情報保護部９の個別鍵
・情報保護部９内の揮発性メモリ回路１６または不揮発性メモリ回路１７に、任意のプログラムをダウンロードするために利用されるダウンロードプログラム及びダウンロード用機密情報。なお、ダウンロード用機密情報は、情報保護部９自身の識別情報及び情報保護部９の個別鍵であってもよい。
・サービス特定情報及びサービス関連情報。これらの情報には、例えば、サービス実行に必要なプログラムのうちのサブプロセッサ１８上で動作する部分と、システムＬＳＩ１のメインプロセッサ８上で動作する他の部分との間の関連付け情報が含まれる。あるいは、サービス特定情報及びサービス関連情報には、そのサービスに関連する管理サーバ側の機能への関連付け情報などが含まれてもよい。
・サービス実行に必要な各種のプログラム。これらのプログラムは、情報保護部９のみが知っている暗号鍵、例えば上記の個別鍵を用いて暗号化されていてもよい。
・各種暗号鍵
【００４３】
なお、不揮発性メモリ回路１７は、揮発性メモリ回路１６と比較して高価であり、かつ、アクセスに要する時間が掛かる。そこで、不揮発性メモリ回路１７に記憶されている各種の情報及びプログラムのうち、実際に利用される情報またはプログラムは一旦揮発性メモリ回路１６にコピーされる。そしてサブプロセッサ１８は、揮発性メモリ回路１６に記憶されている、それらの情報またはプログラムにアクセスすることで、必要な処理を実行することで、処理速度を向上できる。
【００４４】
サブプロセッサ１８は、例えば、論理演算回路及び数値演算回路を有し、システムＬＳＩ１上で動作する様々なプログラムに関連する機密情報に関する部分の処理を実行する。
【００４５】
図３は、情報保護部９により実行される情報処理の動作フローチャートである。
インターフェース回路１１は、バス１０から受け取ったコマンドが情報保護部９宛てのコマンドか否か判定する（ステップＳ１０１）。そのコマンドが情報保護部９宛てのコマンドでない場合（ステップＳ１０１−Ｎｏ）、インターフェース回路１１は、そのコマンドをサブプロセッサ１８には渡さず、廃棄する（ステップＳ１０２）。
【００４６】
一方、そのコマンドが情報保護部９宛てのコマンドである場合（ステップＳ１０１−Ｙｅｓ）、インターフェース回路１１は、そのコマンドをサブプロセッサ１８に渡す。そしてサブプロセッサ１８は、揮発性メモリ回路１６または不揮発性メモリ回路１７を参照してそのコマンドで指定された処理を実行する（ステップＳ１０３）。
【００４７】
以下、情報保護部９で実行される様々な処理について説明する。
（プログラムのダウンロード及び課金）
まず、通信ネットワークなどを介してシステムＬＳＩ１が実装された装置と接続されるサーバ（図示せず）から各種のプログラムを情報保護部９にダウンロードする方法及び情報保護部９の利用者に課金する方法について説明する。
【００４８】
第１の方法として、共通鍵を利用する方法について説明する。
この場合、情報保護部９の不揮発性メモリ回路１７には、情報保護部９の識別情報と個別鍵情報が予め記憶されている。
一方、サーバは、情報保護部９を管理するサーバであり、情報保護部９ごとの識別情報と、サーバと情報保護部９間で安全に情報を送受信するため、すなわち、情報が第三者に漏洩しないように情報を送受信するための鍵情報とを予め記憶している。
【００４９】
システムＬＳＩ１が実装された装置のユーザが、その装置のキーボードまたはタッチパネルといったユーザインターフェース（図示せず）を介して、情報保護部９に記憶されている識別情報の表示を要求する操作を行う。なお、この操作は、プログラムのダウンロードを要求する操作に含まれていてもよい。識別情報の表示を要求する操作が行われると、システムＬＳＩ１のメインプロセッサ８は、情報保護部９に対して、識別情報の読出しを要求するコマンドを生成し、そのコマンドをバス１０を介して情報保護部９へ送信する。情報保護部９のサブプロセッサ１８は、インターフェース回路１１を介してそのコマンドを受け取ると、不揮発性メモリ回路１７からその識別情報を読み込む。そしてサブプロセッサ１８は、その識別情報をメインプロセッサ８へ出力する。メインプロセッサ８は、その識別情報を受け取ると、システムＬＳＩ１が実装された装置の表示部にその識別情報を表示させる。なお、表示部は、ユーザインターフェースと一体化されていてもよい。
【００５０】
さらに、システムＬＳＩ１が実装された装置を所有するユーザは、そのユーザの固有情報、例えば、ユーザの氏名、住所、銀行口座などを電話またはメールを用いてサーバを管理している管理センターに連絡する。管理センターでは、オペレータが、ユーザの固有情報などに基づいてユーザの信頼性を確認する。そして、連絡者がユーザ本人またはユーザの正当な代理人であることを確認できれば、オペレータは、サーバにおいて、情報保護部９の識別情報とユーザの固有情報をリンクさせて管理できるように管理データを作成する。サーバは、情報保護部９とサーバしか知らない情報保護部９の個別鍵を用いて要求されたプログラムを暗号化する。そしてサーバは、暗号化されたプログラムを、通信ネットワークあるいは放送網経由でシステムＬＳＩ１が実装された装置へ送信する。送信されるプログラムは暗号化されており、暗号化されたプログラムを復号する暗号鍵は、情報保護部９とサーバしか知らないので、プログラムが送信される経路はどのような経路であっても、プログラムの秘密は保たれる。システムＬＳＩ１は、暗号化されたプログラムを受信すると、そのプログラムを含む、情報保護部９へのダウンロードコマンドを作成し、ダウンロードコマンドを情報保護部９へ送信する。情報保護部９のサブプロセッサ１８は、インターフェース回路１１を介してダウンロードコマンドを受け取ると、個別鍵を用いてそのダウンロードコマンドに含まれる、暗号化されたプログラムを復号する。これにより、プログラム自体は、外からアクセスすることが困難な情報保護部９の内部で復号されるので、プログラムの機密性が保たれる。
サーバは、プログラムのダウンロードが行われる度に、ダウンロードを要求した情報保護部９の識別情報とともに記憶されたユーザの固有情報で特定されたユーザに、ダウンロードされたプログラムについての課金を行う。
【００５１】
次に、秘密鍵と公開鍵のペアを用いる方法について説明する。なお、以下では、上記の共通鍵を利用する方法と異なる点について説明する。
RSA暗号といった公開鍵暗号方式では、秘密鍵を用いて暗号化された情報は、公開鍵でしか復号できず、一方、公開鍵を用いて暗号化した情報は、秘密鍵でしか復号できないという性質がある。
そこで、情報保護部９の不揮発性メモリ回路１７には、個別鍵情報として、情報保護部９の公開鍵と秘密鍵のペアと、サーバの公開鍵が予め記憶される。一方、サーバには、情報保護部９ごとに、その情報保護部９の識別情報とともに、情報保護部９の公開鍵と、サーバ自身の公開鍵と秘密鍵のペアが予め記憶される。
【００５２】
この例では、サーバがプログラムを暗号化する際、情報保護部９とサーバしか知らない一時鍵を用いてプログラムを暗号化する。サーバは、その一時鍵を用いて暗号化されたプログラムをシステムＬＳＩ１が実装された装置へ送信する。情報保護部９は、システムＬＳＩ１のメインプロセッサ８から、その一時鍵を用いて暗号化されたプログラムを含むダウンロードしたプログラムを受け取る。そして情報保護部９のサブプロセッサ１８は、一時鍵を用いて暗号化されたプログラムを復号する。
【００５３】
一時鍵は、例えば、以下の方法で、情報保護部９とサーバの間で共有される。まずサーバが、乱数Ａを所定の乱数発生方式に従って生成し、サーバの記憶装置に乱数Ａを記憶する。そしてサーバは、乱数ＡをシステムＬＳＩ１が実装された装置へ送信する。システムＬＳＩ１のメインプロセッサ８は、乱数Ａを含む、一時鍵生成コマンドを情報保護部９へ渡す。
【００５４】
情報保護部９のサブプロセッサ１８は、一時鍵生成コマンドを受け取ると、そのコマンドに含まれる乱数Ａを、情報保護部９の秘密鍵を用いて暗号化する。またサブプロセッサ１８は、一時鍵を生成し、その一時鍵をサーバの公開鍵を用いて暗号化する。さらにサブプロセッサ１８は、乱数発生回路１２に対して乱数Ｂを発生させる。そしてサブプロセッサ１８は、乱数Ｂと、サーバの公開鍵を用いて暗号化された一時鍵及び情報保護部９の秘密鍵を用いて暗号化された乱数Ａを、通信回路２を介してサーバへ送信する。またサブプロセッサ１８は、一時鍵及び乱数Ｂを、揮発性メモリ回路１６に記憶する。
【００５５】
サーバは、情報保護部９の秘密鍵で暗号化された乱数Ａを、情報保護部９の公開鍵を用いて復号し、乱数Ａであることを確認することでシステムＬＳＩ１と接続されていることを確認する。またサーバは、乱数Ｂをサーバの秘密鍵で暗号化して、システムＬＳＩ１が実装された装置へ送信する。さらにサーバは、情報保護部９から受信した、サーバの公開鍵を用いて暗号化された一時鍵を、サーバの秘密鍵を用いて復号する。
システムＬＳＩ１のメインプロセッサ８は暗号化された乱数Ｂを含む、一時鍵共有検証コマンドを情報保護部９へ渡す。
【００５６】
情報保護部９のサブプロセッサ１８は、インターフェース回路１１を介して一時鍵共有検証コマンドを受け取ると、サーバの秘密鍵で暗号化された乱数Ｂをサーバの公開鍵を用いて復号し、揮発性メモリ回路１６に記憶している乱数Ｂと一致するか否か確認する。復号された乱数Ｂと揮発性メモリ回路１６に記憶している乱数Ｂが一致する場合、サブプロセッサ１８は、システムＬＳＩ１がサーバに接続されていることを確認する。
以上により、サーバと情報保護部９間の相互認証が終了し、サーバと情報保護部９間で一時鍵が共有される。
【００５７】
なお、システムＬＳＩ１のメインプロセッサ８は、ユーザの固有情報を含む、固有情報暗号化コマンドを作成し、固有情報暗号化コマンドを情報保護部９へ送信してもよい。情報保護部９のサブプロセッサ１８は、固有情報暗号化コマンドに含まれる固有情報を、上記の共通鍵、あるいは一時鍵を用いて暗号化し、暗号化された固有情報をメインプロセッサ８へ返信してもよい。そしてメインプロセッサ８は、暗号化された固有情報を、サーバへ送信してもよい。
【００５８】
また、サーバは、プログラムのダウンロードが行われた情報保護部９の識別情報とともに、製造者識別情報を記憶してもよい。製造者識別情報は、情報保護部９を含むシステムＬＳＩ１が実装された装置の製造者、あるいは、情報保護部９を含むシステムＬＳＩ１の製造者を特定する情報である。そしてサーバは、プログラムのダウンロードが行われる度に、ダウンロードを要求した情報保護部９の識別情報とともに記憶された製造者識別情報で特定された製造者に、ダウンロードされたプログラムについての課金を行ってもよい。
なお、製造者識別情報として、情報保護部９の識別情報に含まれる、下位（上位）の所定の桁の数値が割り当てられてもよい。
【００５９】
（プログラムの実行）
次に、システムＬＳＩ１上でのプログラムの実行について説明する。本実施形態では、プログラムの一部をメインプロセッサ８が実行し、プログラムの他の一部を、外部からアクセス困難な情報保護部９のサブプロセッサが実行することで、情報保護部９は、そのプログラムが扱う機密情報の漏洩及び改ざんを防止する。
【００６０】
例えば、メインプロセッサ８が処理する、揮発性メモリ回路６に記憶されたプログラムは、仕様が公開されたオペレーションシステム上で動作する。また、揮発性メモリ回路６は、第三者がアクセス可能となっている。そのため、そのプログラム及びそのプログラムが扱うデータは、悪意ある第三者により不正に見られたり、コピーされたり、改ざんされたり、あるいは不正使用されるおそれがある。例えば、メインプロセッサ８が処理するプログラムが、コンテンツの視聴及びその視聴に対する課金を行うプログラムであれば、ユーザがコンテンツを１０回視聴しても１回視聴とみなすようにプログラムまたは課金用のデータが改ざんされるおそれがある。
【００６１】
一方、情報保護部９は、メインプロセッサ８からの所定のコマンドでしかアクセスできず、情報保護部９内の揮発性メモリ回路１６に記憶されている情報及び不揮発性メモリ回路１７に記憶されている情報は、情報保護部９の外部から直接参照できない。また情報保護部９のサブプロセッサ１８は、メインプロセッサ８から所定のコマンドで渡された情報を除いて、システムＬＳＩ１の各メモリ回路に記憶されている情報にアクセスしない。そしてサブプロセッサ１８上で動作するプログラムは、情報保護部９内の揮発性メモリ回路１６に記憶されている情報及び不揮発性メモリ回路１７に記憶されている情報など、情報保護部９内で生成され、あるいは保持されている情報のみを利用する。本実施形態による情報保護部９は、上記のようなサブプロセッサ１８の特性を利用して、メインプロセッサ８が処理するプログラム及びそのプログラムが扱う情報が不正に見られたり、改ざんされることを防止する。なお、以下では、プログラムのうちのサブプロセッサ１８上で実行される部分をプログラムＡと呼び、プログラムのうちのメインプロセッサ８上で実行される部分をプログラムＢと呼ぶ。
【００６２】
例えば、システムＬＳＩ１が実装された装置のユーザインターフェースを介して、情報保護部９の不揮発性メモリ回路１７に記憶されているプログラムを実行する操作が行われる。このとき、メインプロセッサ８は、その操作で指定されたプログラムの識別情報を含む、プログラム起動コマンドを生成し、そのプログラム起動コマンドを情報保護部９へ出力する。
【００６３】
情報保護部９のサブプロセッサ１８は、インターフェース回路１１を介してプログラム起動コマンドを受け取ると、そのプログラム起動コマンドで指定されたプログラムを不揮発性メモリ回路１７から読み込む。そしてサブプロセッサ１８は、そのプログラムを、例えば、乱数発生回路１２から受け取った乱数にしたがって、モジュール単位でプログラムＡとプログラムＢに分割する。そのために、例えば、プログラムのモジュールごとに予め一意に識別番号が付され、乱数発生回路１２が発生する乱数ごとに、プログラムＡに属するモジュールの識別番号とプログラムＢに属するモジュールの識別番号が格納されたテーブルが予め作成される。このテーブルは、不揮発性メモリ回路１７に記憶される。サブプロセッサ１８は、そのテーブルを参照して、乱数発生回路１２から受け取った乱数にしたがって、プログラムＡに属するモジュールとプログラムＢに属するモジュールを決定すればよい。
【００６４】
サブプロセッサ１８は、プログラムＡに属するモジュールを揮発性メモリ回路１６にコピーする。またサブプロセッサ１８は、プログラムＢに属するモジュールと、モジュールごとに、そのモジュールを識別番号及びプログラムＡに属するか否かを表すフラグを含むデータを生成し、そのデータをメインプロセッサ８へ出力する。
メインプロセッサ８は、プログラムの実行中において各モジュールを呼び出す際に、そのモジュールのフラグを参照して、そのモジュールがプログラムＡに属するか否かを判定する。そしてそのモジュールがプログラムＡに属する場合、メインプロセッサ８は、そのモジュールの識別番号及びそのモジュールに渡すパラメータを含む呼び出しコマンドを作成し、その呼び出しコマンドを情報保護部９へ出力する。
【００６５】
情報保護部９のサブプロセッサ１８は、インターフェース回路１１を介して呼び出しコマンドを受け取ると、その呼び出しコマンドに含まれるモジュールの識別番号に従って実行するモジュールを特定する。そしてサブプロセッサ１８は、特定したモジュールに、呼び出しコマンドに含まれるパラメータを渡して、そのモジュールの処理を実行する。サブプロセッサ１８は、そのモジュールの処理結果を表すデータを作成し、そのデータをメインプロセッサ８へ渡す。
以上により、プログラムの一部が外部からの参照が困難な情報保護部９で実行されるので、そのプログラム及びそのプログラムで扱われるデータの不正な参照、コピー及び改ざんが困難になる。
【００６６】
図４（Ａ）及び図４（Ｂ）は、それぞれ、プログラムＡに属するモジュールとプログラムＢに属するモジュールの一例を示す図である。図４（Ａ）及び図４（Ｂ）に示されるプログラムは同一のプログラムであり、モジュールFuncA〜FuncKを含む。図４（Ａ）では、枠線４００で囲まれたFuncC、FuncD、FuncG、FuncH、FuncJがプログラムＡに属する。一方、図４（Ｂ）では、枠線４１０で囲まれたFuncB、FuncC、FuncG、FuncJがプログラムＡに属する。このように、プログラムが起動される度に、プログラムＡに属するモジュールを変更することで、外から見た機能は同じでも中のコードの違うプログラムＢが起動するので、悪意のある第三者がこのプログラムをハッキングすることは極めて困難になる。
【００６７】
なお、プログラムの各モジュールは、情報保護部９の不揮発性メモリ回路１７に、情報保護部９の内部のみに保持される鍵、例えば、個別鍵を用いて暗号化された上で記憶されていてもよい。この場合、サブプロセッサ１８は、プログラム起動コマンドを受け取ると、そのプログラム起動コマンドで指定されたプログラムを、その暗号化に用いられた鍵を用いて復号すればよい。
【００６８】
また、サブプロセッサ１８は、プログラム起動コマンドを受け取る度に、プログラムＢのコードを、同じ処理が実行されるようにしつつ、改変してもよい。例えば、サブプロセッサ１８は、コード自体を改変してもよく、あるいは、GOTO命令を利用して、プログラムＢに含まれる各モジュールの呼び出し順序を維持したまま、各モジュールの記述順序を入れ替えてもよい。
さらに、サブプロセッサ１８は、プログラム起動コマンドを受け取る度に、プログラムＢが実行する処理には何も関係の無い処理を実行するか、何の処理もしないダミーコードを、プログラムＢ中の異なる位置に挿入してもよい。またサブプロセッサ１８は、プログラム起動コマンドを受け取る度に、プログラムＢ中に挿入するダミーコードの数を変更してもよい。
そのために、例えば、乱数発生回路１２が発生する乱数ごとに、プログラムＢに属するコードが格納されたテーブルが不揮発性メモリ回路１７に記憶される。サブプロセッサ１８は、そのテーブルを参照して、乱数発生回路１２から受け取った乱数にしたがって、プログラムＢに属するコードを決定すればよい。
【００６９】
図５（Ａ）及び図５（Ｂ）は、それぞれ、プログラムＢの一例を示す図である。図５（Ａ）及び図５（Ｂ）において、記号A、B、X及びYは、それぞれ、変数である。図５（Ａ）及び図５（Ｂ）から明らかなように、図５（Ａ）に示されるプログラム５００と図５（Ｂ）に示されるプログラム５１０は同一の処理を実行するが、コード内容が互いに異なっている。
【００７０】
図６（Ａ）及び図６（Ｂ）は、それぞれ、プログラムＢの他の一例を示す図である。図６（Ａ）及び図６（Ｂ）において、Funcm(m=1〜5)は、それぞれ、一つのモジュールを表す。またFunc Dは、ダミーコードを表す。Goto Xは、行番号Xへ処理をジャンプさせるGoto命令である。そして各モジュールまたはGoto命令の左に付された番号は、行番号を表す。この例では、図６（Ａ）に示されたプログラム６００及び図６（Ｂ）に示されたプログラム６１０の何れも、Func1〜Func5の順序で処理を実行する。しかし、プログラム６００とプログラム６１０とでは、モジュールの記述順序が互いに異なっているために、悪意のある第三者から見て、プログラム６００の処理内容とプログラム６１０の処理内容が同一であることは分かり難い。また、プログラム６１０には、ダミーコードが含まれている。そのため、プログラムＢの解析も困難になる。
【００７１】
また、本実施形態では、プログラムＢを起動の度に異なるコードに書き換えるプログラムも、情報保護部９内のサブプロセッサ１８により実行される。そのため、プログラムＢの書き換えを実行するプログラムが解析されることで、プログラムＢの内容が第三者に知られたり、改ざんされる可能性は極めて低い。
【００７２】
さらに、メインプロセッサ８及びサブプロセッサ１８は、定期的あるいは不定期的に、実行中のプログラムＢをスキャンして、プログラムＢが改ざんされているか否かを確認してもよい。
【００７３】
まず、サブプロセッサ１８は、プログラムＢをスキャンするためのスキャンプログラムを生成する。サブプロセッサ１８は、生成したプログラムをメインプロセッサ８へ出力し、メインプロセッサ８は、受け取ったスキャンプログラムを揮発性メモリ回路６に書き込む。メインプロセッサ８は、スキャンプログラムを実行することによって揮発性メモリ回路６からプログラムＢのプログラムコードが記憶されているメモリ領域に対して所定の演算を行って、スキャン演算値を算出する。メインプロセッサ８は、そのスキャン演算値を含むスキャン結果通知コマンドを生成し、そのスキャン結果通知コマンドを情報保護部９へ送信する。情報保護部９のサブプロセッサ１８は、インターフェース回路１１を介してスキャン結果通知コマンドを受け取り、そのコマンドに含まれるスキャン演算値に基づいて、プログラムＢのコードが改ざんされているか否か判定する。サブプロセッサ１８は、プログラムＢが改ざんされていると判定すると、メインプロセッサ８に、プログラムＢの実行を停止させる命令を出力する。
【００７４】
なお、スキャンプログラムは、メインプロセッサ８に、例えば、プログラムＢの一部または全部が記憶されているメモリ領域内のビット列のハッシュ値をスキャン演算値として算出させる。あるいは、スキャンプログラムは、メインプロセッサ８に、プログラムＢの互いに異なる一部が記憶されている複数のメモリ領域内のビット列に対して、数値演算、論理演算、または数値演算と論理演算の組み合わせを実行させることでスキャン演算値を算出する。
【００７５】
サブプロセッサ１８は、メインプロセッサ８から受け取ったスキャン演算値を、情報保護部９の揮発性メモリ回路１６または不揮発性メモリ回路１７に記憶されている、プログラムＢが改ざんされていない場合のスキャン演算値と比較する。そして、サブプロセッサ１８は、二つのスキャン演算値が一致すれば、プログラムＢは改ざんされていないと判定し、一方、二つのスキャン演算値が一致しなければ、プログラムＢは改ざんされていると判定する。なお、情報保護部９内に記憶されるスキャン演算値は、例えば、サブプロセッサ１８がプログラムＢ及びスキャンプログラムを生成したときに、プログラムＢが記憶されている揮発性メモリ回路１６をスキャンプログラムを用いてスキャンすることで算出される。あるいは、メインプロセッサ８から受け取ったスキャン演算値のうちでプログラムＢが改ざんされていないと判定されたときの最新のスキャン演算値が、情報保護部９の揮発性メモリ回路１６または不揮発性メモリ回路１７に記憶されてもよい。
【００７６】
なお、スキャン演算値は上記の例に限らず、プログラムが改ざんされているか否かを検出するために、プログラムが記憶されているメモリ領域の記憶内容に基づいて算出される様々な値の何れかであってもよい。
【００７７】
なお、スキャンプログラム自体が、第三者がアクセス可能な揮発性メモリ回路６に記憶されているため、プログラムＢが改ざんされていないとの判定結果が常に得られるように、スキャンプログラム自体が改ざんされる可能性がある。そこで、サブプロセッサ１８は、スキャンプログラムをできるだけ頻繁に変更することでスキャンプログラム自身のハッキングを困難にすることが好ましい。スキャンプログラムが頻繁に変更されるほど、スキャンプログラムを解析したり、プログラムＢの改ざん検知を無効化するようにスキャンプログラムを改ざんするための時間がなくなる。そのため、スキャンプログラムを解析したり、プログラムＢの改ざん検知を無効化するようにスキャンプログラムを改ざんすることがより困難となる。
【００７８】
サブプロセッサ１８は、スキャンプログラムを生成する度に、スキャン対象となるメモリ領域、メモリ領域ごとのスキャン順序、スキャン演算値算出用の演算処理、スキャン演算値を情報保護部９に戻す処理、またはスキャンプログラムのコードなどを変更する。
【００７９】
図７は、スキャンプログラムのコードの一例を示す図である。スキャンプログラム７００において、一つの行が一つの命令を表す。そしてメインプロセッサ８は、スキャンプログラム７００に含まれる各命令を、１番上の行の命令から順に実行する。
【００８０】
この例では、３１番地メモリ〜３５番地メモリにプログラムＢの一部が格納されているとする。サブプロセッサ１８は、書込み先のメモリの番地（２００１〜２００５）を、スキャンプログラムの作成の度にランダムに変更することができる。その際、サブプロセッサ１８は、読み込むメモリ番地ごとに、乱数発生回路１２により乱数を発生させ、その乱数に所定の係数を乗じ、かつ整数化した値を、書込み先の候補となるメモリの番地の最小値に加えることで書込み先のメモリ番地を決定してもよい。
【００８１】
またスキャンプログラム７００において、６、７行目の処理がスキャン値を算出する処理である。サブプロセッサ１８は、スキャンプログラムを生成する度に、６、７行目の処理内容を変更してもよい。その際、例えば、サブプロセッサ１８は、乱数とスキャン値算出演算とを対応させたテーブルを参照して、スキャンプログラム生成の際に乱数発生回路１２により発生させた乱数に対応するスキャン値算出演算を特定する。そしてサブプロセッサ１８は、特定したスキャン値算出演算をスキャンプログラムに組み込めばよい。
【００８２】
またスキャンプログラム７００において、８、９行目の処理がスキャン値を情報保護部９に戻す処理である。サブプロセッサ１８は、スキャンプログラムを生成する度に、８、９行目の演算内容を変更してもよい。その際、例えば、サブプロセッサ１８は、スキャンプログラム生成の際に乱数発生回路１２により発生させた乱数を、スキャン演算値に加算する定数またはスキャン演算値に乗じる定数とする。
【００８３】
また、サブプロセッサ１８は、プログラムＢを生成する際に、認証コードをプログラムＢの中に埋め込んでもよい。この場合、メインプロセッサ８は、プログラムＢの実行中に、認証コードを読み込むと、その認証コードに従って情報保護部９を利用してプログラムＢを認証する。なお、認証コードの位置に制限は無く、例えば、認証コードは、プログラムＢの一番先頭または最後に埋め込まれていてもよく、あるいは、プログラムＢの途中に埋め込まれていてもよい。また、プログラムＢ中に埋め込まれる認証コードは一つでもよく、あるいは、複数でもよい。
【００８４】
認証コードにより実行される認証処理として、例えば、以下のような認証処理が実行される。
（１）サブプロセッサ１８は、プログラムＢの生成時に、プログラムＢの予め決められた部分（例えば、コードの先頭部分）において、初期情報として、定数X,Y,Zを規定する。定数X,Y,Zは、例えば、プログラムＢが生成される度に異なる値に設定される。そしてサブプロセッサ１８は、定数X,Y,Zを用いた所定の演算により得られた結果を情報保護部９の揮発性メモリ回路１６に記憶する。所定の演算は、数値演算、論理演算、あるいは数値演算と論理演算の組み合わせとすることができる。この例では、所定の演算をW0=X*Y+Zとし、その演算により得られた値W0が揮発性メモリ回路１６に記憶される。
またこの定数X,Y,Zは、プログラムＢが実行されることにより、例えば、揮発性メモリ回路６内のメモリ領域の何れかに記憶される。
（２）メインプロセッサ８は、プログラムＢの実行中に、埋め込まれた認証コードに達すると揮発性メモリ回路６から定数X,Y,Zを読み込む。
（３）そしてメインプロセッサ８は、定数X,Y,Zに対して上記の所定の演算（この例では、W=X*Y+Z）を行う。
（４）メインプロセッサ８は、得られた値Wを含む、認証要求コマンドを生成し、その認証要求コマンドを情報保護部９へ送信する。
（５）サブプロセッサ１８は、インターフェース回路１１を介して受け取った認証要求コマンドに含まれる値Wを、情報保護部９内の揮発性メモリ回路１６に記憶されている値W0と比較する。値WとW0が一致すれば、サブプロセッサ１８は、プログラムＢの続行の許可を表す信号をメインプロセッサ８へ出力する。一方、値WとW0が一致しなければ、プログラムＢが改ざんされている可能性が高いので、サブプロセッサ１８は、プログラムＢの停止を表す信号をメインプロセッサ８へ出力する。
（６）メインプロセッサ８は、プログラムＢの続行の許可を表す信号をサブプロセッサ１８から受け取ると、認証コードに後続する処理を実行する。一方、メインプロセッサ８は、プログラムＢの停止を表す信号を受信すると、プログラムＢの処理を停止する。またサブプロセッサ１８は、情報保護部９の動作を停止させ、システムＬＳＩ１が実装された装置の電源が再投入されるまで、情報保護部９が動作しないようにしてもよい。
【００８５】
プログラムＢ中に複数の認証コードが含まれている場合、メインプロセッサ８及びサブプロセッサ１８は、実行中の処理が認証コードに達する度に、ステップ（２）〜（６）の処理を繰り返す。この場合、認証コードごとに、利用される定数は異なっていてもよく、また、認証コードごとに、利用される定数に対して行われる演算も異なっていてもよい。
【００８６】
認証コードは、プログラムＢの生成の度に変更されてもよい。例えば、上記の定数X,Y,Zの値が、プログラムＢの生成の度に変更されてもよく、あるいは、上記の定数X,Y,Zに対して行われる演算が変更されてもよい。あるいはまた、プログラムＢの生成の度に、認証コードの実行に利用される定数の組み合わせが変更されてもよい。例えば、サブプロセッサ１８は、乱数と認証コードが対応付けられたテーブルを参照することで、プログラムＢの生成の際に乱数発生回路１２により発生させた乱数に対応する認証コードを決定し、決定した認証コードをプログラムＢに埋め込めばよい。このように、プログラムＢの生成の度に認証コードを変更することで、第三者がプログラムＢを改ざんした際に、その改ざんされたプログラムＢが認証に成功することが極めて困難となる。
【００８７】
なお、サブプロセッサ１８は、認証処理に時間制限を設けてもよい。例えば、サブプロセッサ１８は、認証コードが埋め込まれたプログラムＢをメインプロセッサ８へ出力する際における、タイミング回路１５からの高信頼タイミング信号に示された時刻をプログラムＢの起動時刻として揮発性メモリ回路１６に記憶してもよい。
サブプロセッサ１８は、プログラムＢの起動時刻から一定期間内に認証要求コマンドを受け取らなかった場合、プログラムＢの認証処理が改ざんされたと判定する。そしてサブプロセッサ１８は、プログラムＢの停止を表す信号をメインプロセッサ８へ出力する。これにより、情報保護部９は、認証コードの偽造に利用可能な時間を無くすことが可能である。またこのように、認証を受けることができる期間を制限することで、情報保護部９は、認証結果が永遠に返信されないと認証ＯＫとなるいう結果になるのを防げる。
【００８８】
（情報保護部外のメモリ回路の利用）
次に、機密情報を情報保護部９外のメモリ回路に格納する例について説明する。不揮発性メモリ回路は、一般的に、揮発性メモリ回路よりも高価であるため、コストの観点からは、システムＬＳＩ１に実装される不揮発性メモリ回路の記憶容量は少ない方が好ましい。そこでこの例では、情報保護部９が有する不揮発性メモリ回路１７の記憶容量を最小限に抑え、その代わりに、情報保護部９外にあるメモリ回路を利用する。
【００８９】
最初に、暗号化された機密情報を単純にシステムＬＳＩ１の不揮発性メモリ回路７に記憶させておく場合の不都合について説明する。
例えば、情報保護部９の識別情報及び個別鍵情報といった機密情報が、情報保護部９しか知らない暗号鍵を用いて暗号化され、不揮発性メモリ回路７に記憶されているとする。
これらの暗号化された機密情報は、情報保護部９しか知らない暗号鍵で暗号化されているため、暗号化された情報が第三者に知られる可能性は低い。しかし、不揮発性メモリ回路７に記憶されている機密情報全体が置き替えられる可能性がある。そのため、以下のような不正を防げない可能性がある。
【００９０】
例えば、システムＬＳＩ１の電源切断後にも、次回のシステムＬＳＩ１の使用の際に必要となる機密情報を保持するため、情報保護部９が機密情報を暗号化した上で、不揮発性メモリ回路７に暗号化された機密情報を保存する。機密情報として、例えば、プリペイドの「残金」及び「視聴コンテンツの履歴情報」が保存される。
【００９１】
過去のある時点（例えば、２か月前）において、不揮発性メモリ回路７に記憶されている暗号化された情報全体が他の装置のメモリにコピーされたとする。その際、残金は５０００円、視聴コンテンツの履歴に映画１が記録されていたとする。
その後、ユーザが映画２、３の視聴などのために、プリペイドの残金を使用したとする。そして現時点において、残金は１０００円、視聴コンテンツの履歴に映画１、２、３が記録されていたとする。
ここで、現時点で不揮発性メモリ回路７に記憶されている暗号化された情報が、過去の時点の不揮発性メモリ回路７に記憶されている暗号化された情報で置換されたとする。この場合、本来は、残金は１０００円であるところ、５０００円になる。また視聴したコンテンツも映画１、２、３なのに、記録上は映画１のみになってしまう。また、過去の時点の不揮発性メモリ回路７に記憶されている暗号化された情報も、情報保護部９によって暗号化されているので、置換後の情報が不正に操作された情報かどうかの見分けが付き難い。このような不正なコピーを防げなければ、過去のある時点から現在までの間にユーザがどんなに金を使っても、常に残金が残ることになってしまう。
【００９２】
そこで本実施形態では、このような不正を防ぐため、メインプロセッサ８及びサブプロセッサ１８は、以下のような処理を実行する。
メインプロセッサ８は、機密情報を更新する度に、更新された機密情報を含む記録更新要求コマンドを生成し、その記録更新要求コマンドを情報保護部９へ送信する。サブプロセッサ１８は、インターフェース回路１１を介して記録更新要求コマンドを受け取ると、その記録更新要求コマンドに含まれる機密情報を、情報保護部９しか知らない暗号鍵、例えば、個別鍵を用いて暗号化する。そしてサブプロセッサ１８は、暗号化された機密情報をメインプロセッサ８へ出力する。メインプロセッサ８は、暗号化された機密情報を不揮発性メモリ回路７に保存する。
【００９３】
またサブプロセッサ１８は、暗号化された機密情報を、暗号回路１４に渡す。暗号回路１４は、暗号化された機密情報のハッシュ値を計算する。そして暗号回路１４は、そのハッシュ値をサブプロセッサ１８に返す。サブプロセッサ１８は、そのハッシュ値を、機密情報の種類を表す情報とともに不揮発性メモリ回路１７に保存する。
【００９４】
また、メインプロセッサ８は、動作中のアプリケーションプログラムなどにより、機密情報の更新または参照を要求されると、暗号化された機密情報を不揮発性メモリ回路７から読み出し、その暗号化された機密情報を含む記録確認コマンドを生成する。そしてメインプロセッサ８は、その記録確認コマンドを情報保護部９へ送信する。
【００９５】
サブプロセッサ１８は、インターフェース回路１１を介して記録確認コマンドを受け取ると、記録確認コマンドに含まれる暗号化された機密情報を暗号回路１４に渡す。そして暗号回路１４は、その暗号化された機密情報のハッシュ値を算出し、サブプロセッサ１８に返す。
サブプロセッサ１８は、暗号回路１４から受け取ったハッシュ値と、不揮発性メモリ回路１７に記憶されているハッシュ値とを比較する。その二つのハッシュ値が一致する場合、サブプロセッサ１８は、暗号化された機密情報は改ざんされていないと判定する。そしてサブプロセッサ１８は、暗号化された機密情報を復号し、復号された機密情報をメインプロセッサ８へ出力する。これにより、メインプロセッサ８は、復号された機密情報を参照または更新できる。
【００９６】
一方、その二つのハッシュ値が一致しない場合、サブプロセッサ１８は、暗号化された機密情報が改ざんされたと判定する。この場合には、サブプロセッサ１８は、機密情報を復号せず、メインプロセッサ８に、機密情報が改ざんされていることを通知する。
【００９７】
以上に説明した処理により、システムＬＳＩ１は、情報保護部９外のメモリ回路に機密情報を保存する場合にも、現在の機密情報を過去の機密情報で置換することによる不正を防止できる。そのため、情報保護部９が有する不揮発性メモリ回路１７の記憶容量が小さくて済む。
【００９８】
なお、メインプロセッサ８は、記録確認コマンドに、暗号化された機密情報とともに、更新後の機密情報の値、あるいは、更新前の機密情報の値と更新後の機密情報の値の差分値を含めてもよい。この場合には、サブプロセッサ１８が、暗号化された機密情報を復号した後に、その機密情報の値を、更新後の機密情報の値、あるいは、更新前の機密情報の値と更新後の機密情報の値の差分値に基づいて更新する。そしてサブプロセッサ１８は、更新後の機密情報を暗号化してからメインプロセッサ８へ出力するとともに、暗号回路１４に、更新後の機密情報のハッシュ値を算出させる。この場合には、機密情報の更新も、外部からアクセスすることが困難な、情報保護部９内のサブプロセッサ１８が実行するので、機密情報が漏えいするリスクがより軽減される。
【００９９】
また、暗号回路１４は、暗号化された機密情報のハッシュ値を算出する代わりに、暗号化された機密情報のチェックサムを算出し、そのチェックサムが不揮発性メモリ回路１７に記憶されてもよい。この場合、ハッシュ値を算出するよりも、簡単な演算でよいので、暗号回路１４が簡単化できる。
また、暗号回路１４は、暗号化されていない機密情報のハッシュ値またはチェックサムを算出し、そのハッシュ値またはチェックサムが不揮発性メモリ回路１７に記憶されてもよい。
さらにまた、メインプロセッサ８は、更新対象となる機密情報だけでなく、全ての機密情報を、記録更新要求コマンド及び記録確認コマンドに含めてもよい。この場合には、全ての機密情報に対して一つのハッシュ値またはチェックサムが計算されればよい。
【０１００】
なお、情報保護部９外のメモリ回路を機密情報の保存に利用して、システムＬＳＩ１は、デジタルテレビ放送の受信に関する処理を実行してもよい。この場合には、情報保護部９内でCASプログラムが動作して、スクランブル鍵の復号など、スクランブル鍵に関する処理と、ワーク鍵の復号及び暗号化などの処理が行われる。その際、情報保護部９外の不揮発性メモリ回路７に、暗号化されたワーク鍵が記憶されてもよい。
【０１０１】
なお、情報保護部９内で動作するCASプログラムも、他のプログラムＡ及びプログラムＢと同様に、上述したダウンロードの手順に従って、システムＬＳＩ１が放送局あるいはサーバから受信して更新することができる。
また、現行のB-CAS（登録商標）では、CASプログラムは、スクランブル鍵の復号など、スクランブル鍵に関する処理と、ワーク鍵の復号及び暗号化など、ワーク鍵に関する処理と、その他の処理に分割可能である。そこでCASプログラムを更新する際には、情報保護部９は、スクランブル鍵に関する処理、ワーク鍵に関する処理及びその他の処理をそれぞれ個別に更新可能である。この場合、情報保護部９は、更新対象となる処理に関連するプログラムのみを、上述したダウンロードの手順に従ってサーバあるいは放送局からダウンロードすればよい。このように処理単位でプログラムをダウンロードすることにより、情報保護部９は、更新する際の情報伝送量を節約できる。
【０１０２】
あるいは、CASプログラムを更新する際に、CASプログラムの一部、例えば、ワーク鍵に関する処理といった機密情報を扱う部分については情報保護部９がダウンロードし、CASプログラムのその他の部分については、メインプロセッサ８がダウンロード処理を行ってもよい。これにより、システムＬＳＩ１は、CASプログラムのうちの機密情報を扱う部分が漏えいする危険性を低減しつつ、更新プログラムのダウンロード処理全体の処理時間を短縮できる。
【０１０３】
以上に説明してきたように、この情報処理装置は、情報保護部内に、メインプロセッサと独立したサブプロセッサと、外部からは参照できないメモリ回路を有し、そのサブプロセッサとメモリ回路により、機密情報またはプロラムの一部を扱う。そのため、この情報処理装置は、機密情報及びプログラムが解析されたり、不正に改ざんされることを防止できる。
【０１０４】
変形例によれば、情報保護部９外の不揮発性メモリ回路７の二つ以上のメモリ領域に暗号化された機密情報が記憶され、それら各メモリ領域に記憶された暗号化された機密情報全てが揃わないと、機密情報が再生されないようにしてもよい。
この場合には、情報保護部９の不揮発性メモリ回路１７に、例えば、機密情報が記憶されているメモリ領域のアドレスと、各メモリ領域に記憶されている暗号化された機密情報から機密情報を再生するための演算の種類といった、機密情報再生情報が記憶される。
例えば、メインプロセッサ８は、機密情報を再生する際、機密情報の再生を要求するコマンドを生成し、そのコマンドを情報保護部９へ出力する。情報保護部９は、そのコマンドを受け取ると、機密情報再生情報をメインプロセッサ８へ出力する。そしてメインプロセッサ８は、機密情報再生情報を参照することで、機密情報を再生する。
【０１０５】
例えば、メインプロセッサ８は、暗号化された機密情報の各部を、機密情報再生情報に示された複数のアドレスのそれぞれに対応するメモリ領域から読み込む。そしてメインプロセッサ８は、暗号化された機密情報の各部を、機密情報再生情報に示された所定の順序に従って結合することで、機密情報を再生する。あるいは、メインプロセッサ８は、暗号化された機密情報の各部に対して、機密情報再生情報に示された所定の演算を行うことで、機密情報を再生してもよい。
さらに他の変形例によれば、機密情報が記憶されている不揮発性メモリ回路を、システムＬＳＩ１が実装されている装置の基板に固定し、不揮発性メモリ回路を壊さずに取り外しできないようにしてもよい。
【０１０６】
また他の変形例によれば、情報保護部は、メインプロセッサを含むシステムＬＳＩとは別個の集積回路として形成されてもよい。
さらに他の変形例によれば、情報保護部宛てのコマンドか否かの判定を、情報保護部のサブプロセッサ自体が行ってもよい。この場合には、情報保護部のインターフェース回路は、システムＬＳＩのバスを通じて受信した全てのコマンドをサブプロセッサに渡してもよい。
さらに他の変形例によれば、情報保護部のインターフェース回路とサブプロセッサとを接続するバスと、情報保護部のインターフェース回路とサブプロセッサ以外の各ユニットとサブプロセッサとを接続するバスとは、別個に設けられてもよい。これにより、情報保護部の各ユニットに対して、情報保護部の外部からアクセスすることがより困難になる。
【０１０７】
なお、メインプロセッサと情報保護部のサブプロセッサとは、論理的に区別されていればよく、必ずしも物理的に異なるものである必要はない。例えば、メインプロセッサとサブプロセッサとは、物理的には同じプロセッサであり、そのプロセッサは、通常モードではメインプロセッサとして動作し、セキュリティーモードではサブプロセッサとして切り替えて動作してもよい。ただし、この場合には、通常モードで動作中のプロセッサから、セキュリティーモードで動作中のプロセッサが参照するメモリ領域にアクセスできないようにする必要がある。そこで、例えば、あるメモリ領域（揮発性メモリ回路６及び不揮発性メモリ回路７に相当）は、通常モードで動作中のプロセッサからアクセス可能とし、一方、別のメモリ領域（揮発性メモリ回路１６及び不揮発性メモリ回路１７に相当）は、セキュリティーモードで動作中のプロセッサからアクセスできるようにしてもよい、あるいは、セキュリティーモードで動作中のプロセッサは、常に暗号化/復号化処理を経由して所定のメモリ領域（揮発性メモリ回路１６及び不揮発性メモリ回路１７に相当）にアクセスするようにしてもよい。この場合、通常モードで動作中のプロセッサは、そのメモリ領域にアクセスしても暗号化されているのでそのメモリ領域にアクセスできない。一方、セキュリティーモードで動作中のプロセッサは鍵を持っているので、メモリから情報を読み出す際には、そのメモリ領域に記憶されている情報を復号でき、一方、メモリに情報を書き込む際には、そのメモリ領域に記憶させる情報を暗号化できる。
【０１０８】
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
【符号の説明】
【０１０９】
１    システムＬＳＩ（情報処理装置）
２    通信回路
３    無線処理回路
４    映像処理回路
５    グラフィックス処理回路
６    揮発性メモリ回路
７    不揮発性メモリ回路
８    メインプロセッサ
９    情報保護部
１１    インターフェース回路
１２    乱数発生回路
１３    マスター鍵生成回路
１４    暗号回路
１５    タイミング回路
１６    揮発性メモリ回路
１７    不揮発性メモリ回路
１８    サブプロセッサ
２０    バス
【図１】
2015045172.tif 000003
【図２】
2015045172.tif 000004
【図３】
2015045172.tif 000005
【図４】
2015045172.tif 000006
【図５】
2015045172.tif 000007
【図６】
2015045172.tif 000008
【図７】
2015045172.tif 000009
【手続補正書】
【提出日】平成28年3月10日(2016.3.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
情報保護部と、
前記情報保護部と前記第１のプロセッサとを接続する第１の通信路とを有し、
前記情報保護部は、
前記情報保護部を前記第１の通信路と接続するインターフェース回路と、
第２のプロセッサと、
前記第１のプロセッサから参照できず、一方、前記第２のプロセッサから参照可能な第１のメモリとを有し、
前記インターフェース回路は、前記第１の通信路から受信したコマンドが、前記情報保護部宛てのコマンドである場合、当該コマンドを前記第２のプロセッサに渡し、一方、前記第１の通信路から受信したコマンドが、前記情報保護部宛てのコマンドでない場合、当該コマンドを前記第２のプロセッサに渡さず、
前記第２のプロセッサは、前記第１のプロセッサから前記第１の通信路を介して前記情報保護部宛てのコマンドを受信すると、前記第１のメモリに記憶された情報に関する処理を実行する、
情報処理装置。
【請求項２】
前記第１のメモリは、プログラムを記憶し、
前記第２のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取ると、前記プログラムを第１の部分と第２の部分に分割し、前記プログラム中の前記第１の部分を示す情報と前記第２の部分とを前記第１のプロセッサへ出力し、前記第１のプロセッサから前記情報保護部宛てのコマンドとして前記第１の部分を実行するコマンドを受け取ると前記第１の部分の処理を実行する、請求項１に記載の情報処理装置。
【請求項３】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、
前記第２のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取る度に、前記乱数発生回路に乱数を発生させ、前記第１のメモリに記録された乱数と前記第２の部分の対応関係を表すテーブルを参照して前記発生した乱数に対応する前記第２の部分を特定することで、前記プログラムの前記第２の部分を変更する、請求項２に記載の情報処理装置。
【請求項４】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、かつ、前記プログラムは複数のモジュールを有し、
前記第２のプロセッサは、前記情報保護部宛てのコマンドとして前記プログラムを実行するコマンドを受け取る度に、前記乱数発生回路に乱数を発生させ、前記第１のメモリに記録された乱数と前記第２の部分に属するモジュールの対応関係を表すテーブルを参照して前記発生した乱数に対応する前記第２の部分に属するモジュールを特定することで、前記複数のモジュールのうち前記第１の部分に属するモジュールと前記第２の部分に属するモジュールの組み合わせを変更する、請求項２に記載の情報処理装置。
【請求項５】
前記プログラムの前記第２の部分を記憶する第２のメモリをさらに有し、
前記第２のプロセッサは、前記プログラムの前記第２の部分からスキャン演算値を算出するスキャンプログラムを生成し、前記スキャンプログラムを用いて算出した第１のスキャン演算値を前記第１のメモリに記憶し、前記スキャンプログラムを前記第１のプロセッサへ出力し、かつ、
前記第１のプロセッサが前記第２のメモリに対して前記スキャンプログラムを実行することにより得られた第２のスキャン演算値を含む前記情報保護部宛てのコマンドを受け取ると、前記第１のスキャン演算値と前記第２のスキャン演算値を比較し、前記第１のスキャン演算値と前記第２のスキャン演算値が異なる場合、前記第１のプロセッサへ前記プログラムの前記第２の部分が改ざんされていることを示す信号を送信する、請求項２〜４の何れか一項に記載の情報処理装置。
【請求項６】
前記第２のプロセッサは、前記スキャンプログラムを変更し、前記スキャンプログラムが変更される度に変更後のスキャンプログラムを用いて前記第１のスキャン演算値を算出するとともに、該変更後のスキャンプログラムを前記第１のプロセッサへ出力する、請求項５に記載の情報処理装置。
【請求項７】
前記第２のプロセッサは、前記プログラムを第１の部分と第２の部分に分割するときに、前記プログラムの前記第２の部分内に所定の演算を行う認証コードを追加するとともに、該所定の演算により得られた第１の値を前記第１のメモリに記憶し、かつ、
前記第１のプロセッサが前記プログラムの前記第２の部分の実行中に前記認証コードに達することにより該認証コードに従って前記所定の演算を行って得られた第２の値を含む前記情報保護部宛てのコマンドを受け取ると、前記第１の値と前記第２の値を比較し、前記第１の値と前記第２の値が異なる場合、前記第１のプロセッサへ前記プログラムを停止させることを示す信号を送信する、請求項２に記載の情報処理装置。
【請求項８】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、タイミング信号を生成するタイミング回路をさらに有し、
前記第２のプロセッサは、前記プログラムの前記第２の部分を前記第１のプロセッサへ出力してからの経過時間を前記タイミング信号に基づいて計時し、該経過時間が所定時間に達しても、前記第２の値を含む前記情報保護部宛てのコマンドを受け取っていない場合、前記第１のプロセッサへ前記プログラムを停止させることを示す信号を送信する、請求項７に記載の情報処理装置。
【請求項９】
前記第１のプロセッサが参照可能であり、かつ、暗号化された情報を記憶する第２のメモリをさらに有し、
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、入力された値に対して所定の演算を行う暗号回路をさらに有し、
前記第１のメモリは、過去の所定時点における前記暗号化された情報を前記暗号回路に入力することにより得られた第１の値を記憶し、
前記第２のプロセッサは、前記第１のプロセッサから前記第２のメモリに記憶された前記暗号化された情報を含む前記情報保護部宛てのコマンドを受け取ると、当該コマンドに含まれる前記暗号化された情報を前記暗号回路に入力することにより第２の値を求め、前記第１の値と前記第２の値が異なっていると前記第１のプロセッサへ前記第２のメモリに記憶されている前記暗号化された情報が改ざんされていることを示す信号を送信する、請求項１に記載の情報処理装置。
【請求項１０】
第１のプロセッサと、情報保護部と、前記情報保護部と前記第１のプロセッサとを接続する通信路とを有し、前記情報保護部は、前記情報保護部を前記通信路と接続するインターフェース回路と、第２のプロセッサと、前記第１のプロセッサから参照できず、一方、前記第２のプロセッサから参照可能なメモリとを有する情報処理装置における情報処理方法であって、
前記インターフェース回路は、前記通信路を介して受信したコマンドが前記情報保護部宛てのコマンドか否か判定し、
前記受信したコマンドが前記情報保護部宛てのコマンドである場合、前記第２のプロセッサは、当該コマンドに従って、前記メモリに記憶された情報に関する処理を実行する、
ことを含む情報処理方法。
【手続補正書】
【提出日】平成28年12月27日(2016.12.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
情報保護部と、
前記情報保護部と前記第１のプロセッサとを接続する第１の通信路とを有し、
前記情報保護部は、
前記情報保護部を前記第１の通信路と接続するインターフェース回路と、
第２のプロセッサと、
前記第１のプロセッサから参照できず、一方、前記第２のプロセッサから参照可能な第１のメモリとを有し、
前記インターフェース回路は、前記第１の通信路から受信したコマンドが、前記情報保護部に対する処理コマンドである場合、当該コマンドを前記第２のプロセッサに渡し、一方、前記第１の通信路から受信したコマンドが、前記情報保護部に対する処理コマンドでない場合、当該コマンドを前記第２のプロセッサに渡さず、
前記第２のプロセッサは、前記第１のプロセッサから前記第１の通信路を介して前記情報保護部に対する処理コマンドを受信すると、前記第１のメモリに記憶された情報に関する処理を実行する、
情報処理装置。
【請求項２】
前記第１のメモリは、プログラムを記憶し、
前記第２のプロセッサは、前記情報保護部に対する処理コマンドとして前記プログラムを実行するコマンドを受け取ると、前記プログラムを第１の部分と第２の部分に分割し、前記プログラム中の前記第１の部分を示す情報と前記第２の部分とを前記第１のプロセッサへ出力し、前記第１のプロセッサから前記情報保護部に対する処理コマンドとして前記第１の部分を実行するコマンドを受け取ると前記第１の部分の処理を実行する、請求項１に記載の情報処理装置。
【請求項３】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、
前記第２のプロセッサは、前記情報保護部に対する処理コマンドとして前記プログラムを実行するコマンドを受け取る度に、前記乱数発生回路に乱数を発生させ、前記第１のメモリに記録された乱数と前記第２の部分の対応関係を表すテーブルを参照して前記発生した乱数に対応する前記第２の部分を特定することで、前記プログラムの前記第２の部分を変更する、請求項２に記載の情報処理装置。
【請求項４】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、乱数を発生させる乱数発生回路をさらに有し、かつ、前記プログラムは複数のモジュールを有し、
前記第２のプロセッサは、前記情報保護部に対する処理コマンドとして前記プログラムを実行するコマンドを受け取る度に、前記乱数発生回路に乱数を発生させ、前記第１のメモリに記録された乱数と前記第２の部分に属するモジュールの対応関係を表すテーブルを参照して前記発生した乱数に対応する前記第２の部分に属するモジュールを特定することで、前記複数のモジュールのうち前記第１の部分に属するモジュールと前記第２の部分に属するモジュールの組み合わせを変更する、請求項２に記載の情報処理装置。
【請求項５】
前記プログラムの前記第２の部分を記憶する第２のメモリをさらに有し、
前記第２のプロセッサは、前記プログラムの前記第２の部分からスキャン演算値を算出するスキャンプログラムを生成し、前記スキャンプログラムを用いて算出した第１のスキャン演算値を前記第１のメモリに記憶し、前記スキャンプログラムを前記第１のプロセッサへ出力し、かつ、
前記第１のプロセッサが前記第２のメモリに対して前記スキャンプログラムを実行することにより得られた第２のスキャン演算値を含む前記情報保護部に対する処理コマンドを受け取ると、前記第１のスキャン演算値と前記第２のスキャン演算値を比較し、前記第１のスキャン演算値と前記第２のスキャン演算値が異なる場合、前記第１のプロセッサへ前記プログラムの前記第２の部分が改ざんされていることを示す信号を送信する、請求項２〜４の何れか一項に記載の情報処理装置。
【請求項６】
前記第２のプロセッサは、前記スキャンプログラムを変更し、前記スキャンプログラムが変更される度に変更後のスキャンプログラムを用いて前記第１のスキャン演算値を算出するとともに、該変更後のスキャンプログラムを前記第１のプロセッサへ出力する、請求項５に記載の情報処理装置。
【請求項７】
前記第２のプロセッサは、前記プログラムを第１の部分と第２の部分に分割するときに、前記プログラムの前記第２の部分内に所定の演算を行う認証コードを追加するとともに、該所定の演算により得られた第１の値を前記第１のメモリに記憶し、かつ、
前記第１のプロセッサが前記プログラムの前記第２の部分の実行中に前記認証コードに達することにより該認証コードに従って前記所定の演算を行って得られた第２の値を含む前記情報保護部に対する処理コマンドを受け取ると、前記第１の値と前記第２の値を比較し、前記第１の値と前記第２の値が異なる場合、前記第１のプロセッサへ前記プログラムを停止させることを示す信号を送信する、請求項２に記載の情報処理装置。
【請求項８】
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、タイミング信号を生成するタイミング回路をさらに有し、
前記第２のプロセッサは、前記プログラムの前記第２の部分を前記第１のプロセッサへ出力してからの経過時間を前記タイミング信号に基づいて計時し、該経過時間が所定時間に達しても、前記第２の値を含む前記情報保護部に対する処理コマンドを受け取っていない場合、前記第１のプロセッサへ前記プログラムを停止させることを示す信号を送信する、請求項７に記載の情報処理装置。
【請求項９】
前記第１のプロセッサが参照可能であり、かつ、暗号化された情報を記憶する第２のメモリをさらに有し、
前記情報保護部は、前記第１のプロセッサから参照不可能で、前記第２のプロセッサから参照可能であり、かつ、入力された値に対して所定の演算を行う暗号回路をさらに有し、
前記第１のメモリは、過去の所定時点における前記暗号化された情報を前記暗号回路に入力することにより得られた第１の値を記憶し、
前記第２のプロセッサは、前記第１のプロセッサから前記第２のメモリに記憶された前記暗号化された情報を含む前記情報保護部に対する処理コマンドを受け取ると、当該コマンドに含まれる前記暗号化された情報を前記暗号回路に入力することにより第２の値を求め、前記第１の値と前記第２の値が異なっていると前記第１のプロセッサへ前記第２のメモリに記憶されている前記暗号化された情報が改ざんされていることを示す信号を送信する、請求項１に記載の情報処理装置。
【請求項１０】
第１のプロセッサと、情報保護部と、前記情報保護部と前記第１のプロセッサとを接続する通信路とを有し、前記情報保護部は、前記情報保護部を前記通信路と接続するインターフェース回路と、第２のプロセッサと、前記第１のプロセッサから参照できず、一方、前記第２のプロセッサから参照可能なメモリとを有する情報処理装置における情報処理方法であって、
前記インターフェース回路は、前記通信路を介して受信したコマンドが前記情報保護部に対する処理コマンドか否か判定し、
前記受信したコマンドが前記情報保護部に対する処理コマンドである場合、前記第２のプロセッサは、当該コマンドに従って、前記メモリに記憶された情報に関する処理を実行する、
ことを含む情報処理方法。
【国際調査報告】
2015045172.tif 000010
2015045172.tif 000011
2015045172.tif 000012
2015045172.tif 000013