(57)【要約】      （修正有）【課題】鍵のリニューアル及び鍵のリボークを容易に行う復号回路を実現する。【解決手段】暗号化ファームウェアと共に入力されるファームウェア鍵バージョン情報が示すバージョン「ｎ」と、有効鍵バージョン記憶部に記憶している有効鍵バージョン情報が示すバージョン「Ｎ」とを比較し、この比較結果に応じて、有効鍵バージョン情報が示すバージョン「Ｎ」を、ファームウェア鍵バージョン情報が示すバージョン「ｎ」に更新するようにする。鍵をリニューアルするための特別な命令が入力されなくとも、暗号化ファームウェアの復号時に、自動的に鍵のリニューアルを行うことができ、このとき同時に、更新前まで有効であったバージョンの鍵が無効になるため自動的に鍵をリボークすることができるので、煩雑な操作を行うことなく、暗号化ファームウェアの復号時に、必要に応じて自動的に鍵のリニューアル及び鍵のリボークを行うことができる。【選択図】図３
2006245704.tif 000002
【特許請求の範囲】
【請求項１】
有効な鍵のバージョンを記憶する有効鍵バージョン記憶部と、
複数のバージョンの鍵を記憶する鍵記憶部と、
暗号化データと共に入力される鍵のバージョンと上記有効鍵バージョン記憶部に記憶される有効な鍵のバージョンとを比較することにより、上記入力される鍵のバージョンが有効であるか否かを検証する検証部と、
上記検証部による検証結果に応じて、上記鍵記憶部に記憶される上記入力される鍵のバージョンに対応する鍵を用いて、入力される上記暗号化データを復号する復号部と、
上記復号部による復号が成功し、かつ上記入力される鍵のバージョンと上記有効鍵バージョン記憶部に記憶される上記有効な鍵のバージョンとが異なるとき、当該有効バージョン記憶部に記憶される当該有効な鍵のバージョンを当該入力される鍵のバージョンに更新した後に、上記復号部で復号された平文データを出力する更新部と
を具えることを特徴とする復号回路。
【請求項２】
上記入力される暗号化データは、暗号化されたファームウェアである
ことを特徴とする請求項１に記載の復号回路。
【請求項３】
上記有効鍵バージョン記憶部と上記鍵記憶部とが同一メモリである
ことを特徴とする請求項１に記載の復号回路。
【請求項４】
上記検証部は、
上記入力される鍵のバージョンが、上記鍵記憶部に記憶される鍵の複数のバージョンの範囲内であり、かつ上記有効鍵バージョン記憶部に記憶される上記有効な鍵のバージョンに対応するとき、当該入力される鍵のバージョンが有効であると判定する
ことを特徴とする請求項１に記載の復号回路。
【請求項５】
特定の鍵により暗号化された暗号化データと、当該特定の鍵のバージョンとを記憶する暗号化データ記憶手段と、
有効な鍵のバージョンを記憶する有効鍵バージョン記憶手段と、複数のバージョンの鍵を記憶する鍵記憶手段と、暗号化データと共に入力される鍵のバージョンと上記有効鍵バージョン記憶手段に記憶される有効な鍵のバージョンとを比較することにより、上記入力される鍵のバージョンが有効であるか否かを検証する検証手段と、当該検証手段による検証結果に応じて、上記鍵記憶手段に記憶される上記入力される鍵のバージョンに対応する鍵を用いて、入力される上記暗号化データを復号する復号手段と、当該復号手段による復号が成功し、かつ上記入力される鍵のバージョンと上記有効鍵バージョン記憶手段に記憶される上記有効な鍵のバージョンとが異なるとき、当該有効バージョン記憶手段に記憶される当該有効な鍵のバージョンを当該入力される鍵のバージョンに更新した後に、上記復号手段で復号された平文データを出力する更新手段とを有する信号処理手段と
を具えることを特徴とする復号装置。
【請求項６】
上記入力される暗号化データは、暗号化されたファームウェアであり、上記信号処理手段から出力される上記平文データとしてのファームウェアを実行するファームウェア実行手段を具える
ことを特徴とする請求項５に記載の復号装置。
【請求項７】
上記復号手段が用いた上記鍵を用いて、入力される暗号化データを復号する更なる復号手段を具える
ことを特徴とする請求項５に記載の復号装置。
【請求項８】
更に、
上記復号手段が用いた上記鍵を用いて、入力されるデータを暗号化する暗号化手段と、
上記復号手段が用いた上記鍵を用いて、入力されるデータのＭＡＣ値を算出するＭＡＣ手段と
を具える
ことを特徴とする請求項５に記載の復号装置。
【請求項９】
暗号化データと共に入力される鍵のバージョンと、記憶される有効な鍵のバージョンとを比較することにより、上記入力される鍵のバージョンが有効であるか否かを検証する検証ステップと、
上記検証ステップでの検証結果に応じて、記憶される上記入力される鍵のバージョンに対応する鍵を用いて、入力される上記暗号化データを復号する復号ステップと、
上記復号ステップでの復号が成功し、かつ上記入力される鍵のバージョンと上記有効な鍵のバージョンとが異なるとき、上記記憶される当該有効な鍵のバージョンを当該入力される鍵のバージョンに更新した後に、上記復号ステップで復号された平文データを出力する更新ステップと
を具えることを特徴とする復号方法。
【請求項１０】
信号処理装置に対して、
暗号化データと共に入力される鍵のバージョンと、記憶される有効な鍵のバージョンとを比較することにより、上記入力される鍵のバージョンが有効であるか否かを検証する検証ステップと、
上記検証ステップでの検証結果に応じて、記憶される上記入力される鍵のバージョンに対応する鍵を用いて、入力される上記暗号化データを復号する復号ステップと、
上記復号ステップでの復号が成功し、かつ上記入力される鍵のバージョンと上記有効な鍵のバージョンとが異なるとき、上記記憶される当該有効な鍵のバージョンを当該入力される鍵のバージョンに更新した後に、上記復号ステップで復号された平文データを出力する更新ステップと
を実行させることを特徴とする復号プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は復号回路に関し、例えば暗号化データを復号するモジュールに適用して好適なものである。
【背景技術】
【０００２】
近年、インターネット等のネットワークを介した種々のコンテンツ配信サービスが広く普及している。このようなコンテンツ配信サービスでは、ＣＤやＤＶＤといった媒体を介してではなく、コンテンツのデータ（以下、これをコンテンツデータとも呼ぶ）そのものを所定のサーバからネットワークを介してユーザの端末に提供するようになされているため、コンテンツの不正利用を防止することがいっそう強く求められており、このため様々なセキュリティ対策が講じられている。
【０００３】
このようなセキュリティ対策のひとつとして、外部からの不正な解析や改竄を困難にした特殊なモジュール（いわゆるタンパレジスタントモジュール）を実装した端末が広く利用されている（例えば特許文献１参照）。
【０００４】
実際上、このようなモジュールを実装した端末では、例えば、コンテンツの利用に係わる暗号化データの復号を、このモジュール内で実行することにより、この復号の処理をブラックボックス化して、コンテンツの不正利用を防止するようになされている。
【特許文献１】特開２００１−２２２７１公報（第９図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、上述のようなモジュールが、ある程度限定された目的に使用するデータの暗号化を行う場合、予めモジュール内に、暗号化データの復号に使用する鍵を書き込んでおくことが多い。このようにすれば、モジュールに対して、所望の暗号化データを入力するだけで、モジュールの出力から、暗号化データを復号したデータを得ることができるので、モジュールに対する煩雑な操作を行うことなく、モジュールを利用することができる。このように、モジュールの利用を簡易化することは、例えば、端末の製造業者（すなわちモジュールの利用者）に対して、モジュールを単体で配布するような場合、大きな利点となる。
【０００６】
一方で、このように鍵をモジュール内に書き込んでおく場合、この鍵が破られたときの対策を講じておく必要がある。そこで従来、モジュール内に複数の鍵を書き込んでおき、ある鍵が破られた場合、破られていない別の鍵を使用するようにして、破られた鍵を使用できなくするといった対策を講じていた。ここで、破られた鍵に代えて別の鍵を使用するようにすることを「鍵をリニューアルする」と言い、このような処理を「リニューアル処理」と呼ぶ。また破られた鍵の使用を禁止することを「鍵をリボークする」と言い、このような処理を「リボーク処理」と呼ぶ。
【０００７】
ところが、このようにリニューアル／リボーク処理を行う場合、例えば、どの鍵をどの鍵にリニューアルするのか、あるいはどの鍵をリボークするのかといったリニューアル／リボーク処理のための特別な命令をモジュールに与える必要があるなど、モジュールに対する煩雑な操作を行わなければならなかった。
【０００８】
このように、従来の復号用モジュールでは、鍵のリニューアル及び鍵のリボークを容易に行い得るとは言い難いという問題があった。
【０００９】
本発明は以上の点を考慮してなされたもので、鍵のリニューアル及び鍵のリボークを一段と容易に行い得る復号回路を提案しようとするものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するため本発明の復号回路においては、有効な鍵のバージョンを記憶する有効鍵バージョン記憶部と、複数のバージョンの鍵を記憶する鍵記憶部と、暗号化データと共に入力される鍵のバージョンと有効鍵バージョン記憶部に記憶される有効な鍵のバージョンとを比較することにより、入力される鍵のバージョンが有効であるか否かを検証する検証部と、検証部による検証結果に応じて、鍵記憶部に記憶される入力される鍵のバージョンに対応する鍵を用いて、入力される暗号化データを復号する復号部と、復号部による復号が成功し、かつ入力される鍵のバージョンと有効鍵バージョン記憶部に記憶される有効な鍵のバージョンとが異なるとき、当該有効バージョン記憶部に記憶される当該有効な鍵のバージョンを当該入力される鍵のバージョンに更新した後に、復号部で復号された平文データを出力する更新部とを設けるようにした。
【００１１】
このように、暗号化データを復号する際に、当該暗号化データと共に入力される鍵のバージョンと有効鍵バージョン記憶部に記憶される有効な鍵のバージョンとを比較し、この比較結果に応じて、有効鍵バージョン記憶部に記憶される有効な鍵のバージョンを、入力される鍵のバージョンに更新して鍵をリニューアルするようにしたことにより、例えば、どの鍵をどの鍵にリニューアルするのかといった、鍵をリニューアルするための特別な命令が入力されなくとも、暗号化データの復号時に、自動的に鍵のリニューアルを行うことができる。
【００１２】
また、このように有効鍵バージョン記憶部に記憶される有効な鍵のバージョンを、入力される鍵のバージョンに更新するようにしたことにより、このとき同時に、更新前まで有効であったバージョンの鍵が無効になるため自動的に鍵をリボークすることができる。
【発明の効果】
【００１３】
本発明によれば、暗号化データを復号する際に、当該暗号化データと共に入力される鍵のバージョンと有効鍵バージョン記憶部に記憶される有効な鍵のバージョンとを比較し、この比較結果に応じて、有効鍵バージョン記憶部に記憶される有効な鍵のバージョンを、入力される鍵のバージョンに更新して鍵をリニューアルするようにしたことにより、例えば、どの鍵をどの鍵にリニューアルするのかといった、鍵をリニューアルするための特別な命令が入力されなくとも、暗号化データの復号時に、自動的に鍵のリニューアルを行うことができ、またこのように有効鍵バージョン記憶部に記憶される有効な鍵のバージョンを、入力される鍵のバージョンに更新することにより、このとき同時に、更新前まで有効であったバージョンの鍵が無効になるため自動的に鍵をリボークすることができるので、煩雑な操作を行うことなく、暗号化データの復号時に、必要に応じて自動的に鍵のリニューアル及び鍵のリボークを行うことができ、かくして、鍵のリニューアル及び鍵のリボークを一段と容易に行い得る復号回路を実現することができる。
【発明を実施するための最良の形態】
【００１４】
以下図面について、本発明の一実施の形態を詳述する。
【００１５】
（１）コンテンツ再生装置の構成
図１において、１は全体としてネットワークＮＴを介して配信される楽曲コンテンツを再生可能なコンテンツ再生装置を示し、当該コンテンツ再生装置１の筐体表面やリモートコントローラ（図示せず）に設けられた各種操作ボタンでなる操作入力部２がユーザによって操作されると、当該操作入力部２でこれを認識し、この操作に応じた操作入力信号を入力処理部３に送出する。入力処理部３は、供給される操作入力信号に対して所定の処理を施すことによりこの操作入力信号を操作コマンドに変換し、これをバス４を介してホストＣＰＵ（Central Processing Unit）５に送出する。
【００１６】
ホストＣＰＵ５は、ＲＯＭ（Read Only Memory）６又はハードディスクドライブ７に予め記憶されている基本プログラムやアプリケーションプログラム等の各種プログラムをバス４を介してＲＡＭ（Random Access Memory）８に読み出す。そしてこのホストＣＰＵ５は、これら各種プログラムをＲＡＭ８上に展開し、展開した各種プログラムに従って全体を制御すると共に、所定の演算処理や、入力処理部３から与えられる操作コマンドに応じた処理（例えばコンテンツ取得処理やコンテンツ再生処理等）を実行する。
【００１７】
実際上、ホストＣＰＵ５は、例えば、ユーザにより操作入力部２を介して楽曲コンテンツの取得操作が行われると、これに応じて、通信処理部９及びネットワークインタフェース１０を順次介して、ネットワークＮＴ上のコンテンツ配信サーバ（図示せず）にアクセスし、このコンテンツ配信サーバに対して楽曲コンテンツの配信を要求する要求信号を送信する。
【００１８】
コンテンツ配信サーバは、所定の暗号化を施したコンテンツデータ（以下、これを暗号化コンテンツデータとも呼ぶ）を蓄積しており、コンテンツ再生装置１からアクセスされると、このコンテンツ再生装置１との間で所定のユーザ認証処理を行い、コンテンツ再生装置１が正規ユーザであると確認できた場合にのみ、コンテンツ再生装置１から送られてくる要求信号に応じて、要求された楽曲コンテンツに対応する暗号化コンテンツデータを、ネットワークＮＴを介してコンテンツ再生装置１に送信する。またこのときコンテンツ配信サーバは、例えば要求された楽曲コンテンツが有料であれば、この楽曲コンテンツの配信にともなう対価をコンテンツ再生装置１のユーザに対して課金するための課金処理を実行する。
【００１９】
コンテンツ再生装置１のホストＣＰＵ５は、コンテンツ配信サーバから配信される暗号化コンテンツデータをネットワークインタフェース１０及び通信処理部９を順次介して取り込み、これをハードディスクドライブ７に記録する。
【００２０】
そしてホストＣＰＵ５は、ユーザにより操作入力部２を介してハードディスクドライブ７内の暗号化コンテンツデータに対する再生操作が行われると、これに応じて、指定された暗号化コンテンツデータをハードディスクドライブ７から読み出し、この暗号化コンテンツデータをデータ復号モジュール１１に送出する。
【００２１】
データ復号モジュール１１は、暗号化データの復号を行うモジュールであり、例えば、ハードディスクドライブ７から読み出された暗号化コンテンツデータを復号することにより暗号化を解いたコンテンツデータを得、このコンテンツデータを音声処理部１２に送出する。
【００２２】
音声処理部１２は、データ復号モジュール１１から供給されるコンテンツデータに対してデジタルアナログ変換処理やイコライジング処理等の音声処理を施し、この結果得られる音声信号をスピーカＳＰに送出して、スピーカＳＰからこの音声信号に基づく音声を出力する。
【００２３】
さらに、このコンテンツ再生装置１は、データ復号モジュール１１に加えて、暗号化モジュール１３、ＭＡＣ（Message Authentication Code）モジュール１４、及びファームウェア復号モジュール１５を有している。
【００２４】
暗号化モジュール１３は、各種データの暗号化を行うモジュールであり、例えば、コンテンツ配信サーバに送信する送信データを暗号化する。こうすることでコンテンツ再生装置１では、送信データが送信経路で傍受されるのを防止する。またＭＡＣモジュール１４は、各種データのＭＡＣ値を算出するモジュールであり、例えば、復号したコンテンツデータのＭＡＣ値を算出する。そしてコンテンツ再生装置１では、コンテンツデータに付随するＭＡＣ値と、このＭＡＣモジュール１４で算出したＭＡＣ値とを比較することで、コンテンツデータの正当性を検証する。
【００２５】
ファームウェア復号モジュール１５は、暗号化ファームウェアの復号を行うモジュールであり、ハードディスクドライブ７から読み出された暗号化ファームウェアを復号することにより、暗号化を解いたファームウェアを得、これを出力する。このファームウェアは、例えば、他のモジュール（データ復号モジュール１１、暗号化モジュール１４、及びＭＡＣモジュール１５）の機能に対応するファームウェアであり、このファームウェアが、ファームウェア復号モジュール１５から他のモジュールに供給されることで、他のモジュールでファームウェアに応じた機能を実現するようになされている。
【００２６】
実際上、ファームウェア復号モジュール１５は、内部に書き込まれているファームウェア復号用の鍵と、ファームウェア復号用のプログラムとを用いて、供給される暗号化ファームウェアを復号し、この結果得られるファームウェアを、対応するモジュールに出力する。ちなみに、ここでは、ファームウェアを暗号化した鍵を用いて、暗号化したファームウェアを復号することができるものとする。
【００２７】
さらに、このファームウェア復号モジュール１５は、内部にファームウェアの復号に用いる鍵が書き込まれているため、この鍵が破られた場合の対策として、リニューアル／リボーク処理を実行し得るようにもなされている。
【００２８】
ここで実際上、このファームウェア復号モジュール１５で、どのようにリニューアル／リボーク処理を実行するのかを、ファームウェア復号モジュール１５の内部構成と合わせて説明する。
【００２９】
（２）ファームウェア復号モジュールの内部構成及びリニューアル／リボーク処理手順
まず、ファームウェア復号モジュール１５の内部構成について、図２を用いて説明する。図２に示すように、ファームウェア復号モジュール１５は、複数バージョンの鍵を記憶する鍵記憶部２０を有しており、この鍵記憶部２０に書き込まれた複数バージョンの鍵を利用して、リニューアル／リボーク処理を実行するようになされている。この鍵記憶部２０は、外部からのアクセスが禁止された例えばＲＯＭであり、ここでは説明の便宜上、バージョン「１」〜バージョン「１０」までの１０個の鍵が書き込まれているものとする。
【００３０】
また、このファームウェア復号モジュール１５は、現在どのバージョンの鍵が有効であるのか（すなわち現在どのバージョンの鍵を使用すべきであるのか）を示す有効鍵バージョン情報を記憶する有効鍵バージョン記憶部２１を有している。この有効鍵バージョン記憶部２１は、外部からのアクセスが禁止された例えば不揮発性メモリである。ちなみに、ここでは、番号の小さいバージョンの鍵から使用するようになされている。すなわち、例えば有効鍵バージョン情報が示すバージョンが「３」であれば、バージョン「１」とバージョン「２」の鍵は既にリボークされ、バージョン「３」の鍵が現在使用すべき鍵であり、バージョン「４」、「５」、「６」、「７」、「８」、「９」、「１０」の鍵が未使用であることを表す。
【００３１】
実際上、このようなファームウェア復号モジュール１５に対して、外部から暗号化ファームウェアと共に、この暗号化ファームウェアを暗号化している鍵のバージョンが示されたファームウェア鍵バージョン情報とが供給される。ちなみに、このファームウェア鍵バージョン情報は、対応する暗号化ファームウェアに紐付けられた状態で、この暗号化ファームウェアと共にハードディスクドライブ７に記録されており、ここでは説明の便宜上、ファームウェア鍵バージョン情報が示すバージョンを「ｎ」、有効鍵バージョン情報が示すバージョンを「Ｎ」とする。
【００３２】
これら暗号化ファームウェア及びファームウェア鍵バージョン情報は、まずファームウェア復号モジュール１５のバージョン検証部２２に入力される。バージョン検証部２２は、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報が示すバージョン「Ｎ」と、入力されたファームウェア鍵バージョン情報が示すバージョン「ｎ」とを比較する。そしてこの比較の結果、入力されたファームウェア鍵バージョン情報が示すバージョン「ｎ」の鍵が有効である（実際には、入力されたファームウェア鍵バージョン情報が示すバージョン「ｎ」が、バージョン「１」〜「１０」の間で、かつ有効鍵バージョン情報が示すバージョン「Ｎ」以上である）と確認できた場合、バージョン検証部２２は、暗号化ファームウェア及び鍵バージョン情報を復号部２３に供給する。
【００３３】
復号部２３は、供給されるファームウェア鍵バージョン情報が示すバージョン「ｎ」の鍵を鍵記憶部２０から読み出し、この鍵を使用して暗号化ファームウェアを復号することにより、暗号化を解いたファームウェアを得る。ここで、この復号部２３は、得られたファームウェアのＭＡＣ値を算出し、この算出したＭＡＣ値と、復号したファームウェアに付随しているＭＡＣ値とを比較することにより、復号したファームウェアの正当性を検証するようにもなされている。そして、この検証の結果、復号したファームウェアの正当性が確認できた場合、復号部２３は、このファームウェア及びファームウェア鍵バージョン情報をリニューアル処理部２４に供給する。
【００３４】
ここでリニューアル処理部２４は、リニューアル処理を行う必要があるか否かを判断する。つまりリニューアル処理部２４は、供給されるファームウェア鍵バージョン情報が示すバージョン「ｎ」が、有効鍵バージョン記憶部２１に記憶されている有効鍵バージョン情報が示すバージョン「Ｎ」よりも大きい場合、このとき有効鍵バージョン情報が示すバージョン「Ｎ」の鍵が破られており、リニューアル処理を実行する必要があると判断して、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報のバージョン「Ｎ」を、供給されたファームウェア鍵バージョン情報のバージョン「ｎ」に更新してリニューアル処理を行う。
【００３５】
このようなリニューアル処理を行うことにより、ファームウェア復号モジュール１５の復号部２３では、次回以降、バージョン「ｎ」以上の鍵でなければ暗号化ファームウェアを復号できなくなる。つまり、このリニューアル処理により、リニューアル処理部２４は、有効鍵バージョン情報のバージョン「Ｎ」をバージョン「ｎ」に更新する（リニューアルする）と共に、バージョン「Ｎ」の鍵の使用を禁止する（リボークした）ことになる。
【００３６】
このようにしてリニューアル／リボーク処理を行った後、リニューアル処理部２４は、ファームウェアを出力する。ただし、リニューアル処理を行う必要がないと判断した場合には、リニューアル処理を行わずにファームウェアを出力する。
【００３７】
このように、ファームウェア復号モジュール１５では、暗号化ファームウェアと共に外部から供給されるファームウェア鍵バージョン情報と、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報とを比較し、この比較結果に応じて、リニューアル／リボーク処理を実行する。
【００３８】
かくして、ホストＣＰＵ５側（すなわちファームウェア復号モジュール１５の利用者側）から見れば、例えばバージョン「１」の鍵が破られた場合、このときハードディスクドライブ７に記録している、バージョン「１」の鍵で暗号化された暗号化ファームウェアと、バージョン「１」を示すファームウェア鍵バージョン情報とを、バージョン「２」の鍵で暗号化された暗号化ファームウェアと、バージョン「２」を示すファームウェア鍵バージョン情報とに更新し、ファームウェア復号モジュール１５による復号時に、バージョン「２」の鍵で暗号化された暗号化ファームウェアと、バージョン「２」を示すファームウェア鍵バージョン情報とを、ファームウェア復号モジュール１５に入力するだけで、自動的にバージョン「１」の鍵をバージョン「２」の鍵にリニューアルすると共に、バージョン「１」の鍵をリボークすることができる。
【００３９】
すなわち、ファームウェア復号モジュール１５は、暗号化ファームウェアと共に入力されるファームウェア鍵バージョン情報をもとに、自動的にリニューアル／リボーク処理を行うことができる。
【００４０】
ここで、ファームウェア復号モジュール１５によるリニューアル／リボーク処理手順について、図３のフローチャートを用いて、より詳しく説明する。
【００４１】
ファームウェア復号モジュール１５は、外部から暗号化ファームウェア及びファームウェア鍵バージョン情報が供給されると、リニューアル／リボーク処理手順ＲＴ１を開始して、ステップＳＰ１に移る。
【００４２】
ステップＳＰ１において、ファームウェア復号モジュール１５は、供給された暗号化ファームウェア及びファームウェア鍵バージョン情報をバージョン検証部２２に入力して、次のステップＳＰ２に移る。
【００４３】
ステップＳＰ２において、ファームウェア復号モジュール１５は、バージョン検証部２２により、ファームウェア鍵バージョン情報が示すバージョン「ｎ」が、鍵記憶部２０に書き込まれている鍵のバージョンの範囲内であるか否かを判定する。つまり、このステップＳＰ２では、ファームウェア鍵バージョン情報が示すバージョン「ｎ」が、鍵記憶部２０に書き込まれている鍵のバージョンの最小値であるバージョン「Ｎｍｉｎ」（すなわちバージョン「１」）以上で、かつ最大値であるバージョン「Ｎｍａｘ」（すなわちバージョン「１０」）以下であるか否かを判定する。
【００４４】
ここで否定結果を得ると、このことは、例えば、鍵記憶部２０に記憶されている鍵のバージョンがバージョン「１」〜「１０」であるにも係わらず、バージョン「１」〜「１０」の範囲外のバージョン「０」を示すファームウェア鍵バージョン情報が入力されたことを表し、このときファームウェア復号モジュール１５は、このファームウェア鍵バージョン情報が不正なものであると認識して、以降の処理を中止して終了ステップＳＰ９に移り、このリニューアル／リボーク処理手順ＲＴ１を終了する。
【００４５】
これに対してこのステップＳＰ２で肯定結果を得ると、ファームウェア復号モジュール１５は、ファームウェア鍵バージョン情報が示すバージョン「ｎ」が、鍵記憶部２０に記憶されている鍵のバージョンの範囲内であると認識して、次のステップＳＰ３に移る。
【００４６】
ステップＳＰ３において、ファームウェア復号モジュール１５は、ファームウェア鍵バージョン情報が示すバージョン「ｎ」の鍵が、リボークされていない鍵であるか否かを判定する。つまり、このステップＳＰ３では、ファームウェア鍵バージョン情報が示すバージョン「ｎ」が、有効鍵バージョン記憶部２１に記憶されている有効鍵バージョン情報が示すバージョン「Ｎ」以上であるか否かを判定する。
【００４７】
ここで否定結果を得ると、このことは、ファームウェア鍵バージョン情報が示すバージョン「ｎ」の鍵が、すでにリボークされていることを表し、このときファームウェア復号モジュール１５は、以降の処理を中止して終了ステップＳＰ９に移り、このリニューアル／リボーク処理手順ＲＴ１を終了する。
【００４８】
これに対して、このステップＳＰ３で肯定結果を得ると、ファームウェア復号モジュール１５は、ファームウェア鍵バージョン情報が示すバージョン「ｎ」の鍵が、リボークされておらず、使用可能な鍵であると認識して、次のステップＳＰ４に移る。
【００４９】
ステップＳＰ４において、ファームウェア復号モジュール１５は、復号部２３により、ファームウェア鍵バージョン情報が示すバージョン「ｎ」の鍵を鍵記憶部２０から読み出して、この読み出したバージョン「ｎ」の鍵を用いて暗号化ファームウェアを復号し、さらに復号したファームウェアに対して、上述したようなＭＡＣ値を利用した検証を行い、次のステップＳＰ５に移る。
【００５０】
ステップＳＰ５において、ファームウェア復号モジュール１５は、復号部２３による、暗号化ファームウェアの復号処理が正常に終了したか否かを判定する。ここで否定結果を得ると、このことは、例えば、暗号化ファームウェアを暗号化している鍵と、ファームウェア鍵バージョン情報が示すバージョン「ｎ」の鍵とが異なっていることにより、正常に復号できなかったこと、あるいは復号できたものの、検証の結果、復号したファームウェアが不正に改竄されたものであることを表し、このときファームウェア復号モジュール１５は、以降の処理を中止して終了ステップＳＰ９に移り、このリニューアル／リボーク処理手順ＲＴ１を終了する。
【００５１】
このように、暗号化ファームウェアの復号処理が正常に終了しなかった場合には、以降の処理を中止することで、例えば、暗号化ファームウェアを暗号化している鍵と関係なく、ファームウェア鍵バージョン情報が示すバージョンを大きくして、自由にリニューアル処理を実行するような不正な動作を防止することができる。
【００５２】
これに対して、このステップＳＰ５で肯定結果を得ると、ファームウェア復号モジュール１５は、ステップＳＰ６に移り、このステップＳＰ６において、リニューアル処理部２４によりリニューアル処理を行う必要があるか否かを判定する。つまり、このステップＳＰ６では、ファームウェア鍵バージョン情報が示すバージョン「ｎ」が、有効鍵バージョン記憶部２１に記憶されている有効鍵バージョン情報が示すバージョン「Ｎ」と等しいか否かを判定する。
【００５３】
ここで否定結果を得ると、このことは、ファームウェア鍵バージョン情報が示すバージョン「ｎ」が、有効鍵バージョン記憶部２１に記憶されている有効鍵バージョン情報が示すバージョン「Ｎ」よりも大きく、この結果、バージョン「Ｎ」の鍵が破られていて、リニューアル処理を行う必要があることを表し、このときファームウェア復号モジュール１５は、ステップＳＰ７に移る。
【００５４】
ステップＳＰ７において、ファームウェア復号モジュール１５は、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報が示すバージョン「Ｎ」を、供給されたファームウェア鍵バージョン情報が示すバージョン「ｎ」に更新するリニューアル処理を行う。このとき、バージョン「Ｎ」の鍵は、バージョン「ｎ」の鍵よりもバージョンが小さいので自動的にリボークされることになる。このようにして鍵のリニューアル及び鍵のリボークを行った後、ファームウェア復号モジュール１５は、次のステップＳＰ８に移る。
【００５５】
これに対して、上述のステップＳＰ６で肯定結果を得ると、このことはファームウェア鍵バージョン情報が示すバージョン「ｎ」と、有効鍵バージョン記憶部２１に記憶されている有効鍵バージョン情報が示すバージョン「Ｎ」とが等しく、リニューアル処理を行う必要がないことを表し、このときファームウェア復号モジュール１５は、ステップＳＰ８に移る。
【００５６】
ステップＳＰ８においてファームウェア復号モジュール１５は、復号部２３によって不復号したファームウェアを外部に出力して、終了ステップＳＰ９に移り、このリニューアル／リボーク処理手順ＲＴ１を終了する。
【００５７】
このような手順で、ファームウェア復号モジュール１５は、暗号化ファームウェアを復号する際、必要に応じてリニューアル／リボーク処理を実行するようになされている。
【００５８】
また、コンテンツ再生装置１では、図４に示すように、ファームウェア復号モジュール１５で暗号化ファームウェアの復号に使用する鍵を、他のモジュール（データ復号モジュール１１、暗号化モジュール１４、及びＭＡＣモジュール１５）に受け渡すことで、この鍵を各モジュールで共用するようにもなされている。
【００５９】
ここで、実際上ファームウェア復号モジュール１５は、鍵を暗号化してから、バス４を介して他のモジュールに受け渡すようになされており、これによりこの鍵が、他のモジュールへ受け渡される際に外部（例えばホストＣＰＵ５）から傍受されるのを防止することができる。
【００６０】
したがって、データ復号モジュール１１では、ファームウェア復号モジュール１５から受け渡される鍵を復号し、この復号した鍵を使用して、入力される暗号化データ（例えば暗号化コンテンツデータ）を復号することにより、平文データ（例えばコンテンツデータ）を得、これを出力する。暗号化モジュール１３は、ファームウェア復号モジュール１５から受け渡される鍵を復号し、この復号した鍵を使用して、入力される各種データを暗号化することにより、暗号化データを得、これを出力する。ＭＡＣモジュール１４は、ファームウェア復号モジュール１５から受け渡される鍵を復号し、この復号した鍵を使用して、入力される各種データのＭＡＣ値を算出することにより、ＭＡＣ値を得、これを出力する。
【００６１】
またこのとき、各モジュールでは、同じバージョンの鍵を使用することになる。つまり、ファームウェア復号モジュール１５でのリニューアル／リボーク処理により、ファームウェア復号モジュール１５で使用する鍵が更新されると、これに応じてこのファームウェア復号モジュール１５から他のモジュールに受け渡される鍵も更新される。
【００６２】
この場合、ファームウェア復号モジュール１５でのリニューアル／リボーク処理は、各モジュールに対応するファームウェアを復号するときのみ、すなわち各モジュールを利用するときの初回のみ実行すればよい。こうすることで、各モジュールで鍵を利用する度に毎回リニューアル／リボーク処理を実行することを回避して、ファームウェア復号モジュール１５での処理負荷を低減させることができる。このことは、多くのモジュールで、同一の鍵を使用する場合、特に重要となる。
【００６３】
（３）動作及び効果
以上の構成においてファームウェア復号モジュール１５では、外部から暗号化ファームウェアとファームウェア鍵バージョン情報とが入力されると、まず、このファームウェア鍵バージョン情報が示すバージョン「ｎ」と、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報が示すバージョン「Ｎ」とを比較する。
【００６４】
そしてこの比較の結果、ファームウェア復号モジュール１５は、ファームウェア鍵バージョン情報が示すバージョン「ｎ」が、鍵記憶部２０に書き込まれている鍵のバージョンの範囲内で、かつ有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報が示すバージョン「Ｎ」以上である場合、このファームウェア鍵バージョン情報が示すバージョン「ｎ」が有効であると判断して、バージョン「ｎ」の鍵を、鍵記憶部２０から読み出し、このバージョン「ｎ」の鍵を使用して、入力された暗号化ファームウェアを復号する。
【００６５】
つづいてファームウェア復号モジュール１５は、有効鍵バージョン情報が示すバージョン「Ｎ」の鍵をリニューアルする必要があるか否かを判定する。ここでファームウェア復号モジュール１５は、ファームウェア鍵バージョン情報が示すバージョン「ｎ」が、有効鍵バージョン情報が示すバージョン「Ｎ」よりも大きい場合、有効鍵バージョン情報が示すバージョン「Ｎ」の鍵が破られており、このバージョン「Ｎ」の鍵をリニューアルする必要があると判定して、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報のバージョン「Ｎ」をファームウェア鍵バージョン情報が示すバージョン「ｎ」に更新してリニューアルする。
【００６６】
このとき、ファームウェア復号モジュール１５では、鍵記憶部２０に書き込まれている複数の鍵を、バージョンの小さい順に使用するように設定されているため、バージョン「ｎ」の鍵よりもバージョンが小さいバージョン「Ｎ」の鍵は自動的にリボークされる。
【００６７】
このようにして、必要に応じてリニューアル／リボーク処理を行った後、ファームウェア復号モジュール１５は、復号したファームウェアを出力する。
【００６８】
かくして、ファームウェア復号モジュール１５では、どの鍵をどの鍵にリニューアルするのか、あるいはどの鍵をリボークするのかといったリニューアル／リボーク処理のための特別な命令が外部から入力されなくとも、暗号化ファームウェアの復号時に、暗号化ファームウェアと共に外部から入力されるファームウェア鍵バージョン情報と、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報とを比較し、この比較結果に応じて自動的にリニューアル／リボーク処理を行うことができる。
【００６９】
つまり、このファームウェア復号モジュール１５では、モジュールの利用者（端末のユーザも含む）に対して、リニューアル／リボーク処理を意識させることなく、ファームウェア復号モジュール１５のもともとの機能である暗号化ファームウェアの復号時に、必要に応じて自動的にリニューアル／リボーク処理を行うことができる。
【００７０】
また、このようにファームウェア復号モジュール１５が、必要に応じて自動的にリニューアル／リボーク処理を行うことができるので、モジュールの利用者に対して、リニューアル／リボーク処理を行うための命令を公開せずに、リニューアル／リボーク処理を行うことができる。
【００７１】
この結果、例えばリニューアル／リボーク処理を行うための命令をモジュールの利用者が不正に使用してリニューアル処理を複数回実行させることにより鍵記憶部２０に書き込まれている鍵の数が特定されてしまうといったセキュリティホールを未然に防ぐこともできる。
【００７２】
以上の構成によれば、暗号化ファームウェアを復号する際に、当該暗号化ファームウェアと共に入力されるファームウェア鍵バージョン情報が示すバージョン「ｎ」と、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報が示すバージョン「Ｎ」とを比較し、この比較結果に応じて、有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報が示すバージョン「Ｎ」を、ファームウェア鍵バージョン情報が示すバージョン「ｎ」に更新して鍵をリニューアルするようにしたことにより、例えば、どの鍵をどの鍵にリニューアルするのかといった、鍵をリニューアルするための特別な命令が入力されなくとも、暗号化ファームウェアの復号時に、自動的に鍵のリニューアルを行うことができ、またこのようにして有効鍵バージョン記憶部２１に記憶している有効鍵バージョン情報が示すバージョン「Ｎ」を、ファームウェア鍵バージョン情報が示すバージョン「ｎ」に更新することにより、このとき同時に、更新前まで有効であったバージョンの鍵が無効になるため自動的に鍵をリボークすることができるので、煩雑な操作を行うことなく、暗号化ファームウェアの復号時に、必要に応じて自動的に鍵のリニューアル及び鍵のリボークを行うことができ、かくして、鍵のリニューアル及び鍵のリボークを一段と容易に行うことができる。
【００７３】
（４）他の実施の形態
なお上述の実施の形態においては、ファームウェア復号モジュール１５に加えて、データ復号モジュール１１、暗号化モジュール１３、及びＭＡＣモジュール１４をコンテンツ再生装置１に実装した場合について述べたが、本発明はこれに限らず、コンテンツ再生装置１の機能に合わせて、この他種々のモジュールを実装するようにしてもよい。この場合も、上述の実施の形態と同様に、ファームウェア復号モジュール１５で使用される鍵を、他のモジュールに受け渡して、他のモジュールで行う処理にこの鍵を使用することができる。
【００７４】
また上述の実施の形態においては、ファームウェア復号モジュール１５が、内部に書き込まれたファームウェア復号用のプログラムを実行することで、暗号化データとしての暗号化ファームウェアの復号、及びリニューアル／リボーク処理を行う、いわゆるソフトウェアモジュールである場合について述べたが、本発明はこれに限らず、例えば、ファームウェア復号モジュール１５が、暗号化ファームウェアの復号、及びリニューアル／リボーク処理を行う専用のデバイスを有するハードウェアモジュールであってもよい。
【００７５】
さらに上述の実施の形態においては、ファームウェア実行手段としての、ファームウェア復号モジュール１５、データ復号モジュール１１、暗号化モジュール１３、及びＭＡＣモジュール１４をそれぞれ別々のモジュールとして、コンテンツ再生装置１に実装した場合について述べたが、本発明はこれに限らず、これらファームウェア復号モジュール１５、データ復号モジュール１１、暗号化モジュール１３、及びＭＡＣモジュール１４の機能を有する１個のモジュールを実装するようにしてもよい。この場合、これらの機能をファームウェアでソフトウェア的に実現してもよいし、これらの機能を専用デバイスでハードウェア的に実現してもよい。
【００７６】
さらに上述の実施の形態においては、ファームウェア鍵バージョン情報と、暗号化ファームウェアとを互いに紐付けた状態で、ハードディスクドライブ７に記録しておき、必要に応じてこれらをファームウェア復号モジュール１５に入力するようにした場合について述べたが、本発明はこれに限らず、例えば、暗号化ファームウェアにファームウェア鍵バージョン情報を埋め込んだ状態で、ハードディスクドライブ７に記録しておき、必要に応じてこのファームウェア鍵バージョン情報が埋め込まれた暗号化ファームウェアをファームウェア復号モジュール１５に入力するようにしてもよい。このようにファームウェア鍵バージョン情報を暗号化ファームウェアに埋め込んでおけば、ファームウェア鍵バージョン情報が解析・改竄される危険性を低減させることもできる。
【００７７】
さらに上述の実施の形態においては、鍵記憶部２０及び有効鍵バージョン記憶部２１を別々のメモリ（ＲＯＭ及び不揮発性メモリ）にした場合について述べたが、本発明はこれに限らず、鍵記憶部２０及び有効鍵バージョン記憶部２１を一つのメモリにしてもよい。この場合、有効鍵バージョン記憶部２１が書換可能である必要があるので、利用するメモリとしては、書換可能な不揮発性メモリ等が望ましい。
【００７８】
さらに上述の実施の形態においては、ファームウェア復号モジュール１５を、コンテンツ再生装置１に実装した場合について述べたが、本発明はこれに限らず、データを復号する必要のある復号装置であれば、この他種々の復号装置に実装してもよい。
【００７９】
さらに上述の実施の形態においては、復号部２３により復号したファームウェアの正当性を検証するために、ＭＡＣ値を利用した検証方法を用いた場合について述べたが、本発明はこれに限らず、例えば、ＭＡＣ値の代わりに、ハッシュ値を用いる等、正当性を検証し得る方法であれば、この他種々の方法を用いてもよい。
【００８０】
さらに上述の実施の形態においては、ファームウェア復号モジュール１５が、鍵を暗号化してから、バス４を介して他のモジュールに受け渡すようにした場合について述べたが、本発明はこれに限らず、例えば、ファームウェア復号モジュール１５と他のモジュールとを外部から隠蔽した専用バスで繋ぎ、この専用バスを介して鍵を受け渡すようにしてもよいし、上述のように、ファームウェア復号モジュール１５と他のモジュールとを１つのモジュールとし、このモジュール内で鍵を受け渡すようにしてもよい。このようにしても上述の実施の形態と同様、鍵が他のモジュールに受け渡される際に外部から傍受されるのを防止することができる。
【００８１】
さらに上述の実施の形態においては、有効鍵バージョン記憶部２１と、鍵記憶部２０と、検証部としてのバージョン検証部２２と、復号部２３と、更新部としてのリニューアル処理部２４とによって、復号回路、信号処理手段及び信号処理装置としてのファームウェア復号モジュール１５を構成するようにした場合について述べたが、本発明はこれに限らず、これらと同機能を有するものであれば、この他種々の構成を用いるようにしてもよい。
【００８２】
さらに上述の実施の形態においては、暗号化データ記憶手段としてのハードディスクドライブ７と、信号処理手段としてのファームウェア復号モジュール１５とによって、復号装置及び信号処理装置としてのコンテンツ再生装置１を構成するようにした場合について述べたが、本発明はこれに限らず、これらと同機能を有するものであれば、この他種々の構成を用いるようにしてもよい。
【産業上の利用可能性】
【００８３】
本発明は、内部に書き込まれた鍵を使用して復号を行う回路及び装置で広く利用できる。
【図面の簡単な説明】
【００８４】
【図１】コンテンツ再生装置の全体構成を示す略線図である。
【図２】ファームウェア復号モジュールの内部構成を示す略線図である。
【図３】リニューアル／リボーク処理手順を示すフローチャートである。
【図４】鍵の受け渡しを示す略線図である。
【符号の説明】
【００８５】
１……コンテンツ再生装置、２……操作入力部、３……入力処理部、４……バス、５……ホストＣＰＵ、６……ＲＯＭ、７……ハードディスクドライブ、８……ＲＡＭ、９……通信処理部、１０……ネットワークインタフェース、１１……データ復号モジュール、１２……音声処理部、１３……暗号化モジュール、１４……ＭＡＣモジュール、１５……ファームウェア復号モジュール、２０……鍵記憶部、２１……有効鍵バージョン記憶部、２２……バージョン検証部、２３……復号部、２４……リニューアル処理部、ＮＴ……ネットワーク、ＳＰ……スピーカ。
【図１】
2006245704.tif 000003
【図２】
2006245704.tif 000004
【図３】
2006245704.tif 000005
【図４】
2006245704.tif 000006