説明

記録再生装置、コンテンツ鍵制御方法、プログラム、および記録媒体

【課題】簡単かつ安全に、暗号鍵を管理することができるようにする。
【解決手段】記録再生装置1は、チューナ部20で受信したコンテンツをコンテンツ暗号鍵で暗号化してHDD24に記憶する。コンテンツを暗号化するためのコンテンツ暗号鍵は、USB端子13に接続されたUSBメモリ4から読み出したインストーラに基づいて生成される。すなわち、CPU30は、USBメモリ4から読み出したインストーラに基づいて、記録再生装置1に固有の第1の情報を用いてコンテンツ暗号鍵を生成し、記録再生装置1に固有の第2の情報を用いてコンテンツ暗号鍵をラップする秘密鍵を生成する。そして、CPU30は、コンテンツ暗号鍵を秘密鍵でラップしたラップコンテンツ暗号鍵をフラッシュROM32に格納する。本発明は、例えば、コンテンツ保護が要求される記録再生装置に適用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記録再生装置、コンテンツ鍵制御方法、プログラム、および記録媒体に関し、特に、簡単かつ安全に、暗号鍵を管理することができるようにする記録再生装置、コンテンツ鍵制御方法、プログラム、および記録媒体に関する。
【背景技術】
【0002】
ディジタルの映像信号は、その信号を全く劣化させることなく別の情報記録媒体にコピーすることが可能である。そのため、地上波ディジタル放送や、BS/CSディジタル放送の放送信号を受信して、記録および再生する記録再生装置には、コンテンツを保護する機構を備えることが要求される(例えば、特許文献1参照)。例えば、ARIB(Association of Radio Industries and Businesses)では、コンテンツをハードディスク等の情報記録媒体に記録する際に、所定の暗号鍵で暗号化してから記録すること、および、その暗号鍵は、機器ごとに固有のものとすることが要求されている。
【0003】
そこで、機器を製造するメーカが、コンテンツ保護のための機器ごとの暗号鍵をどのように管理するかが問題となる。また、メーカとしては、各機器に付与した暗号鍵を、機器出荷後にも再利用できる必要がある。即ち、メーカ自身が機器を修理するためにコンテンツの移動等に使用することができることが必要である。また、暗号鍵が万一流出した際に、暗号鍵を無効化できることも必要である。さらに、将来、コンテンツのコピーが可能となった場合に、それを対応可能とすることも想定しておく必要がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2005−276282号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来、機器固有の暗号鍵は、セキュリティの厳重な部屋(セキュリティルーム)で、暗号鍵生成プログラムをコンピュータに実行させ、それにより得られた暗号鍵を、その部屋内で厳重に管理しつつ、各機器に組み込むことが行われていた。しかし、このような方法で暗号鍵を1台1台管理するやり方は、セキュリティルームやコンピュータの設置、鍵の管理に工数や費用がかかるという問題を有していた。
【0006】
PKI(公開鍵基盤)のようなシステムにより暗号鍵を管理すると、出荷後の暗号鍵の更新などにおける利便性は高まるが、PKIでは認証局(certification authority:CA)が必要となるため、システム構築にコストがかかってしまう。
【0007】
本発明は、このような状況に鑑みてなされたものであり、簡単かつ安全に、暗号鍵を管理することができるようにするものである。
【課題を解決するための手段】
【0008】
本発明の一側面の記録再生装置は、コンテンツを記録または再生する記録再生手段と、前記コンテンツを記録または再生する際に、前記コンテンツをコンテンツ暗号鍵で暗号化または復号する暗号化手段と、装置本体と着脱可能な記録媒体から読み出したプログラムに基づいて、前記装置本体に固有の第1の情報を用いて前記コンテンツ暗号鍵を生成し、前記装置本体に固有の第2の情報を用いて前記コンテンツ暗号鍵をラップする秘密鍵を生成し、前記秘密鍵で前記コンテンツ鍵をラップしたラップコンテンツ暗号鍵を生成する生成手段と、生成された前記ラップコンテンツ暗号鍵を、それを無効化する無効化情報とともに記憶する暗号鍵記憶手段とを備える。
【0009】
本発明の一側面のコンテンツ鍵制御方法は、記録再生装置と着脱可能な記録媒体から読み出したプログラムに基づいて、前記記録再生装置に固有の第1の情報を用いてコンテンツを暗号化するコンテンツ暗号鍵を生成し、前記記録再生装置に固有の第2の情報を用いて前記コンテンツ暗号鍵をラップする秘密鍵を生成し、前記秘密鍵で前記コンテンツ鍵をラップしたラップコンテンツ暗号鍵を生成し、生成された前記ラップコンテンツ暗号鍵を、それを無効化する無効化情報とともに記憶する。
【0010】
本発明の一側面のプログラムは、コンピュータに、記録再生装置に固有の第1の情報を用いてコンテンツを暗号化するコンテンツ暗号鍵を生成し、前記記録再生装置に固有の第2の情報を用いて前記コンテンツ暗号鍵をラップする秘密鍵を生成し、前記秘密鍵で前記コンテンツ鍵をラップしたラップコンテンツ暗号鍵を生成し、生成された前記ラップコンテンツ暗号鍵を、それを無効化する無効化情報とともに記憶する処理を実行させる。
【0011】
本発明の一側面の記録媒体は、コンテンツを記録再生する記録再生装置に装着され、前記記録再生装置に、前記記録再生装置に固有の第1の情報を用いてコンテンツを暗号化するコンテンツ暗号鍵を生成させ、前記記録再生装置に固有の第2の情報を用いて前記コンテンツ暗号鍵をラップする秘密鍵を生成させ、前記秘密鍵で前記コンテンツ鍵をラップしたラップコンテンツ暗号鍵を生成させ、生成された前記ラップコンテンツ暗号鍵を、それを無効化する無効化情報とともに記憶させるプログラムが記録されたコンピュータ読み取り可能な記録媒体である。
【0012】
本発明の一側面においては、コンピュータに、記録再生装置に固有の第1の情報を用いてコンテンツを暗号化するコンテンツ暗号鍵が生成され、記録再生装置に固有の第2の情報を用いてコンテンツ暗号鍵をラップする秘密鍵が生成され、秘密鍵でコンテンツ鍵をラップしたラップコンテンツ暗号鍵が生成され、生成されたラップコンテンツ暗号鍵が、それを無効化する無効化情報とともに記憶される。
【0013】
なお、プログラムは、伝送媒体を介して伝送することにより、又は、記録媒体に記録して、提供することができる。
【0014】
記録再生装置は、独立した装置であっても良いし、1つの装置を構成している内部ブロックであっても良い。
【発明の効果】
【0015】
本発明の一側面によれば、簡単かつ安全に、暗号鍵を管理することができる。
【図面の簡単な説明】
【0016】
【図1】本発明を適用した記録再生装置の一実施の形態の構成例を示すブロック図である。
【図2】インストーラが記憶されたUSBメモリの作成手順を説明する図である。
【図3】製造USBメモリに記憶されているデータの例を示す図である。
【図4】インストーラ証明書作成処理を説明するフローチャートである。
【図5】プログラムのインストール処理を説明するフローチャートである。
【図6】インストーラ証明書検証処理の詳細な処理を説明するフローチャートである。
【図7】プログラムインストール処理の詳細な処理を説明するフローチャートである。
【図8】秘密鍵kwの生成処理の詳細な処理を説明するフローチャートである。
【図9】ラップ暗号鍵k'hdd生成処理の詳細な処理を説明するフローチャートである。
【図10】セキュアデータ生成処理の詳細な処理を説明するフローチャートである。
【図11】セキュアデータを示す図である。
【図12】セキュアデータ検証処理の詳細な処理を説明するフローチャートである。
【図13】フラッシュROMおよびHDDに記憶されるデータ例を示す図である。
【図14】放送信号に含まれる署名付きインストーラの構成例を示す図である。
【図15】放送信号として送信される更新用のアプリケーションのインストール処理を示すフローチャートである。
【図16】認証USBメモリの作成手順を説明する図である。
【図17】認証USBメモリ内のデータ例を示す図である。
【図18】開発者のPCが保有するモジュールを示す図である。
【図19】開発者識別ファイル証明書作成処理を説明するフローチャートである。
【図20】開発者検証処理を説明するフローチャートである。
【図21】記録再生装置の起動処理を説明するフローチャートである。
【図22】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【発明を実施するための形態】
【0017】
[記録再生装置の構成例]
図1は、本発明を適用した記録再生装置の一実施の形態の構成例を示している。
【0018】
記録再生装置1は、放送局から送信されてくるコンテンツとしてのテレビジョン放送番組の放送信号を受信して、コンテンツの映像信号および音声信号を表示装置2に供給したり、内蔵する記録媒体に記録する。また、記録再生装置1は、記録媒体に記録しておいたコンテンツの映像信号および音声信号を読み出し、表示装置2に供給する。なお、受信される放送信号には、コンテンツに対応する映像信号および音声信号のほかに、EPG(Electronic Program Guide)などの番組情報の信号も含まれている。
【0019】
表示装置2は、CRT(Cathode Ray Tube)、LCD(Liquid Crystal Display)、またはPDP(Plasma Display Panel)などで構成され、記録再生装置1から供給される映像信号に対応する映像を表示するとともに、音声信号に対応する音声を出力する。
【0020】
なお、以下においては、説明を簡単にするため、放送信号から得られる映像信号と音声信号のうち、映像信号についてのみ説明するが、音声信号についても映像信号と同様の処理が行われる。
【0021】
記録再生装置1は、上述した表示装置2と接続する接続端子として、HDMI端子11を有している。また、記録再生装置1は、その他の接続端子として、Ether端子12、USB端子13、およびリモート入力端子14も有している。
【0022】
Ether端子12には、パーソナルコンピュータ3(以下、PC3という)が、必要に応じて接続される。このPC3は、例えば、記録再生装置1の処理を実行するプログラムを開発する開発者等が有するパーソナルコンピュータである。PC3は、Ether端子12を介して、記録再生装置1とイーサネット(登録商標)(Ethernet(登録商標))の規格に従った通信を行うことができる。
【0023】
USB端子13には、USB(Universal Serial Bus)メモリ4が、必要に応じて接続される。USBメモリ4には、例えば、バージョンアップされたアプリケーション(ソフトウエア)をインストールするプログラム(以下、インストーラという)が記憶され、記録再生装置1内のアプリケーションを更新する場合などに、USBメモリ4がUSB端子13に接続される。
【0024】
リモート入力端子14には、受光装置5が接続される。受光装置5は、リモートコマンダ6から送信されてくる赤外線信号を受信し、リモートコマンダ6での操作に対応する操作信号に変換して、記録再生装置1に供給する。受光装置5は、記録再生装置1が表示装置2の背面側に設置される場合も考慮して、記録再生装置1とは別に設けられ、リモート入力端子14に接続されるようになされている。即ち、記録再生装置1が表示装置2の背面側に設置された場合には、リモートコマンダ6から出力される赤外線信号を、記録再生装置1は受信することができなくなる。そこで、受光装置5は、記録再生装置1とは別に表示装置2の前面側に設置可能とするために、リモート入力端子14を介して接続されるようになされている。
【0025】
なお、リモートコマンダ6と受光装置5との間の通信は、赤外線方式に限らず、その他の方式(例えば、電波による方式)を採用しても良い。
【0026】
また、リモート入力端子14には、受光装置5に代えて、PC3を接続することができる。この場合、PC3は、記録再生装置1とシリアル通信を行うことができる。これにより、開発者は、PC3をリモート入力端子14に接続し、例えば、リモート入力端子14を介してコマンドを送受信することにより、動作の検証、パラメータの確認等を行うことができる。
【0027】
次に、記録再生装置1内の詳細な構成について説明する。
【0028】
記録再生装置1は、チューナ部20、MPEGデコーダ21、圧縮伸長部22、暗号化部23、HDD(Hard Disk Drive)24、スイッチ25、EPG記憶部26、OSD (On Screen Display)処理部27、映像信号処理部28、およびHDMI(High-Definition Multimedia Interface)I/F部29を有している。また、記録再生装置1は、CPU30、RAM(Random Access Memory)31、フラッシュROM(Read Only Memory)32、および操作部33も有している。
【0029】
チューナ部20には、図示せぬアンテナが受信した地上ディジタル放送の放送信号が供給される。チューナ部20は、CPU30の制御に基づいて、ユーザが指示したチャンネルに対応する周波数帯の放送信号を受信して、検波、復調し、その結果得られるMPEG2トランスポートストリーム(MPEG-2Transport Stream)を、MPEGデコーダ21に供給する。なお、チューナ部20が受信可能な放送信号は、地上ディジタル放送に限らず、例えば、BS(Broadcasting Satellite)またはCS(Communications Satellite)等のディジタルの衛星放送などの放送信号でもよい。また、チューナ部20は、アンテナで受信される放送信号のほかに、ケーブルテレビ放送の放送信号やインターネット等のネットワークを介して供給されるストリーミング放送の放送信号を受信するようにしてもよい。
【0030】
MPEGデコーダ21は、チューナ部20から供給されるMPEG2トランスポートストリームをデスクランブル処理した後、映像データ、音声データ、および番組情報データのTSパケットに分離する(デマルチプレクサ処理する)。そして、MPEGデコーダ21は、TSパケットに含まれる映像データを抽出してMPEGデコードし、その結果得られる映像信号を、圧縮伸長部22およびスイッチ25に供給する。また、MPEGデコーダ21は、TSパケットに含まれる番組情報データ(以下、EPGデータという)を抽出し、EPG記憶部26に供給する。
【0031】
圧縮伸長部22は、CPU30の制御に従って、映像信号の圧縮処理および伸長処理を行う。より詳しくは、圧縮伸長部22は、MPEGデコーダ21から供給される映像信号を、例えば、MPEG2(Moving Picture Experts Group-2)などの所定の規格に従って圧縮(符号化)し、暗号化部23に供給する。また、圧縮伸長部22は、暗号化部23から供給される、所定の規格に従って圧縮されている映像信号を伸長(復号)し、スイッチ25に供給する。なお、図1では、CPU30から圧縮伸長部22への制御線の図示が省略されている。
【0032】
暗号化部23は、コンテンツ保護のため、圧縮伸長部22から供給される映像信号を所定の暗号鍵khddで暗号化して、HDD24に供給する。また、暗号化部23は、HDD24から供給される暗号化された映像信号を、暗号鍵khddで復号し、圧縮伸長部22に供給する。例えば、暗号化部23は、暗号化方式として、128ビットの暗号鍵khddを用いたAES(Advanced Encryption Standard)暗号方式を採用する。なお、暗号鍵khddは、記録再生装置1に固有のものであり、CPU30から供給される。
【0033】
HDD24は、CPU30の制御に従って、内蔵するハードディスクに圧縮処理および暗号化された映像信号を書き込んだり、ハードディスクに記録されている暗号化された映像信号を読み出し、暗号化部23に供給する。
【0034】
スイッチ25は、CPU30の制御にしたがい、内部の端子部25aと25bとを切り替えて、映像信号処理部28に出力する映像信号を切り替える。端子部25aには、MPEGデコーダ21から出力された映像信号が供給され、端子部25bには、圧縮伸長部22から出力された映像信号が供給される。ユーザが、いま放送されているコンテンツをリアルタイムで視聴する場合には、CPU30は、端子部25aを選択させ、チューナ部20で受信された所定の放送局の映像信号がMPEGデコーダ21を介して映像信号処理部28に供給される。一方、ユーザが、HDD24に記録されているコンテンツをタイムシフト視聴する場合には、CPU30は、端子部25bを選択させ、HDD24から読み出された映像信号が映像信号処理部28に供給される。
【0035】
EPG記憶部26は、MPEGデコーダ21から供給されるEPGデータを記憶する。ここに記憶されているEPGデータは、CPU30によって参照される。なお、EPG記憶部26は、HDD24のハードディスクに設けられていても良い。
【0036】
OSD処理部27は、CPU30からの指示に従って、コンテンツの映像に重畳表示させる所定の文字や画像に対応する信号(OSD信号)を生成し、映像信号処理部28に供給する。例えば、OSD処理部27は、いま選局されているチャンネル(の数字)や音声のボリュームなどを表す映像となるOSD信号を生成する。また、OSD処理部27は、CPU30の制御により、所定の番組の録画の予約を行うときに表示装置2に表示させる録画予約画面(Graphical User Interface)の映像信号もOSD信号として生成し、映像信号処理部28に供給する。
【0037】
映像信号処理部28は、スイッチ25から供給されるコンテンツの映像信号をHDMI I/F部29にそのまま供給する。また、映像信号処理部28は、スイッチ25から供給されるコンテンツの映像信号の代わりに、OSD処理部27から供給されるOSD信号を映像信号に変換し、HDMI I/F部29に供給する。さらに、映像信号処理部28は、スイッチ25から供給されるコンテンツの映像にOSD信号が表す映像を重畳表示されるように、映像信号とOSD信号を合成した映像信号を生成し、HDMI I/F部29に供給する。
【0038】
HDMI I/F部29は、HDMI端子11を介して接続されている表示装置2が受入可能な映像信号のフォーマットを取得する。そして、HDMI I/F部29は、映像信号処理部28から供給される映像信号をHDMIの規格に従った信号で、かつ、表示装置2が受入可能な映像信号のフォーマットに変換し、HDMI端子11を介して表示装置2に出力する。なお、HDMIの規格では、HDMIを有する機器は、一意に識別可能な公開鍵ksv(Key Selection Vector)を有し、互いの公開鍵ksvをやり取りし、映像信号を公開鍵ksvで暗号化した上で授受することが定められている。HDMI I/F部29は、自身の公開鍵ksvを保持している。
【0039】
CPU30は、フラッシュROM32およびHDD24からロードされてRAM31に記憶されているプログラムに基づいて、コンテンツの記録および再生等の所定の処理を実行する。ここで、CPU30により実行されるプログラムとしては、プレカーネル、メインカーネル、およびアプリケーションがある。プレカーネルは、記録再生装置1の電源投入時に最初に起動され、最低限必要な複数のデバイスを有効にする起動プログラムである。メインカーネルは、プレカーネルの次に起動され、アプリケーションの動作に必要な全てのデバイスを有効にしたり、所定の設定を行うプログラムである。アプリケーションは、メインカーネルの上位アプリケーションであり、ユーザの操作を受け付け、その受け付けた操作に応じて各種の動作を制御するプログラムである。なお、以下では、プレカーネル、メインカーネル、およびアプリケーションを区別しない場合、それらの全てまたは一部を、単にプログラムと称する。
【0040】
CPU30は、例えば、ユーザに指定されたコンテンツを録画するため、チューナ部20に対して受信する放送局を指定し、受信された映像信号の圧縮および暗号化を圧縮伸長部22と暗号化部23に実行させ、HDD24に記録させる。
【0041】
CPU30は、また、ユーザの操作に基づいて、HDD24に記録されているコンテンツの再生を制御する。即ち、CPU30は、圧縮伸長部22と暗号化部23にHDD24から読み出した暗号化された映像信号の復号および伸長を行わせ、スイッチ25に対して端子部25bを選択させ、再生した映像信号を表示装置2に出力させる。
【0042】
RAM31は、ロードされたプログラムを一時的に記憶するほか、その実行中に一時的に記憶することが必要な変数なども記憶する。
【0043】
フラッシュROM32は、上述のプレカーネルを記憶する。また、フラッシュROM32は、CPU30が暗号化部23に供給する、コンテンツを暗号化するための暗号鍵khddなども記憶する。なお、メインカーネルおよびアプリケーションは、HDD24に記憶されている。
【0044】
操作部33は、例えば、記録再生装置1の前面に設けられた、電源ボタンなどの各種の操作ボタンで構成され、それらの操作ボタンがユーザによって操作された場合に、操作された操作ボタンに対応する操作信号をCPU30に供給する。
【0045】
以上のように構成される記録再生装置1は、ロードされたプログラムに基づいて、受信したコンテンツの映像信号をHDD24に記録したり、HDD24に記録されたコンテンツを再生し、表示装置2に表示させる。
【0046】
ここで、HDD24に記録されるコンテンツは、上述したように暗号鍵khddで暗号化されて記憶されるが、この暗号鍵khddは、ARIBの実装基準(ロバストネスルール)に従い、装置固有のものである必要がある。
【0047】
記録再生装置1では、出荷用のプログラムをインストールするインストーラが記憶されたUSBメモリ4がUSB端子13に接続され、インストーラが実行されたとき、暗号鍵khddが記録再生装置1内に生成される。
【0048】
従って、従来、厳重な管理の下、暗号鍵khddを生成して記録再生装置1にインストールする必要があったものが、USBメモリ4に記憶されたインストーラを用いて簡単にインストールすることができる。
【0049】
しかしながら、このようにした場合、インストーラの脆弱性が問題となる。すなわち、厳重に管理されるべき暗号鍵khddの生成が可能なインストーラが携帯可能なUSBメモリ4に記憶されている。そのため、厳重にUSBメモリ4を管理するとしても、万が一、USBメモリ4(のインストーラ)が流出した場合に備えて、インストーラを無効化する術を備えておく必要がある。
【0050】
本実施の形態のUSBメモリ4に記憶されたインストーラは、後述するように、万一の流出事故等に備えて無効化することができるように手当てされている。これにより、装置固有の暗号鍵khddを、安全かつ確実に、記録再生装置1にインストールすることができ、暗号鍵khddの生成をUSBメモリ4を用いて行うことができるため、暗号鍵の管理が容易になる。
【0051】
[製造USBメモリの作成手順]
そこで、最初に、インストーラが記憶されたUSBメモリ4の作成手順について、図2を参照して説明する。なお、インストーラが記憶されたUSBメモリ4は、プログラムの開発終了後、開発者から製造部門に渡され、製造部門で使用される。以下では、インストーラが記憶されたUSBメモリ4を、後述するその他のデータが記憶されたUSBメモリ4と区別して、製造USBメモリ4Aと称する。
【0052】
初めに、ステップS1において、装置固有の暗号鍵khddを管理すべき鍵管理者のPC3(以下、鍵管理者PC3Aという)は、同一の機種に共通の秘密鍵kxを決定し、秘密鍵kxを含むオブジェクトファイルを作成する。この秘密鍵kxは、鍵管理者によって厳重に管理され、他の者に知られることはない。そして、鍵管理者PC3Aは、生成した秘密鍵kxを含むオブジェクトファイルを、記録再生装置1のプログラムの開発者のPC3(以下、開発者PC3Bという)に供給する。
【0053】
開発者PC3Bは、ステップS11において、秘密鍵kxを含むオブジェクトファイルを取得する。オブジェクトファイルはバイナリファイルであるため、開発者がそのファイルから秘密鍵kxを知ることはできない。
【0054】
ステップS12において、開発者PC3Bは、開発者の操作に基づき、開発終了後のプログラムを含むインストーラを作成する。開発者は、インストーラを作成するとき、秘密鍵kxを含むオブジェクトファイルをリンクさせる。従って、インストーラのなかには、開発者が認識できない状態で秘密鍵kxも含まれる。これにより、オブジェクトファイルがリンクされたモジュールでは、秘密鍵kxを用いた復号のみができる。
【0055】
ステップS2において、鍵管理者PC3Aは、使い捨て鍵khmac、ラップ使い捨て鍵k'hmac、およびラップカウンタrc'を作成する。使い捨て鍵khmacは、プログラムを更新するごとに生成される使い捨て鍵である。ラップ使い捨て鍵k'hmacは、秘密鍵kxでラップ(暗号化)した使い捨て鍵khmacである。ラップカウンタrc'は、カウンタrc(rivision counter)を秘密鍵kxでラップ(暗号化)したものである。カウンタrcは、プログラムを更新する毎にインクリメントされる値であり、プログラムのバージョンナンバに相当する。
【0056】
ステップS3において、鍵管理者PC3Aは、鍵管理者の操作に基づいて、生成したインストーラが改ざんされていないことを証明するインストーラ証明書を作成するためのインストーラ証明書作成モジュールを作成する。
【0057】
ステップS13において、開発者PC3Bは、使い捨て鍵khmac、ラップ使い捨て鍵k'hmac、およびラップカウンタrc'を鍵管理者PC3Aから取得する。また、開発者PC3Bは、ステップS14において、インストーラ証明書作成モジュールを鍵管理者PC3Aから取得する。
【0058】
ステップS15において、開発者は、インストーラ証明書作成モジュールを用いて、署名付きインストーラを開発者PC3Bに作成させる。開発者PC3Bは、開発者の操作に基づいて、署名付きインストーラを作成する。ここで、作成される署名付きインストーラは、ステップS12で作成したインストーラに、その証明書としての電子署名が付加されたものである。
【0059】
ステップS16において、開発者PC3Bは、製造USBメモリ4Aに、作成された署名付きインストーラを記憶させる。
【0060】
以上のようにして作成された製造USBメモリ4Aが、開発者から製造部門に渡される。また、製造USBメモリ4Aは、記録再生装置1の修理等を行うサービス部門にも渡される。
【0061】
[製造USBメモリ4Aが保有するデータ例]
図3は、以上のようにして生成された製造USBメモリ4Aに記憶されているデータの例を示している。
【0062】
製造USBメモリ4Aには、図3に示されるように、署名付きインストーラ51が格納されている。そして、署名付きインストーラ51は、インストーラ52と、その電子署名53とから構成される。電子署名53は、インストーラ52の改ざんを検出するための情報(プログラム改ざん検出情報)であると言える。
【0063】
インストーラ52は、ラップ暗号鍵生成モジュール61、セキュアデータ生成モジュール62、秘密鍵生成モジュール63、セキュアデータ検証モジュール64、インストーラ証明書検証モジュール65、開発者検証モジュール66、およびアプリケーション67により構成される。
【0064】
ラップ暗号鍵生成モジュール61は、暗号化部23がコンテンツを暗号化してHDD24に記録する際の暗号鍵khddを生成し、かつ、秘密鍵生成モジュール63が生成する秘密鍵kwでラップしたラップ暗号鍵k'hddを生成する。
【0065】
セキュアデータ生成モジュール62は、プレカーネルの完全性(integrity)をチェックし、古いバージョン(カウンタrc)のプログラムを使用できないようにするためのセキュアデータを生成する。セキュアデータは、装置固有のデータに基づいて作成され、フラッシュROM32に格納される。
【0066】
秘密鍵生成モジュール63は、コンテンツを暗号化するための暗号鍵khddをラップする秘密鍵kwを生成する。
【0067】
セキュアデータ検証モジュール64は、記録再生装置1の起動時に、フラッシュROM32に格納されているセキュアデータの完全性を検証する。
【0068】
インストーラ証明書検証モジュール65は、電子署名53に基づいて、インストーラ52の完全性を検証する。
【0069】
開発者検証モジュール66は、プログラムのコーディング等を行うため、開発者PC3Bが記録再生装置1のEther端子12に接続された場合、その接続された開発者PC3Bが正当なものであるかを検証する。
【0070】
アプリケーション67は、インストールまたは更新されるアプリケーションである。
【0071】
なお、点線で囲まれている秘密鍵生成モジュール63、セキュアデータ検証モジュール64、インストーラ証明書検証モジュール65、開発者検証モジュール66、およびアプリケーション67は、インストーラ52が実行されることにより、記録再生装置1にインストール(コピー)されるプログラムである。各モジュールは、それぞれ単独に動作するものであってもよいし、いずれかのモジュールに包含され、他のモジュールの一部として動作するものでもよい。
【0072】
一方、ラップ暗号鍵生成モジュール61とセキュアデータ生成モジュール62は、インストーラ52が実行されることにより、CPU30により実行されるが、記録再生装置1には、インストールされない。
【0073】
[インストーラ証明書作成処理]
図4は、図2のステップS15におけるインストーラ証明書作成処理の詳細なフローチャートである。
【0074】
初めに、ステップS21において、開発者PC3Bは、HMAC(hash,khmac,[インストーラ])を計算する。ここで、HMAC(hash,khmac,[インストーラ])は、カッコ[]内のデータに対して、ハッシュ関数(hash)と秘密鍵khmacを用いて計算されるMAC(Message Authentication Code)を意味する。即ち、開発者PC3Bは、図2のステップS12で作成したインストーラ52のHMACを計算する。
【0075】
HMACは、hash(key XOR opad,hash(key XOR ipad,message))で定義される。即ち、HMACは、秘密鍵keyと固定文字列ipadの排他的論理和にデータmessageを追加したものにハッシュ関数を適用し、その結果を、秘密鍵keyと固定文字列opadの排他的論理和に追加して、ハッシュ関数を適用した値である。hash関数としては、例えば、SHA-1やMD5などを採用することができるが、本実施の形態では、hash関数を利用するすべてにおいてSHA-1を採用するものとする。
【0076】
ステップS22において、開発者PC3Bは、上述した図2のステップS13で鍵管理者PC3Aから取得したラップカウンタrc'とラップ使い捨て鍵k'hmacを、記憶している内部メモリから取得する。
【0077】
ステップS23において、開発者PC3Bは、計算により得られたHMAC(hash,khmac,[インストーラ])、取得したラップカウンタrc'、およびラップ使い捨て鍵k'hmacとからなる電子署名53を生成する。
【0078】
ステップS24において、開発者PC3Bは、生成された電子署名53を、インストーラ52に付加して、署名付きインストーラ51を生成する。署名付きインストーラ51の生成後、処理は終了する。
【0079】
[製造USBメモリ4Aからのインストール処理]
次に、図5を参照して、図3の製造USBメモリ4Aを用いたプログラムのインストール処理について説明する。この処理は、例えば、製造USBメモリ4AをUSB端子13に接続した状態で、記録再生装置1の電源が投入(リブート)されたとき開始される。
【0080】
なお、製造直後の記録再生装置1のフラッシュROM32には、USB端子13を認識可能とするような必要最低限のデバイスを駆動するプレカーネルが予め記憶されているものとする。
【0081】
初めに、ステップS31において、記録再生装置1のCPU30は、フラッシュROM32に記憶されているプレカーネルをロードする。これにより、USB端子13などの必要最低限のデバイスの認識が可能となる。
【0082】
ステップS32において、セキュアデータ検証モジュール64が実行されることにより、CPU30は、フラッシュROM32に格納されているセキュアデータを読み出し、セキュアデータの完全性を検証するセキュアデータ検証処理を実行する。セキュアデータ検証処理の詳細な処理については、図12を参照して後述する。なお、セキュアデータには、プログラムのバージョンを表すカウンタrcが少なくとも含まれる。
【0083】
製造直後の記録再生装置1であって、フラッシュROM32にセキュアデータが記憶されていない場合には、ステップS32に処理は省略される。一方、サービス部門において本インストール処理が実行される場合など、記録再生装置1のフラッシュROM32にセキュアデータが既に記憶されている場合には、ステップS32の処理が実行される。
【0084】
ステップS33において、インストーラ証明書検証モジュール65が実行されることにより、CPU30は、製造USBメモリ4Aの電子署名53を用いて、製造USBメモリ4Aのインストーラ52の完全性を検証するインストーラ証明書検証処理を実行する。この詳細な処理については、図6を参照して後述する。
【0085】
ステップS34において、CPU30は、電子署名53によりインストーラ52の完全性が確認された場合、製造USBメモリ4Aのプログラムを記録再生装置1にインストールするプログラムインストール処理を実行して、処理を終了する。この詳細な処理については、図7を参照して後述する。
【0086】
次に、上述したステップS32乃至S34の各処理の詳細について説明する。
【0087】
[インストーラ証明書検証処理]
図6は、上述した図5のステップS33におけるインストーラ証明書検証処理の詳細な処理を示すフローチャートである。
【0088】
初めに、ステップS41において、CPU30は、製造USBメモリ4Aから署名付きインストーラ51を読み出す。
【0089】
そして、ステップS42において、CPU30は、読み出した署名付きインストーラ51に電子署名53として含まれるラップ使い捨て鍵k'hmacを、秘密鍵kxで復号(Decryption)して、使い捨て鍵khmacを生成する。なお、秘密鍵kxは、上述したように、インストーラ52にリンクされたオブジェクトファイルにより、各モジュールで利用可能となっている。
【0090】
なお、図6では、秘密鍵kxでラップ使い捨て鍵k'hmacを復号(Decryption)して、使い捨て鍵khmacを生成することを、khmac=Dec(kx,k'hmac)と記述している。また同様に、例えば、秘密鍵kxで使い捨て鍵khmacをラップ(Encryption)して、ラップ使い捨て鍵k'hmacを生成することを、図面ではk'hmac=Enc(kx, khmac)と記述する。
【0091】
ステップS43において、CPU30は、HMAC(hash,khmac,[インストーラ])を計算する。ここで、khmacは、ステップS42の復号により得られた使い捨て鍵khmacであり、[インストーラ]は、署名付きインストーラ51に含まれるインストーラ52である。
【0092】
ステップS44において、CPU30は、ステップS43で計算したHMAC(hash,khmac,[インストーラ])が、製造USBメモリ4Aから読み出した電子署名53に含まれるHMACと一致するかを判定する。
【0093】
ステップS44で、計算したHMACが、電子署名53のHMACと一致していないと判定された場合、インストーラ52が改ざんされている可能性があるので、処理は終了する。
【0094】
一方、ステップS44で、計算したHMACが、電子署名53のHMACと一致していると判定された場合、ステップS45において、CPU30は、電子署名53に含まれるラップカウンタrc'を、秘密鍵kxで復号(Decryption)して、カウンタrcを生成する。
【0095】
ステップS46において、CPU30は、フラッシュROM32に記憶されているプログラムのカウンタrcが、製造USBメモリ4Aから読み出したカウンタrcよりも大であるかを判定する。
【0096】
ステップS46で、フラッシュROM32のカウンタrcが、読み出したカウンタrcよりも大であると判定された場合、記録再生装置1内のプログラムが、製造USBメモリ4Aのプログラムより新しいことを意味するので、処理は終了する。
【0097】
一方、ステップS46で、フラッシュROM32のカウンタrcが、読み出したカウンタrcよりも大ではないと判定された場合、処理はステップS47に進み、CPU30は、フラッシュROM32のカウンタrcが、読み出したカウンタrcと同一であるかを判定する。
【0098】
ステップS47で、フラッシュROM32のカウンタrcが、読み出したカウンタrcと同一であると判定された場合も、処理は終了する。
【0099】
一方、ステップS47で、フラッシュROM32のカウンタrcが、読み出したカウンタrcと同一ではないと判定された場合、即ち、フラッシュROM32のカウンタrcが、読み出したカウンタrcより小さい場合、処理はステップS48に進む。
【0100】
ステップS48では、CPU30は、フラッシュROM32に記憶されているカウンタrcを、読み出したカウンタrcに更新する。即ち、その後、実行されるプログラムのインストール処理で、製造USBメモリ4A内のプログラムに更新されるので、フラッシュROM32のカウンタrcが、製造USBメモリ4A内のプログラムのカウンタrcに更新される。
【0101】
そして、ステップS49において、CPU30は、更新フラグをオンにして、図5のインストール処理に戻り、ステップS34のプログラムインストール処理に移行する。
【0102】
[プログラムのインストール処理]
図7は、図5のステップS34のプログラムインストール処理の詳細な処理を示すフローチャートである。
【0103】
最初に、CPU30は、ステップS61において、更新フラグがオンとなっているかを判定する。ステップS61で、更新フラグがオンではないと判定された場合、処理は終了する。
【0104】
一方、ステップS61で、更新フラグがオンであると判定された場合、処理はステップS62に進み、CPU30は、コンテンツを暗号化するための秘密鍵kwの生成処理を実行する。この処理の詳細は、図8を参照して後述する。
【0105】
ステップS63において、CPU30は、コンテンツの暗号鍵khddをラップしたラップ暗号鍵k'hddを生成するラップ暗号鍵k'hdd生成処理を実行する。この処理の詳細は、図9を参照して後述する。
【0106】
ステップS64において、CPU30は、フラッシュROM32に格納されるセキュアデータを生成するセキュアデータ生成処理を実行する。この処理の詳細は、図10を参照して後述する。
【0107】
ステップS65において、CPU30は、製造USBメモリ4Aに含まれるアプリケーション67のインストールを実行する。また、CPU30は、製造直後の最初のインストール処理では、秘密鍵生成モジュール63、セキュアデータ検証モジュール64、インストーラ証明書検証モジュール65、および開発者検証モジュール66もインストールする。
【0108】
ステップS66において、CPU30は、更新フラグをリセットして、処理を終了する。
【0109】
[秘密鍵kw生成処理]
図8は、図7のステップS62における秘密鍵kwの生成処理の詳細な処理を示すフローチャートである。
【0110】
初めに、ステップS71において、CPU30は、記録再生装置1固有の情報として、HDMI I/F部29からHDMIの公開鍵ksv(以下、公開鍵HDMI-ksvとも称する)を読み出す。なお、本実施の形態では、記録再生装置1がHDMI I/F部29を有していることから、記録再生装置1を識別する情報として、その公開鍵ksvを採用することとするが、記録再生装置1を一意に識別するものであれば、HDMIの公開鍵ksvでなくてもよい。
【0111】
ステップS72において、CPU30は、公開鍵HDMI-ksvに秘密の固定文字列saltを結合した値にハッシュ関数を適用することにより、秘密鍵kwを生成する。ここで、秘密の固定文字列saltは、鍵管理者により管理され、秘密鍵kxとともにオブジェクトファイルにより与えられる。
【0112】
以上により、ステップS62における秘密鍵kwの生成処理は終了する。
【0113】
[ラップ暗号鍵k'hdd生成処理]
図9は、秘密鍵kwの生成処理終了後に実行される、図7のステップS63におけるラップ暗号鍵k'hdd生成処理の詳細な処理を示すフローチャートである。
【0114】
初めに、ステップS81において、CPU30は、記録再生装置1固有の情報として、HDD24のシリアルナンバHDD-S/Nを読み出す。
【0115】
ステップS82において、CPU30は、HDD24のシリアルナンバHDD-S/Nと秘密の固定文字列saltとを結合した値にハッシュ関数を適用することにより、コンテンツの暗号鍵khddを生成する。このコンテンツの暗号鍵khddは、160ビットで生成される。
【0116】
ステップS83において、CPU30は、160ビットのコンテンツの暗号鍵khddの上位128ビットを取り出す。即ち、暗号化部23が128ビットの暗号鍵khddを用いたAES暗号方式により暗号化するため、コンテンツの暗号鍵khddが128ビットに整形される。
【0117】
ステップS84において、CPU30は、コンテンツの暗号鍵khddを秘密鍵kwでラップすることにより、ラップ暗号鍵k'hddを生成する。ここでの暗号化方式は、BlowFish(BF)を採用しているが、これに限定されるわけではない。
【0118】
以上により、ステップS63におけるラップ暗号鍵k'hdd生成処理は終了する。
【0119】
[セキュアデータ生成処理]
図10は、ラップ暗号鍵k'hdd生成処理終了後に実行される、図7のステップS64におけるセキュアデータ生成処理の詳細な処理を示すフローチャートである。
【0120】
初めに、ステップS91において、CPU30は、HDD24のシリアルナンバHDD-S/Nを取得する。
【0121】
ステップS92において、CPU30は、図9のラップ暗号鍵k'hdd生成処理で生成したラップ暗号鍵k'hddを取得する。
【0122】
ステップS93において、CPU30は、カウンタrcを取得する。ここで、カウンタrcは、フラッシュROM32のカウンタrcが既に更新予定のプログラムに対応する値に変更されているので、フラッシュROM32から取得しても良いし、製造USBメモリ4Aから取得しても良い。
【0123】
ステップS94において、CPU30は、HMAC(hash,kw,[HDD-S/N,k'hdd,rc])を計算する。即ち、CPU30は、取得したHDD24のシリアルナンバHDD-S/N、ラップ暗号鍵k'hdd、およびカウンタrcを結合した文字列のHMACを計算する。このHMACは、HDD24のシリアルナンバHDD-S/N、ラップ暗号鍵k'hdd、およびカウンタrcの改ざんを検出するための情報(鍵改ざん検出情報)であると言える。
【0124】
ステップS95において、CPU30は、HDD24のシリアルナンバHDD-S/N、ラップ暗号鍵k'hdd、およびカウンタrcと、そのHMACをセキュアデータとして、フラッシュROM32に格納する。
【0125】
以上により、セキュアデータ生成処理は終了する。
【0126】
[セキュアデータの例]
図11は、セキュアデータ生成処理により生成されるセキュアデータをまとめたものである。
【0127】
例えば、セキュアデータは、20バイトのHDD24のシリアルナンバHDD-S/N、16バイト(128ビット)のラップ暗号鍵k'hdd、2バイトのカウンタrc、および、20バイトのHMACからなる、合計58バイトのデータで構成される。
【0128】
なお、セキュアデータ生成処理では、同一のセキュアデータをフラッシュROM32の2箇所に記録させることができる。これにより、セキュアデータの書き込み中のエラー等の不測の事態にも対応することができる。
【0129】
[セキュアデータ検証処理]
図11に示したようなセキュアデータが、フラッシュROM32に記憶されている場合には、記録再生装置1の電源が投入され、プレカーネルの起動後、図5のステップS32として、セキュアデータの検証が実行される。
【0130】
図12は、図5のステップS32におけるセキュアデータ検証処理の詳細な処理を示すフローチャートである。
【0131】
初めに、ステップS101において、CPU30は、フラッシュROM32からセキュアデータを読み出し、ステップS102において、図8で説明した秘密鍵kwの生成処理を実行して秘密鍵kwを生成する。
【0132】
ステップS103において、CPU30は、フラッシュROM32から読み出したHDD24のシリアルナンバHDD-S/N、ラップ暗号鍵k'hdd、およびカウンタrcと秘密鍵kwを用いて、HMACを計算する。即ち、CPU30は、HMAC(hash,kw,[HDD-S/N,k'hdd,rc])を計算する。
【0133】
ステップS104において、CPU30は、ステップS103で計算したHMACが、フラッシュROM32から読み出したHMACと一致するかを判定する。
【0134】
ステップS104で、計算したHMACと読み出したHMACが一致しないと判定された場合、図5の製造USBメモリ4Aを用いたプログラムのインストールそのものが終了する。即ち、計算したHMACと読み出したHMACが一致しないと判定された場合には、製造USBメモリ4A内のプログラムをインストールすることはできない。
【0135】
一方、ステップS104で、計算したHMACと読み出したHMACが一致すると判定された場合、処理はステップS105に進み、CPU30は、ステップS102で生成した秘密鍵kwで、読み出したセキュアデータのうちのラップ暗号鍵k'hddを復号する。これにより、コンテンツの暗号鍵khddが得られる。
【0136】
ステップS106において、CPU30は、得られたコンテンツの暗号鍵khddを暗号化部23に供給して、処理を図5に戻す。
【0137】
以上のように、フラッシュROM32にセキュアデータが格納されている場合には、そのセキュアデータの完全性が検証された場合にのみ、プログラムのインストールが実行される。
【0138】
また、セキュアデータの完全性が検証された場合にのみ、セキュアデータの一部であるラップ暗号鍵k'hddが復号され、その結果得られたコンテンツの暗号鍵khddが、暗号化部23に供給される。
【0139】
[フラッシュROM32およびHDD24のデータ例]
以上、図5乃至図12を参照して説明した、製造USBメモリ4Aを用いたプログラムのインストール処理が終了した結果、記録再生装置1のフラッシュROM32およびHDD24には、図13に示すデータが記録される。
【0140】
即ち、図13は、インストール終了後に記録再生装置1のフラッシュROM32およびHDD24に記録されるデータの例を示している。
【0141】
フラッシュROM32には、プレカーネルとセキュアデータが記録される。プレカーネルには、秘密鍵生成モジュール63とセキュアデータ検証モジュール64が含まれる。
【0142】
一方、HDD24には、メインカーネルとアプリケーションが記録される。メインカーネルには、秘密鍵生成モジュール63、セキュアデータ検証モジュール64、インストーラ証明書検証モジュール65、および開発者検証モジュール66が含まれる。アプリケーションは、インストーラ52に含まれるアプリケーション67に対応するものである。
【0143】
なお、アプリケーションが更新(バージョンアップ)された場合には、記録再生装置1の修理等を行うサービス部門において、上述した製造USBメモリ4Aを用いて、記録再生装置1のアプリケーションを更新することができる。
【0144】
また、地上ディジタル放送やBSディジタル放送では、コンテンツの映像信号のほかに、EPGなどの番組情報や更新されたプログラムを、放送信号として送信することができる。
【0145】
そこで、アプリケーションが更新された場合には、更新後のアプリケーションを放送信号として記録再生装置1に送信することで、記録再生装置1に記憶されたアプリケーションを更新することもできる。
【0146】
[放送DL(ダウンロード)用のインストーラの構成例]
図14は、放送信号に含まれる署名付きインストーラ51DLの構成例を示している。
【0147】
放送信号に含まれる署名付きインストーラ51DLは、放送DL用インストーラ52DLと、その電子署名53DLとから構成される。
【0148】
放送DL用インストーラ52DLは、秘密鍵生成モジュール63と、アプリケーション67とから構成される。なお、セキュアデータ検証モジュール64、インストーラ証明書検証モジュール65、および開発者検証モジュール66は、基本的には更新されないが、更新される場合には、放送DL用インストーラ52DLに含ませることも可能である。
【0149】
[放送信号に含まれるプログラムのインストール処理]
図15は、放送信号として送信される更新用のアプリケーションのインストール処理を示すフローチャートである。この処理は、例えば、放送信号として更新用のアプリケーションが受信されたとき、開始される。
【0150】
初めに、ステップS111において、CPU30は、受信されたアプリケーションをインストールする指示があったかを判定し、インストールする指示があったと判定されるまで待機する。
【0151】
例えば、記録再生装置1が更新用のアプリケーションを受信した場合、その旨を表示装置2に表示し、更新するか否かをユーザに確認する。ユーザが更新することを選択した場合、ステップS111で、インストールする指示があったと判定される。
【0152】
なお、ユーザの指示を確認せずに、更新用のアプリケーションを受信した場合には、受信したアプリケーションに必ず書き換えるようにしてもよい。その場合、ステップS111の処理は省略される。
【0153】
ステップS111で、受信されたアプリケーションをインストールする指示があったと判定された場合、処理はステップS112に進む。ステップS112では、CPU30は、署名付きインストーラ51DLに含まれる電子署名53DLに基づいて、放送DL用インストーラ52DLの完全性を検証するインストーラ証明書検証処理を実行する。この処理は、図6を参照して説明した処理と同様の処理であるので、その詳細な説明は省略する。ただし、図6の処理における、読み出される署名付きインストーラが、製造USBメモリ4Aの署名付きインストーラ51ではなくて、受信された署名付きインストーラ51DLとなる。
【0154】
ステップS113では、CPU30は、更新フラグがオンとなっているかを判定する。ステップS113で、更新フラグがオンではないと判定された場合、処理は終了する。
【0155】
一方、ステップS113で、更新フラグがオンであると判定された場合、処理はステップS114に進み、CPU30は、図8を参照して説明した、コンテンツを暗号化するための秘密鍵kwの生成処理を実行する。
【0156】
そして、ステップS115において、CPU30は、受信された放送DL用インストーラ52DLのアプリケーション67のインストールを実行する。
【0157】
その後、CPU30は、ステップS116において、更新フラグをリセットして、処理を終了する。
【0158】
以上の処理により、放送信号として更新用のアプリケーションを記録再生装置1に送信して、アプリケーションを更新することができる。
【0159】
以上、説明した記録再生装置1によれば、CPU30は、製造USBメモリ4Aに記憶された署名付きインストーラ51を実行することにより、記録再生装置1固有のコンテンツの暗号鍵khddを生成することができる。具体的には、コンテンツの暗号鍵khddは、記録再生装置1固有の第1の情報としてのHDD24のシリアルナンバHDD-S/Nを用いて生成される。
【0160】
また、生成されたコンテンツの暗号鍵khddは、記録再生装置1固有の第2の情報としてのHDMIの公開鍵ksvから生成された秘密鍵kwを用いてラップされた上で、セキュアデータの一部としてフラッシュROM32に格納される。従って、仮にフラッシュROM32が取り出されたとしても、コンテンツの暗号鍵khddを悪意のある第三者が知ることはできない。
【0161】
署名付きインストーラ51には、インストーラ52と電子署名53が含まれ、インストーラ52の完全性は電子署名53により保障される。電子署名53は、鍵管理者PC3Aから供給された使い捨て鍵khmac、ラップ使い捨て鍵k'hmac、およびラップカウンタrc'に基づいて開発者PC3Bにより作成される。開発者は、平文の使い捨て鍵khmacを取得することはできるが、鍵管理者のみが知る秘密鍵kxを知らないため、仮に、改ざんした使い捨て鍵khmac#を生成したとしても、そのラップ使い捨て鍵k'hmac#を作成することはできない。従って、改ざんした使い捨て鍵khmac#に対応するラップ使い捨て鍵k'hmac#を作成できない開発者は、結局、使い捨て鍵khmacを改ざんすることはできない。なお、開発者は、使い捨て鍵khmacを用いて、電子署名53を作成することは可能である。
【0162】
従って、管理者が秘密鍵kxを厳重に管理する限り、インストーラ52の完全性が保障され、コンテンツの暗号鍵khddの安全性も担保される。
【0163】
管理者が秘密鍵kxを厳重に管理することは、従来のようにセキュリティルーム等を用意するより簡便である。また、製造部門やサービス部門では、携帯性のUSBメモリ4(製造USBメモリ4A)によってインストールすることができるため、プログラムのインストールが容易となる。
【0164】
従って、記録再生装置1および製造USBメモリ4Aによれば、簡単かつ安全に、暗号鍵を管理することができる。
【0165】
なお、万が一、製造USBメモリ4Aまたはそのなかに記憶される署名付きインストーラ51が流出した場合には、次のようにすることができる。即ち、図15を参照して説明した処理により、放送信号として、新しいカウンタrcのアプリケーションが記録再生装置1にインストールされる。これにより、古いカウンタrcを含む署名付きインストーラ51の使用を防止することができる。
【0166】
ところで、記録再生装置1に最終的にインストールする出荷用のプログラムが作成されるまでは、開発者(設計者)は、記録再生装置1を用いてプログラムのコーディング等を行う必要がある。そして、記録再生装置1では、そのような場合にも、コンテンツの暗号鍵khddの安全性が確保される必要がある。
【0167】
そこで、記録再生装置1は、認証用のUSBメモリ4(以下、認証USBメモリ4Bと称する)によって、記録再生装置1に接続されているPC3の使用者が正当な利用者(開発者)であることを確認することができる。
【0168】
そして、記録再生装置1は、認証USBメモリ4Bによる確認(認証)ができた場合、受光装置5に代えて、開発者PC3Bがリモート入力端子14に接続されたときにシリアル通信によるコマンドの送受信を可能とするモード(以下、開発モードという)を起動する。
【0169】
[認証USBメモリの作成手順]
図16は、正当な利用者であることを確認する認証USBメモリ4Bの作成手順を示すフローチャートである。
【0170】
初めに、ステップS121において、鍵管理者PC3Aは、秘密鍵kxを含むオブジェクトファイルを作成する。ステップS131において、鍵管理者PC3Aは、生成した秘密鍵kxを含むオブジェクトファイルを取得する。なお、この処理は、図2のステップS1およびS11の処理と同様であるので、既にオブジェクトファイルを有している場合には省略することができる。
【0171】
ステップS122において、鍵管理者PC3Aは、鍵管理者の操作に基づいて、開発者識別ファイルを証明する開発者識別ファイル証明書を作成するための開発者識別ファイル証明書作成モジュールを作成する。開発者識別ファイルは、開発者を識別するための情報が格納されたファイルである。
【0172】
開発者PC3Bは、ステップS132において、開発者識別ファイル証明書作成モジュールを鍵管理者PC3Aから取得する。
【0173】
開発者は、開発者PC3Bに、自身の開発者識別ファイルを作成させる。開発者PC3Bは、ステップS133において、開発者の操作に基づいて、開発者識別ファイルを作成する。なお、開発者が開発者識別ファイルを既に有している場合には、この処理は省略される。
【0174】
開発者は、開発者識別ファイル証明書作成モジュールを用いて、自身の開発者識別ファイルの開発者識別ファイル証明書を開発者PC3Bに作成させる。開発者PC3Bは、ステップS134において、開発者の操作に基づいて、開発者識別ファイル証明書を作成する。
【0175】
そして、ステップS135において、開発者PC3Bは、作成された開発者識別ファイル証明書と、その電子署名としての開発者識別ファイル証明書を認証USBメモリ4Bに記憶させる。
【0176】
[認証USBメモリ4Bが保有するデータ例]
図17は、以上のようにして作成された認証USBメモリ4B内のデータの例を示している。
【0177】
認証USBメモリ4Bは、図17Aに示されるように、開発者を識別する開発者識別ファイル81と、その電子署名としての開発者識別ファイル証明書82とが記憶されている。
【0178】
図17Bは、開発者を識別する開発者識別ファイル81のデータ例を示している。
【0179】
例えば、開発者識別ファイル81のデータとしては、開発者のフルネーム(姓名)、開発者を一意に識別する開発者の識別情報、並びに、開発者が有する記録再生装置1の公開鍵HDMI-ksvおよびHDD-S/Nを採用することができる。
【0180】
ここで、開発者の識別情報は、例えば、社員番号などとすることができる。また、開発者が有する記録再生装置1とは、開発者に対してコーディング用等のために与えられた同機種の記録再生装置である。なお、これ以外のデータを採用することもできるし、この4種類の一部のみを採用しても勿論よい。
【0181】
[開発者PC3Bが保有するデータ例]
図18は、図2および図16の処理の結果、開発者PC3Bが保有するモジュールを示している。
【0182】
開発者PC3Bには、図2の処理により鍵管理者PC3Aから供給されるインストーラ証明書作成モジュール91と、図16の処理により鍵管理者PC3Aから供給される開発者識別ファイル証明書作成モジュール92が記憶される。また、開発者識別ファイル証明書を作成する際に、秘密鍵kwが必要となるため、秘密鍵生成モジュール63も記憶されている。なお、秘密鍵生成モジュール63は、どのようなタイミングで取得しても良い。
【0183】
[開発者識別ファイル証明書作成処理]
図19は、開発者識別ファイル証明書作成モジュール92を実行することにより開発者PC3Bにより実行される、開発者識別ファイル証明書作成処理のフローチャートである。
【0184】
初めに、ステップS141において、開発者PC3Bは、所定の記憶部に記憶されている開発者識別ファイル81を読み込む。
【0185】
ステップS142において、開発者PC3Bは、秘密鍵kwを生成する。この処理は、図8を参照して説明した処理と同様である。
【0186】
ステップS143において、開発者PC3Bは、HMAC(hash,kw,[開発者識別ファイル])を計算する。即ち、開発者PC3Bは、開発者識別ファイルのHMACを計算する。
【0187】
ステップS144において、開発者PC3Bは、開発者識別ファイル証明書を作成する。即ち、開発者PC3Bは、開発者識別ファイル81そのものと、そのHMACとを開発者識別ファイル証明書82として作成し、処理を終了する。
【0188】
[開発者検証処理]
図20は、記録再生装置1のUSB端子13に認証USBメモリ4Bが接続された場合に、開発者検証モジュール66を実行するCPU30により行われる、開発者検証処理のフローチャートである。
【0189】
初めに、ステップS151において、CPU30は、認証USBメモリ4Bから、開発者識別ファイル81および開発者識別ファイル証明書82を読み込む。
【0190】
ステップS152において、CPU30は、秘密鍵kwを生成する。この処理は、図8を参照して説明した処理と同様である。
【0191】
ステップS153において、CPU30は、HMAC(hash,kw,[開発者識別ファイル])を計算する。即ち、CPU30は、読み出した開発者識別ファイル81のHMACを計算する。
【0192】
ステップS154において、CPU30は、計算したHMACが、開発者識別ファイル証明書82に記載のHMACと一致するかを判定する。
【0193】
ステップS154で、計算したHMACが開発者識別ファイル証明書82に記載のHMACと一致しないと判定された場合、開発者であることが確認できないため、開発モードは起動されない。
【0194】
一方、ステップS154で、計算したHMACが開発者識別ファイル証明書82に記載のHMACと一致したと判定された場合、CPU30は、開発モードを起動する(開発モードに変更する)。
【0195】
開発モードでは、受光装置5に代えて、開発者PC3Bをリモート入力端子14に接続した場合、開発者PC3Bから、コマンドの送受信が可能となる。これにより、例えば、記録再生動作等のトレース、パラメータの確認等を行うことができる。
【0196】
ところで、記録再生装置1では、上述したように、USB端子13に、プログラムのインストールのため、製造USBメモリ4Aが接続される場合もあれば、開発者のコーディング等のため、認証USBメモリ4Bが接続される場合もある。また、開発途中では、Ether端子12を介して開発者PC3Bが接続される場合もある。
【0197】
そこで、記録再生装置1では、Ether端子12およびUSB端子13の接続状況に応じて、一定の規則の下に、所定のプレカーネル、メインカーネル、およびアプリケーションが起動する。
【0198】
[電源投入時処理]
図21は、記録再生装置1の電源が投入されたときの起動処理を説明するフローチャートである。
【0199】
初めに、ステップS171において、CPU30は、フラッシュROM32に記憶されているプレカーネルをロードする。これにより、USB端子13などの必要最低限のデバイスの認識が可能となる。
【0200】
ステップS172において、フラッシュROM32に格納されているセキュアデータを読み出し、セキュアデータの完全性を検証するセキュアデータ検証処理を実行する。この処理は、図12を参照して説明した処理と同様である。
【0201】
なお、電源投入時の処理の一部として実行される図12のステップS104において、計算したHMACと読み出したHMACが一致しないと判定された場合には、記録再生装置1は、エラーメッセージを表示装置2に表示させることができる。例えば、セキュリティデータの完全性が確認できないため、HDD24に記憶されているコンテンツの読み出しはできない旨のメッセージが表示される。これにより、HDD24の初期化等を行わなければ、コンテンツの記録および再生はできなくなり、コンテンツの保護が保障される。
【0202】
セキュアデータ検証処理において、セキュアデータの一致が確認できた場合、ステップS173において、CPU30は、USB接続ありか、即ち、USB端子13にUSBメモリ4の接続があるかを判定する。
【0203】
ステップS173で、USB接続ありと判定された場合、処理はステップS174に進み、CPU30は、接続されているUSBメモリ4が製造USBメモリ4Aであるかを判定する。
【0204】
ステップS174で、接続されているUSBメモリ4が製造USBメモリ4Aであると判定された場合、CPU30は、ステップS175において、インストーラ証明書検証処理を実行し、ステップS176において、プログラムインストール処理を実行する。ステップS175およびS176の処理は、図5のステップS33およびS34として説明した処理であるので、その説明は省略する。
【0205】
一方、ステップS173で、USB接続なしと判定された場合、および、ステップS174で、接続されているUSBメモリ4が製造USBメモリ4Aではないと判定された場合、処理はステップS177に進む。
【0206】
ステップS177では、CPU30は、Ether接続ありか、即ち、Ether端子12に開発者PC3Bの接続があるかを判定する。
【0207】
ステップS177で、Ether接続ありと判定された場合、処理はステップS178に進み、CPU30は、開発者PC3B内に記憶されているメインカーネルをロードする。
【0208】
その後、CPU30は、ステップS179において、セキュアデータ検証処理を実行し、ステップS180において、開発者PC3B内に記憶されているアプリケーションをロードする。なお、ステップS179のセキュアデータ検証処理は、ステップS172の処理と重複するため、省略することができる。
【0209】
そして、ステップS181において、CPU30は、認証用のUSB接続ありか、即ち、USB端子13に認証USBメモリ4Bの接続があるかを判定する。
【0210】
ステップS181で、認証用のUSB接続なしと判定された場合、起動処理は終了する。
【0211】
一方、ステップS181で、認証用のUSB接続ありと判定された場合、CPU30は、ステップS182において、図20を参照して説明した開発者検証処理を実行し、開発者モードを起動して、処理を終了する。
【0212】
一方、上述したステップS177で、Ether接続なしと判定された場合、処理はステップS183に進み、CPU30は、HDD24に記憶されているメインカーネルをロードする。
【0213】
その後、CPU30は、ステップS184において、セキュアデータ検証処理を実行し、ステップS185において、HDD24に記憶されているアプリケーションをロードする。なお、ステップS184のセキュアデータ検証処理も省略することができる。
【0214】
ステップS186およびS187は、上述したステップS181およびS182と同様であるので、その説明は省略する。
【0215】
以上のように、記録再生装置1の電源が投入された場合、Ether端子12およびUSB端子13のうち、USB端子13に接続があり、かつ、製造USBメモリ4Aが装着されているかが優先的に確認される。これにより、製造USBメモリ4Aによるプログラムのインストールが最優先される。
【0216】
次に、Ether端子12の接続が確認され、開発者PC3Bが接続されている場合には、開発者PC3B内のアプリケーションが優先的に起動される。これにより、開発者は記録再生装置1用のアプリケーションのデバッグ等が可能になる。そして、開発者PC3Bとともに、USB端子13に認証USB4Bが接続されている場合には、開発モードが起動するので、リモート入力端子14を介したコマンドの送受信も可能となる。
【0217】
一方、Ether端子12に何も接続されていない場合には、記録再生装置1内のHDD24に記憶しているメインカーネルおよびアプリケーションが起動する。そして、USB端子13に認証USB4Bが接続されている場合には、開発者認証処理によって開発モードが起動するので、開発者PC3Bによるリモート入力端子14を介したコマンドの送受信が可能となる。
【0218】
Ether端子12およびUSB端子13のいずれにも何も接続されていない場合には、記録再生装置1内のHDD24に記憶しているメインカーネルおよびアプリケーションが起動する。この状態は、ユーザが通常、記録再生装置1を使用する状態であり、HDD24に記憶しているメインカーネルおよびアプリケーションに基づく、コンテンツの記録および再生が可能である。
【0219】
従って、記録再生装置1によれば、暗号鍵を簡単かつ安全に管理することができる上、開発者や製造部門およびサービス部門にとってのメンテナンス性にも優れている。
【0220】
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【0221】
記録再生装置1が内蔵している記録媒体としては、HDD24のみとしたが、そのほかに、DVD(Digital Versatile Disc)、BD(Blu-ray Disc(商標))などの光ディスクの記録再生を行う光ディスクドライブをさらに備えるようにしてもよい。
【0222】
また、記録再生装置1は、署名付きインストーラ51や開発者識別ファイル81などを記憶させる記録媒体をUSBメモリ4としたが、ICカード、携帯型PCのその他の記憶装置に記憶させ、接続可能としてもよい。
【0223】
なお、上述した実施の形態において、より新しいカウンタrcのプログラムをインストールすることで、それより古いプログラムは使用できなくなるので、カウンタrcは、プログラムを無効化させるための情報(無効化情報)であるともいうことができる。記録再生装置1では、このカウンタrcに代えて、例えば、プログラムの有効期限を表す日付および時刻を無効化情報として、採用することもできる。これにより、例えば、新しいカウンタrcのプログラムをインストールしなくても、所定の期限が到来したとき、プログラムを無効化することもできる。
【0224】
あるいは、開発者がコーディングをする場合には、無効化情報として日付および時刻を採用し、出荷する記録再生装置1にインストールされるプログラムの無効化情報には、カウンタrcを採用するなど、無効化情報を区別して利用してもよい。
【0225】
なお、無効化情報として日付および時刻を採用した場合には、記録再生装置1は、ユーザが記録再生装置1において設定した時刻ではなく、放送信号に含まれる時刻情報と無効化情報とを比較する。従って、放送信号に含まれる時刻情報が改ざんされず、かつ、正確であることが前提となる。
【0226】
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【0227】
図22は、記録再生装置1またはUSBメモリ4に対応する記憶装置としてのコンピュータのハードウエアの構成例を示すブロック図である。
【0228】
コンピュータにおいて、CPU(Central Processing Unit)101,ROM(Read Only Memory)102,RAM(Random Access Memory)103は、バス104により相互に接続されている。
【0229】
バス104には、さらに、入出力インタフェース105が接続されている。入出力インタフェース105には、入力部106、出力部107、記憶部108、通信部109、及びドライブ110が接続されている。
【0230】
入力部106は、例えば、キーボード、マウス、マイクロホンなどよりなる。出力部107は、例えば、ディスプレイ、スピーカなどよりなる。記憶部108は、ハードディスクや不揮発性のメモリなどよりなる。通信部109は、ネットワークインタフェースなどよりなる。ドライブ110は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア111を駆動する。
【0231】
以上のように構成されるコンピュータでは、CPU101が、例えば、記憶部108に記憶されているプログラムを、入出力インタフェース105及びバス104を介して、RAM103にロードして実行することにより、上述した一連の処理が行われる。
【0232】
コンピュータ(CPU101)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア111に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、ディジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【0233】
コンピュータでは、プログラムは、リムーバブルメディア111をドライブ110に装着することにより、入出力インタフェース105を介して、記憶部108にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部109で受信し、記憶部108にインストールすることができる。その他、プログラムは、ROM102や記憶部108に、あらかじめインストールしておくことができる。
【0234】
なお、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる場合はもちろん、必ずしも時系列的に処理されなくとも、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで実行されてもよい。
【符号の説明】
【0235】
1 記録再生装置, 3 PC, 4 USBメモリ, 20 チューナ部, 21 MPEGデコーダ, 22 圧縮伸長部, 23 暗号化部, 24 HDD, 30 CPU, 31 RAM, 32 フラッシュROM, 51 署名付きインストーラ, 52 インストーラ, 53 電子署名, 61 ラップ暗号鍵生成モジュール, 62 セキュアデータ生成モジュール, 63 秘密鍵生成モジュール, 64 セキュアデータ検証モジュール, 65 インストーラ証明書検証モジュール, 66 開発者検証モジュール, 67 アプリケーション, 81 開発者識別ファイル, 82 開発者識別ファイル証明書

【特許請求の範囲】
【請求項1】
コンテンツを記録または再生する記録再生手段と、
前記コンテンツを記録または再生する際に、前記コンテンツをコンテンツ暗号鍵で暗号化または復号する暗号化手段と、
装置本体と着脱可能な記録媒体から読み出したプログラムに基づいて、前記装置本体に固有の第1の情報を用いて前記コンテンツ暗号鍵を生成し、前記装置本体に固有の第2の情報を用いて前記コンテンツ暗号鍵をラップする秘密鍵を生成し、前記秘密鍵で前記コンテンツ鍵をラップしたラップコンテンツ暗号鍵を生成する生成手段と、
生成された前記ラップコンテンツ暗号鍵を、それを無効化する無効化情報とともに記憶する暗号鍵記憶手段と
を備える記録再生装置。
【請求項2】
前記暗号鍵記憶手段は、さらに、前記ラップコンテンツ暗号鍵と前記無効化情報の改ざんを検出するための鍵改ざん検出情報も記憶し、
前記鍵改ざん検出情報に基づいて、前記暗号鍵記憶手段に記憶されている前記ラップコンテンツ暗号鍵と前記無効化情報の改ざんを検証するラップコンテンツ暗号鍵検証手段をさらに備える
請求項1に記載の記録再生装置。
【請求項3】
前記記録媒体には、前記プログラムの改ざんを検出するためのプログラム改ざん検出情報も記憶されており、
前記プログラム改ざん検出情報に基づいて、前記記録媒体から読み出したプログラムの改ざんを検証するプログラム検証手段をさらに備え、
前記生成手段は、前記プログラム検証手段により前記プログラムが改ざんされていないことが確認できた場合に、前記ラップコンテンツ暗号鍵を生成する
請求項2に記載の記録再生装置。
【請求項4】
再生された前記コンテンツをHDMIの規格に従った信号として出力するHDMI出力手段をさらに備え、
前記第2の情報は、前記HDMI出力手段に固有の情報であり、
前記第1の情報は、前記コンテンツ記憶手段に固有の情報である
請求項1に記載の記録再生装置。
【請求項5】
前記プログラムは、所定のアプリケーションをインストールするインストーラであり、
前記無効化情報は、前記アプリケーションのバージョン情報または有効期限である
請求項1に記載の記録再生装置。
【請求項6】
前記コンテンツと、更新された前記アプリケーションを放送信号として受信する受信する受信手段をさらに備える
請求項5に記載の記録再生装置。
【請求項7】
記録再生装置と着脱可能な記録媒体から読み出したプログラムに基づいて、
前記記録再生装置に固有の第1の情報を用いてコンテンツを暗号化するコンテンツ暗号鍵を生成し、
前記記録再生装置に固有の第2の情報を用いて前記コンテンツ暗号鍵をラップする秘密鍵を生成し、
前記秘密鍵で前記コンテンツ鍵をラップしたラップコンテンツ暗号鍵を生成し、
生成された前記ラップコンテンツ暗号鍵を、それを無効化する無効化情報とともに記憶する
コンテンツ鍵制御方法。
【請求項8】
コンピュータに、
記録再生装置に固有の第1の情報を用いてコンテンツを暗号化するコンテンツ暗号鍵を生成し、
前記記録再生装置に固有の第2の情報を用いて前記コンテンツ暗号鍵をラップする秘密鍵を生成し、
前記秘密鍵で前記コンテンツ鍵をラップしたラップコンテンツ暗号鍵を生成し、
生成された前記ラップコンテンツ暗号鍵を、それを無効化する無効化情報とともに記憶する
処理を実行させるプログラム。
【請求項9】
コンテンツを記録再生する記録再生装置に装着され、前記記録再生装置に、
前記記録再生装置に固有の第1の情報を用いてコンテンツを暗号化するコンテンツ暗号鍵を生成させ、
前記記録再生装置に固有の第2の情報を用いて前記コンテンツ暗号鍵をラップする秘密鍵を生成させ、
前記秘密鍵で前記コンテンツ鍵をラップしたラップコンテンツ暗号鍵を生成させ、
生成された前記ラップコンテンツ暗号鍵を、それを無効化する無効化情報とともに記憶させる
プログラムが記録されたコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2010−191816(P2010−191816A)
【公開日】平成22年9月2日(2010.9.2)
【国際特許分類】
【出願番号】特願2009−37021(P2009−37021)
【出願日】平成21年2月19日(2009.2.19)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】