(57)【特許請求の範囲】
【請求項１】
データの書き込みおよび読み出しを行なう外部記憶装置と当該外部記憶装置に対してアクセスするシステム装置との間でなされる認証方法であって、
前記外部記憶装置は、乱数を発生させると共に、当該乱数を秘密鍵を用いて暗号化して前記システム装置に送信し、
前記システム装置は、送信された前記乱数を秘密鍵を用いて復号化すると共に、復号化された当該乱数によりパスワードに対して論理演算が施された演算結果を前記外部記憶装置に送信し、
前記外部記憶装置は、送信された前記演算結果に対して前記論理演算の逆演算を施すことにより前記パスワードを抽出し、当該外部記憶装置が保持しているパスワードと一致しているか否かを判断し、
前記外部記憶装置と前記システム装置とは、第１の秘密鍵と第２の秘密鍵とを互いに保持し、
前記システム装置は、前記第１の秘密鍵により復号化された前記乱数を前記第２の秘密鍵により暗号化してパスワードマスクとし、前記パスワードに対して当該パスワードマスクによる論理演算が施された演算結果を前記外部記憶装置に送信することを特徴とする認証方法。
【請求項２】
前記外部記憶装置は、発生した乱数に第１の秘密鍵を用いて暗号化を施した暗号化乱数を前記システム装置に送信し、
前記システム装置は、送信された前記暗号化乱数に対して前記第１の秘密鍵を用いて復号化し、一定の法則に則って加工を施した後に第２の秘密鍵で暗号化された情報を前記外部記憶装置に送信し、
前記外部記憶装置は、送信された前記情報を前記第２の秘密鍵を用いて復号化した後の数が前記乱数を前記一定の法則に則って加工したものであることを確認することを特徴とする請求項１記載の認証方法。
【請求項３】
前記外部記憶装置と前記システム装置とは、前記第１の秘密鍵と前記第２の秘密鍵との初期値として同一の値を保持し、以後、当該第１の秘密鍵と当該第２の秘密鍵との値として乱数を用いた新たな値を共有することを特徴とする請求項２記載の認証方法。
【請求項４】
前記外部記憶装置は、確認の結果として認証の失敗回数をカウントし、当該認証の失敗回数がある一定値を超えた時点で所定の動作を停止することを特徴とする請求項２記載の認証方法。
【請求項５】
データの書き込みおよび読み出しを行なう外部記憶装置と、当該外部記憶装置に対してアクセスするシステム装置とを備え、
前記外部記憶装置は、乱数を発生させると共に、当該乱数を秘密鍵を用いて暗号化して前記システム装置に送信し、
前記システム装置は、送信された前記乱数を秘密鍵を用いて復号化すると共に、復号化された当該乱数によりパスワードに対して論理演算が施された演算結果を前記外部記憶装置に送信し、
前記外部記憶装置は、送信された前記演算結果に対して前記論理演算の逆演算を施すことにより前記パスワードを抽出し、当該外部記憶装置が保持しているパスワードと一致しているか否かを判断し、
前記外部記憶装置と前記システム装置とは、第１の秘密鍵と第２の秘密鍵とを互いに保持し、
前記システム装置は、前記第１の秘密鍵により復号化された前記乱数を前記第２の秘密鍵により暗号化してパスワードマスクとし、前記パスワードに対して当該パスワードマスクによる論理演算が施された演算結果を前記外部記憶装置に送信することを特徴とする認証システム。
【請求項６】
前記外部記憶装置と前記システム装置とは、前記第１の秘密鍵と前記第２の秘密鍵との初期値として同一の値を保持し、以後、当該第１の秘密鍵と当該第２の秘密鍵との値として乱数を用いた新たな値を共有することを特徴とする請求項５記載の認証システム。
【請求項７】
前記外部記憶装置は、発生した乱数に第１の秘密鍵を用いて暗号化を施した暗号化乱数を前記システム装置に送信し、
前記システム装置は、送信された前記暗号化乱数に対して前記第１の秘密鍵を用いて復号化し、一定の法則に則って加工を施した後に第２の秘密鍵で暗号化された情報を前記外部記憶装置に送信し、
前記外部記憶装置は、送信された前記情報を前記第２の秘密鍵を用いて復号化した後の数が前記乱数を前記一定の法則に則って加工したものであることを確認することを特徴とする請求項６記載の認証システム。
【請求項８】
前記外部記憶装置は、確認の結果として認証の失敗回数をカウントし、当該認証の失敗回数がある一定値を超えた時点で所定の動作を停止することを特徴とする請求項５記載の認証システム。
【請求項９】
前記外部記憶装置はハードディスクドライブであり、前記システム装置と一体となって装備されることを特徴とする請求項５記載の認証システム。
【請求項１０】
前記システム装置および前記ハードディスクドライブは、第１の鍵と第２の鍵とを互いに保持し、
前記システム装置において保持される前記第１の鍵および前記第２の鍵は、ＩＣカードに格納され、
前記ハードディスクドライブに保持される前記第１の鍵および前記第２の鍵は、当該ハードディスクドライブを構成するディスクメディアに格納されることを特徴とする請求項９記載の認証システム。
【請求項１１】
システム装置に接続されて、データの書き込みおよび読み出しを行なう外部記憶装置であって、
システム装置と同一の秘密鍵を保持する保持手段と、
乱数を発生する乱数発生手段と、
前記乱数に前記秘密鍵を用いて暗号化を施す暗号化手段と、
前記暗号化手段により暗号化が施された暗号化乱数を前記システム装置に送信する送信手段と、
送信した前記暗号化乱数に対して前記システム装置にて復号化された前記乱数により、当該システム装置にてパスワードに対して論理演算が施された演算結果を当該システム装置から受信する受信手段と、
前記受信手段により受信した前記演算結果に対して前記論理演算の逆演算を施すことにより前記パスワードを抽出し、自らが保持しているパスワードと一致しているか否かを判断する手段とを備え、
前記保持手段は、前記システム装置と同一の値である第１の秘密鍵と第２の秘密鍵とを初期値として保持し、以後、当該第１の秘密鍵と当該第２の秘密鍵との値として乱数を用いた新たな値を当該システム装置と共有して保持することを特徴とする外部記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部記憶装置とシステム装置との間でなされる認証方法等に係り、特に、実効的に強力なセキュリティを確保する認証方法等に関する。
【０００２】
【従来の技術】
近年、ＣＡＴＶ(ケーブルテレビ)の他、デジタル放送であるＣＳ放送、ＢＳデジタル放送が開始され、受信されるコンテンツを録画する方法としては、従来のビデオテープへの録画方式から、ハードディスクドライブ(ＨＤＤ)等の外部記憶媒体に録画する方式に注目が移っている。このＣＡＴＶやＣＳ放送、ＢＳデジタル放送を受信するための機能に加え、内蔵されるハードディスクドライブに番組を録画して追いかけ視聴ができたり、インターネットに接続できたりといった機能を備えた情報端末として、セットトップボックス(ＳＴＢ：Set Top Box)が存在している。
【０００３】
このセットトップボックスは、コンテンツの配信に重点が置かれており、現在のビジネスモデルでは顧客に無料で配布される場合が多い。ハードディスクドライブが装備されたセットトップボックスを無料配布するメーカにとっては、放送されるコンテンツの用途に対してハードディスクドライブが利用されれば問題はないのであるが、他の用途に流用されることには問題がある。即ち、ハードディスクドライブを流用する目的でセットトップボックスの無料配布を受ける顧客を排除することが必要となる。
【０００４】
【発明が解決しようとする課題】
ここで、ＡＴ互換機のハードディスク・インターフェースとして、最も普及しているＡＴＡ(ＩＤＥ)では、下記のようなセキュリティコマンドが、標準ＡＴＡコマンドとしてサポートされている。
・ＳＥＣＵＲＩＴＹ  ＳＥＴ  ＰＡＳＳＷＯＲＤ
・ＳＥＣＵＲＩＴＹ  ＵＮＬＯＣＫ
・ＳＥＣＵＲＩＴＹ  ＥＲＡＳＥ  ＰＲＥＰＡＲＥ
・ＳＥＣＵＲＩＴＹ  ＥＲＡＳＥ  ＵＮＩＴ
・ＳＥＣＵＲＩＴＹ  ＦＲＥＥＺＥ  ＬＯＣＫ
・ＳＥＣＵＲＩＴＹ  ＤＩＳＡＢＬＥ  ＰＡＳＳＷＯＲＤ
【０００５】
しかしながら、これらは単純なパスワードシステムであり、例えば、ハードディスクドライブのロック状態を解除するためのコマンドである「ＳＥＣＵＲＩＴＹ  ＵＮＬＯＣＫ」では、その因数としてのパスワードをハードディスクドライブへ転送している。この構成の場合、例えば、ハードディスクドライブが盗まれてもその内容を盗まれたくないような態様には有効に働かせることができる。しかし、セットトップボックスのシステム所有者が、ハードディスクドライブが接続された状態でパスワードを盗み、その後、ハードディスクドライブを他に転用するような状況は想定されていない。即ち、セットトップボックスの提供メーカが、無料配布するハードディスクドライブを特定のセットトップボックス(例えば配布時に組み合わされたセットトップボックス)に対してのみ使用を許可したいと欲するにも関わらず、現状の技術では、かかる顧客を排除することは困難である。
【０００６】
このハードディスクドライブを盗用しようとするもの(攻撃者)が行なうものとしては、パスワードハックと、横取りとがある。現状の技術では、ハードディスクドライブパスワードは、ハードディスクコントローラからハードディスクドライブに対して、素のもの(Plain Text)が引き渡されている。攻撃者は、これをモニタすることによって、簡単にハードディスクドライブパスワードを盗み取る(パスワードハック)が可能である。また、ハードディスクドライブは、一度、ハードディスクドライブパスワードを受け取ってしまうと、以後、如何なるコントローラからのコマンドに対しても応答してしまう。この構成は、ハードディスクドライブを他の用途に使用するチャンスを攻撃者に与えるだけではなく、ハードディスクドライブ内コンテンツの読取りを簡便にし、コンテンツプロテクションの脆弱性を高める可能性もある。
【０００７】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的とするところは、外部記憶装置が特定のシステムとの組み合わせ以外で動作することを禁止することにある。
また他の目的は、外部記憶装置を盗用しようとする者が、その認証プロトコルなどを知り得ても、盗用が成功しないような充分安全(セキュア)なプロトコルと機構とを実装することにある。
更に他の目的は、現状のコマンドとの最大限の整合性を考慮した新たなコマンド体系を提供することにある。
【０００８】
【課題を解決するための手段】
かかる目的のもと、本発明は、ハードディスクドライブ等の外部記憶装置とシステム側であるシステム装置との間で秘密情報(秘密鍵)を共有し、これによって機器相互認証を行なう。また、システム装置は、この秘密情報を用いてパスワードを暗号化して外部記憶装置に送信し、以後、システム装置は、コマンドを外部記憶装置へ発行する度に、または特定のコマンド群を外部記憶装置へ発行する度に、秘密情報に基づいた毎回発生するパスワードを外部記憶装置へ送信している。更に、パスワードを受け取った外部記憶装置は、そのパスワードの有効性を毎回検査の上、システム装置からのコマンドに応答し、または拒否を行なっている。
【０００９】
即ち、本発明は、データの書き込みおよび読み出しを行なう外部記憶装置とこの外部記憶装置に対してアクセスするシステム装置との間でなされる認証方法として把握できる。ここで、このシステム装置は、発生した乱数を外部記憶装置に送信し、外部記憶装置は、送信された乱数に対して一定の法則に則って加工を施した後に秘密鍵で暗号化した情報をシステム装置に送信し、システム装置は、受信した情報を秘密鍵を用いて復号化し、復号化された情報に基づいて、乱数に対して一定の法則に則って加工が施されたことを認識し、外部記憶装置とシステム装置とが互いに同一の秘密鍵を保持していることを確認することを特徴としている。ここで、このシステム装置は、確認の結果として認証の失敗回数をカウントし、この認証の失敗回数がある一定値を超えた時点で外部記憶装置に対するアクセスを停止することを特徴とすることができる。
【００１０】
また、本発明が適用される認証方法では、外部記憶装置は、発生した乱数に第１の秘密鍵を用いて暗号化を施した暗号化乱数をシステム装置に送信し、システム装置は、送信された暗号化乱数に対して第１の秘密鍵を用いて復号化し、一定の法則に則って加工を施した後に第２の秘密鍵で暗号化された情報を外部記憶装置に送信し、外部記憶装置は、送信された情報を第２の秘密鍵を用いて復号化した後の数が乱数を一定の法則に則って加工したものであることを確認することを特徴とすることができる。
【００１１】
更に、本発明が適用される認証方法では、外部記憶装置及びシステム装置は、秘密情報として第１の鍵および第２の鍵を互いに保持し、この第１の鍵および第２の鍵を用いて、それぞれ暗号化および復号化を行なうことが好ましい。
【００１２】
また、本発明が適用される認証方法では、外部記憶装置は、発生させた乱数を秘密鍵を用いて暗号化してシステム装置に送信し、システム装置は、送信された乱数を秘密鍵を用いて復号化し、復号化された乱数によりパスワードに対して論理演算が施された演算結果を外部記憶装置に送信し、外部記憶装置は、送信された演算結果に対して論理演算の逆演算を施すことによりパスワードを抽出し、外部記憶装置が保持しているパスワードと一致しているか否かを判断することを特徴とすることができる。また、第１の秘密鍵と第２の秘密鍵とを互いに保持し、システム装置は、この第１の秘密鍵により復号化された乱数を第２の秘密鍵により暗号化してパスワードマスクとし、パスワードに対してパスワードマスクによる論理演算が施された演算結果を外部記憶装置に送信することを特徴とすることができる。
【００１３】
一方、本発明は、外部記憶装置と、この外部記憶装置に対してアクセスするシステム装置とを備えた認証システムとして把握することができる。この認証システムにおけるシステム装置では、発生した乱数を外部記憶装置に送信し、送信された乱数に対して外部記憶装置が一定の法則に則って加工を施した後に秘密鍵で暗号化した情報を外部記憶装置から受信し、受信した情報を秘密鍵を用いて復号化し、復号化された情報に基づいて、乱数に対して一定の法則に則って加工が施されたことを認識することで、外部記憶装置とシステム装置とが互いに同一の秘密鍵を保持していることを確認している。この確認の結果として、認証の連続失敗回数をカウントし、認証の連続失敗回数がある一定値を超えた時点で外部記憶装置に対するアクセスを停止することを特徴とすれば、認証の誤りに対してアクセスを停止してしまう問題に対応することができる。
【００１４】
また、本発明は、ハードディスクドライブが内蔵された提供されるセットトップボックス(ＳＴＢ)等のコンピュータ装置として把握することができる。
【００１５】
更に観点を変えると、本発明は、外部記憶装置に対してアクセスするシステム装置として把えることができる。このシステム装置は、秘密情報として外部記憶装置と共通する２つの秘密鍵を保持する保持手段、乱数を発生する乱数発生手段、乱数を外部記憶装置に送信する送信手段、送信された乱数に対して外部記憶装置が一定の法則に則って加工を施した後に秘密鍵で暗号化した情報を外部記憶装置から受信する受信手段、受信した情報を秘密鍵を用いて復号化する復号化手段、復号化された情報により乱数発生手段にて発生した乱数に対して一定の法則に則って加工が施されたことを認識することで、外部記憶装置とシステム装置とは互いに同一の秘密鍵を保持することを確認する確認手段とを備えている。
【００１６】
また、本発明が適用されるハードディスクドライブ等の外部記憶装置では、システム装置と同一の秘密鍵を保持する保持手段、乱数を発生する乱数発生手段と、乱数に秘密鍵を用いて暗号化を施す暗号化手段と、暗号化が施された暗号化乱数をシステム装置に送信する送信手段、送信した暗号化乱数に対してシステム装置にて復号化された後に加工された乱数をシステム装置から受信する受信手段、受信した乱数が一定の法則に則って加工されたものであることを確認する確認手段を備えたことを特徴としている。
【００１７】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて本発明を詳細に説明する。
図１は、本実施の形態が適用されるコンピュータシステムの構成を説明するための図である。ここでは、コンピュータシステムの一例として、ケーブルＴＶ(ＣＡＴＶ)用であるデジタル型のセットトップボックス１０を挙げて説明する。本実施の形態が適用されるセットトップボックス１０は、ケーブルＴＶとして配信される番組(コンテンツ)を受信するケーブルモデム８と、配信された番組を表示出力するディスプレイ(ＴＶ)９に接続されている。
【００１８】
また、システム側として機能するセットトップボックス１０には、ＩＣカードの１つであるスマートカード７を取り付けることができる。このスマートカード７には、システム側の秘密情報(後述するＰks、Ｐkh)が保存されている。また、このスマートカード７には乱数発生装置が組み込まれており、本実施の形態にてシステム側で生成すべき乱数は、このスマートカード７の内部で生成されている。
【００１９】
セットトップボックス１０は、スマートカード７に格納された情報を読み込みスマートカード７にアクセスすることができるスマートカードリーダ１１、ディスプレイ(ＴＶ)９とのインターフェース(Ｉ/Ｆ)として機能するディスプレイＩ/Ｆ１２、ケーブルモデム８を介して受信したコンテンツを取り込むイーサネットＩ/Ｆ１３、各種カウンタの値等を格納するＲＡＭ１４、セットトップボックス１０の全体を制御するＭＰＵ１５、ＭＰＵ１５の動作プログラム等が格納されているＲＯＭ１６を備えている。このＲＯＭ１６には、手順公開型の秘密鍵暗号の一方式であるＤＥＳ(Data Encryption Standard)や対象ストリーム暗号方式であるＲＣ４等の暗号プログラムが実装されている。
【００２０】
更に、セットトップボックス１０は、本実施の形態が適用される外部記憶装置であるセキュア(Secure)ＨＤＤ(ハードディスクドライブ)２０が接続されている。セットトップボックス１０を提供するメーカからは、セットトップボックス１０とセキュアＨＤＤ２０とを筐体に一体として組み込んだ形式にて提供される。ケーブルモデム８を介して配信されるコンテンツは、セットトップボックス１０のイーサネットＩ/Ｆ１３を通り、セキュアＨＤＤ２０に保存される。保存されたコンテンツは、必要に応じて、ディスプレイＩ/Ｆ１２を介してディスプレイ(ＴＶ)９に再生表示される。
【００２１】
図２は、本実施の形態が適用される外部記憶装置の構成を詳述した説明図である。本実施の形態が適用されるセキュアＨＤＤ２０は、データが格納されるメディアであるディスクメディア２１、ディスクメディア２１を制御するメディアコントローラ２２、セキュアＨＤＤ２０の全体を制御する演算処理装置であるＭＰＵ２３、ＤＥＳやＲＣ４等の暗号プログラムが実装されるＲＯＭ２４、ＭＰＵ２３により制御される各種カウンタ等を格納するＲＡＭ２５、ＡＴＡ(AT Attachment)によりシステム側とのインターフェースを司るＡＴＡ Ｉ/Ｆ２６を備えている。
【００２２】
図３は、図１および図２にて説明したコンピュータシステムにおける処理ブロックの構成を説明するための図である。ここでは、システム装置であるシステム側３０(セットトップボックス１０側)と外部記憶装置であるＨＤＤ側５０(セキュアＨＤＤ２０側)とがデータバス４０を介して接続されている。システム側３０は、図１に示すＭＰＵ１５に含まれる中央処理装置３１、ＨＤＤ側５０とのデータ送受信を実行するデータ送受信制御装置３２、本実施の形態におけるセキュリティ関連情報の格納等がなされているセキュリティ制御機構３３とを備えている。セキュリティ制御機構３３は、図１に示すスマートカード７に格納される不揮発性メモリ３４と乱数発生器３５を備え、また、図１に示すＭＰＵ１５によって制御管理されてＲＡＭ１４上に保持される認証失敗カウンタ３６およびコマンドカウンタ３７とを含んでいる。更に、乱数発生器３５とは別のコマンドで用いられる乱数発生器３８を備えている。
【００２３】
この乱数発生器３８は、図１に示すＲＯＭ１６上のソフトウェアによって実装され、より具体的には、ＤＥＳ、ＲＣ４等の暗号プログラムにより実現される。乱数発生器３８は、図１に示すスマートカード７の不揮発性メモリ３４に格納されている秘密鍵(秘密情報(Ｐks、Ｐkh))を受け取ると共に、乱数発生器３５から初期乱数値を受け取る。暗号プログラムは、受け取ったこの乱数初期値を秘密鍵で繰り返し暗号化することにより、擬似乱数列を生成している。認証失敗に関する情報は認証失敗カウンタ３６に格納され、システム停止などの定められた状態への遷移に利用される。また、データバス４０を介してハードディスクドライブとの送受信に用いられたコマンドは、コマンドカウンタ３７に格納される。
【００２４】
ＨＤＤ側５０は、図２に示したＭＰＵ２３に含まれる中央処理装置５１、システム側３０とデータバス４０を介して送受信を行なうデータ送受信制御装置５２、およびセキュリティ制御機構５３を備えている。このセキュリティ制御機構５３は、乱数発生器５４を備えている。この乱数発生器５４は、専用のハードウェアを用意してＭＰＵ２３と接続してもよいが、本実施の形態では、ＲＯＭ２４上のソフトウェアによる実装とし、その前提として、ＨＤＤ出荷時にディスクメディア２１に固有の乱数初期値を２個、書き込んでおくものとする。ＲＯＭ２４上には、ＤＥＳやＲＣ４等の暗号プログラムが実装されており、１つの初期値を暗号鍵として、暗号プログラムにより他の初期値を暗号化し、その暗号化の結果をもって生成された乱数とみなすものとする。この生成された乱数を、初期値に上書きし、以降、この生成プロセスを繰り返すことにより、同一の乱数列が生成されることを防いでいる。
【００２５】
乱数発生器５７は、ＲＯＭ２４上のソフトウェアにより実装され、ＤＥＳやＲＣ４等の暗号プログラムにより実現される。この暗号プログラムは、暗号鍵と乱数初期値とを受け取り、乱数初期値を暗号鍵で繰り返し暗号化することによって、擬似乱数列を生成している。認証失敗カウンタ５５およびコマンドカウンタ５６は、図２に示したＭＰＵ２３により制御管理され、これらの値はＲＡＭ２５上に保持される。
【００２６】
システム側３０に設けられる認証失敗カウンタ３６、ＨＤＤ側５０に設けられる認証失敗カウンタ５５は、連続して認証の失敗をした回数が記録される。ここでは、相手機器が秘密情報を共有していないことが明らかになった時点で、認証の失敗が発生し、認証失敗カウンタ３６,５５のカウント値がインクリメントされる。相手機器が秘密情報を共有していることが明らかになった時点で、認証失敗カウンタ３６,５５のカウンタ値が「０」にリセットされる。また、認証失敗カウンタ３６,５５のカウンタ値がある一定数を超えた時点で、システム側３０またはＨＤＤ側５０の動作を停止している。
【００２７】
次に、図４〜図６を用いて、本実施の形態におけるシステム側３０とＨＤＤ側５０とでなされる暗号・認証方式について説明する。ここでは、パーソナライズ(Personalize)処理、パスワードの暗号化、および継続的な機器認証機構を説明する。
【００２８】
図４は、イニシャル時になされるパーソナライズ処理を説明するための図である。本実施の形態では、システム側３０とＨＤＤ側５０とで秘密情報(Personal Key)を共有し、この秘密情報を用いることにより、機器相互認証を行なっている。この機器相互認証は、電源立ち上げ時には必ず行なわれる。また、システム側３０とＨＤＤ側５０とは、互いに乱数を発生させ、これをこの秘密情報を用いて暗号化した後に交換している。
【００２９】
図４に示すように、システム側３０とＨＤＤ側５０とは、秘密情報として秘密鍵Ｐksと秘密鍵Ｐkhとを持ち、その初期値として、各々Ｉs、Ｉhという値を持っている。これらは、システム側３０とＨＤＤ側５０との製造時に書き込むものとし、システム側３０とＨＤＤ側５０との初期化プログラムを実行することにより、ＰksとＰkhとが各々Ｉs、Ｉhに戻るものとしている。これらＩs、Ｉhには、例えば、客先固有の値を与え、夫々を秘密にすることによって、初期状態にあるＨＤＤ側５０に対しても、それを他社のシステム側３０に接続することを禁止することができる。
【００３０】
秘密状態として持つＰksまたはＰkhは、各々異なるものを与える場合と、Ｐks＝ｆ(Ｐkh)というような、片方の値を加工した値を与える場合とが考えられる。例えば、ＰksはＰkhに１を加えたり、Ｐkhに特定の定数値と排他的論理和を取ったものを採用する方法もある。この初期状態にあるシステム側３０とＨＤＤ側５０とを用い、例えばＳＴＢを提供するメーカは、セキュアＨＤＤ２０をセットトップボックス１０に装填する。
【００３１】
システム側３０では、先ず乱数ＲＮＤxが生成され、次にＨＤＤ側５０に対して、『ＳＥＴ_ＰＥＲＳＯＮＡＬＩＺＥ』コマンドが発行される。同時に、コマンドの引数として、先に生成した乱数ＲＮＤxがＨＤＤ側５０へ送信される。乱数の受け渡しの際に、何らかの加工が施される場合も本例に含むものとする。例えば、乱数ＲＮＤxを暗号化したものがＨＤＤ側５０へ送信される場合などである。
【００３２】
ＨＤＤ側５０では、乱数ＲＮＤyが生成され、次に、受け取った乱数ＲＮＤxに特定の加工が施される。そして、乱数ＲＮＤyおよび特定の加工が施された乱数ＲＮＤxが連結されたものがＰkhにより暗号化され、システム側３０に送信される。ここでは、手順公開型であるＤＥＳによって暗号化されている。また、乱数ＲＮＤxの加工例として、単純に＋１がなされる場合を示しているが、例えば、乱数ＲＮＤyが加えられたり、乱数ＲＮＤyと排他的論理和が取られる場合もある。更には「０」が加えられる場合もある。
【００３３】
システム側３０では、加工されて送られてきた乱数ＲＮＤxに対して秘密鍵Ｐkh(＝Ｉh)にて復号化が行なわれ、その結果が特定の加工を受けた乱数ＲＮＤxと同一であるかどうかが確認される。図４に示す例では、復号結果がＲＮＤx＋１になっているかどうかが確認される。この結果が正しくなければ、システム側３０内の認証失敗カウンタ３６がインクリメントされ、本コマンドプロトコルが終了される。認証失敗カウンタ３６の出力がある特定の値(例えば３)を超える場合には、セキュリティ上の問題があるとして、システム側３０はシステム停止などの定められた状態に遷移し、コマンドを受け付けないようにする。但し、どのような状態に遷移するかは基本的にはセットトップボックス１０を提供するメーカ側のセキュリティポリシーに依存するものとなる。
【００３４】
ＲＮＤx＋１が正しく確認された場合、図４に示すように、システム側３０は、乱数 newＰks を発生し、それが新たなＰksの候補とされる。また、システム側３０では、ＲＮＤyがＰkh(＝Ｉh)にて復号化され、その結果に対して特定の加工(ここでは＋１)が行なわれる。システム側３０では、newＰksとＲＮＤy＋１とがＰks(＝Ｉs)にて暗号化され、これがＨＤＤ側５０に送信される。
【００３５】
次に、ＨＤＤ側５０では、加工されて送られてきたＲＮＤyに対して秘密鍵Ｐks(＝Ｉs)にて復号化が行なわれ、その結果が特定の加工を受けたＲＮＤyと同一であるかどうかが確認される(この例では、復号結果がＲＮＤy＋１になっているかどうかが確認される)。この結果が正しくなければ、ＨＤＤ側５０内の認証失敗カウンタ５５がインクリメントされ、本コマンドプロトコルが終了されて、通常のＡＴＡコマンドと同様の方式にてエラーがシステム側３０に返される。認証失敗カウンタ５５の出力がある特定の値(例えば３)を超える場合には、セキュリティ上の問題があるとして、ＨＤＤ側５０ではシステム停止などの定められた状態への遷移がなされ、コマンドが受け付けられないように制御される。但し、どのような状態に遷移するかは、基本的にはセットトップボックス１０を提供するメーカ側のセキュリティポリシーに依存することとなる。
【００３６】
ＲＮＤy＋１が正しく確認された場合には、ＨＤＤ側５０からは、乱数 newＰkh が出力され、これが新たなＰkh候補とされる。次にＨＤＤ側５０では、newＰks が秘密鍵Ｐks(＝Ｉs)にて復号化され、これが新たな 秘密鍵Ｐks とされて、古い秘密鍵Ｐks(＝Ｉs)が置き換えられる。ＨＤＤ側５０からは、ステータスコードとして正常終了がシステム側３０に返されると共に、newＰkhが秘密鍵Ｐkh(＝Ｉh)にて暗号化された結果がシステム側３０に送信される。その後、ＨＤＤ側５０では、newＰkhが新たな秘密鍵Ｐkhとして、古いＰkh(＝Ｉh)に置き換えられる。
【００３７】
システム側３０では、ステータスコードとしてエラーが返って来た場合には、Ｐks、Ｐkhが更新されることはなく、プロトコルが終了される。ステータスコードとして正常終了が返って来た場合には、システム側３０では、newＰkh がＰkh(＝Ｉh)にて復号化され、これが新たなＰkh として、古いＰkh(＝Ｉh)に置き換えられる。更に、newＰks が新たなＰksとされて、古いＰks(＝Ｉs)が置き換えられる。
【００３８】
以上のようなプロトコルにより、秘密鍵であるＰksとＰkhとが更新され、以降、この新たな秘密鍵を有するペアのシステム側３０とＨＤＤ側５０以外では通信が不可能となる。その後、更に秘密鍵の更新が必要となった場合には、上記のプロトコルにおける現在のＰks、Ｐkhの値をIs、Ｉhに読み替えることによって、同一のプロトコルにて実現することが可能となる。
【００３９】
図５は、パスワードの暗号化処理を説明するための図である。ここでも前述と同様に、システム側３０とＨＤＤ側５０とは、秘密鍵ＰksとＰkhとを秘密情報として持つものとし、また、電源投入時に、ＨＤＤ側５０は、パスワードロックがなされた状態で起動されるものとする。このとき、本実施の形態では、システム側３０はＨＤＤ側５０を使用するためにＨＤＤ側５０にパスワードを送らなければならず、図５に示す手順が実行される。
【００４０】
システム側３０では、先ず、乱数ｓＲＮＤが生成され、次にＨＤＤ側５０に対して『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドが発行される。同時に、このコマンドの引数として、先に生成した乱数ｓＲＮＤがＨＤＤ側５０へ送信される。
【００４１】
ＨＤＤ側５０では、先ず乱数ｈＲＮＤが生成され、次に受け取った乱数ｓＲＮＤに特定の加工が施される。そして、乱数ｈＲＮＤと特定の加工が施された乱数ｓＲＮＤとが連結されたものに対して秘密鍵Ｐkh にて、例えばＤＥＳによる暗号化が施され、システム側３０に送信される。ここでは、乱数ｓＲＮＤの加工例として単純に＋１が施される例が示されているが、例えば、乱数ｈＲＮＤが加えられたり、乱数ｈＲＮＤと排他的論理和が取られる場合もある。更には、「０」が加えられる場合もある。
【００４２】
システム側３０では、加工されて送られてきた乱数ｓＲＮＤに対して秘密鍵Ｐkh にて復号化がなされ、その結果が特定の加工を受けた乱数ｓＲＮＤと同一であるか否かが判断される(図５に示す例では、復号結果がｓＲＮＤ＋１になっているかどうかが確認される)。この結果が正しくなければ、システム側３０内の認証失敗カウンタ３６がインクリメントされ、本コマンドプロトコルが終了される。認証失敗カウンタ３６の出力が、ある特定の値(例えば３)を超える場合には、セキュリティ上の問題があるとしてシステム側３０はシステム停止などの定められた状態に遷移され、コマンドを受け付けないように制御される。但し、どのような状態に遷移するかは基本的にはＳＴＢメーカのセキュリティポリシーに依存している。
【００４３】
ｓＲＮＤ＋１が正しく確認された場合、システム側３０では暗号化されたｈＲＮＤがＰkh にて復号化され、乱数ｈＲＮＤが取り出される。システム側３０では、この乱数ｈＲＮＤが更に秘密鍵Ｐks にて暗号化され、これがＰＷ_Ｍａｓｋとされる。同時に、ＨＤＤ側５０でも乱数ｈＲＮＤが秘密鍵Ｐksにて暗号化され、これがＰＷ_Ｍａｓｋとされる。システム側３０では、通常のＨＤＤパスワードをＰＷ_Ｍａｓｋ により暗号化(ここでは排他的論理和を計算)する事によってマスクがなされる(Ｍａｓｋｅｄ_ＰＷ の生成)。
【００４４】
システム側３０からは、標準の『ＳＥＣＵＲＩＴＹ ＵＮＬＯＣＫ』コマンドが発行されるが、このとき、素のパスワードの代わりに、生成されたＭａｓｋｅｄ_ＰＷ がパスワードフィールドに埋め込まれて、ＨＤＤ側５０へ送信される。ＨＤＤ側５０では、Ｍａｓｋｅｄ_ＰＷ が復号化される(ここでは、Ｍａｓｋｅｄ_ＰＷ と ＰＷ_Ｍａｓｋ との排他的論理和が計算される)事により、素のＨＤＤパスワードが抽出される。ＨＤＤ側５０では、得られた素のＨＤＤパスワードが用いられ、以後、標準の『ＳＥＣＵＲＩＴＹ ＵＮＬＯＣＫ』コマンドの手順に従い、コマンド処理が実行される。
【００４５】
図６は、継続的な機器認証機構を説明するための図である。イニシャルセットアップ(Initial Setup)において、まず、システム側３０では、パスワードの暗号化プロセスによって『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドが発行される。これに伴い、システム側３０とＨＤＤ側５０とでは、乱数ｓＲＮＤとｈＲＮＤとが共有される。ここでシステム側３０およびＨＤＤ側５０では、ある特定の関数にｓＲＮＤとｈＲＮＤとが与えられ、擬似乱数列のシード値Ｉｖが作成される。具体的な関数としては、例えばｓＲＮＤとｈＲＮＤとの排他的論理和の計算等が挙げられるが、この他にもｓＲＮＤをｈＲＮＤにて暗号化することも可能である。
【００４６】
システム側３０およびＨＤＤ側５０には、同一の擬似乱数発生器(ＰＲＮＧ(Pseudo Random Number Generator))が内蔵され、これへの初期値としてＩｖが与えられて、乱数列ＰＲＮＧ(Ｉｖ＋＋)が生成される。システム側３０でのこの乱数列の先頭をＫｒｓとし、ＨＤＤ側５０でのこの乱数列の先頭をＫｒｈとする。
【００４７】
システム側３０からＨＤＤ側５０へコマンドが送出される毎に、又は、システム側３０からＨＤＤ側５０へ特定のコマンド群(例えばＲＥＡＤコマンド)が送出される毎に、システム側３０からは『ＳＥＴ_ＫＥＹ』コマンドが発行され、その引数としてＫｒｓがＨＤＤ側５０に送信される。また、システム側３０からＨＤＤ側５０に対して、ＲＥＡＤコマンドが送信される。このＲＥＡＤコマンドは、通常のＡＴＡコマンドであるが、この例では、機器認証を必要とするコマンドの例とされている。
【００４８】
ＨＤＤ側５０では、このＲＥＡＤコマンドの受信に先立って、送信されたＫｒｓが、ＨＤＤ側５０内部で生成されたＫｒｈと同一であるかどうかが検査される。これが同一である場合には、ＲＥＡＤコマンドに対して通常どおりの処理が行なわれる。以降、ＨＤＤ側５０およびシステム側３０では、それぞれのＰＲＮＧによって得られる乱数列から、順序に従って取り出した乱数が、それぞれ新たなＫｒｓ、Ｋｒｈとされ、『ＳＥＴ_ＫＥＹ』コマンドからのプロトコルが繰り返される。また、ＫｒｓがＫｒｈと異なる場合、ＨＤＤ側５０の動作が停止され、セキュリティロックがかかった状態に遷移する。これを解除するためには、再度『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドから手続きを踏む必要がある。
【００４９】
以上のようにして、システム側３０とＨＤＤ側５０との間における秘密鍵の共有と新規鍵への交換、パスワードの暗号化、継続的な機器認証機構行い、両者の機器認証を可能としている。これによって、ＨＤＤ側５０は、特定のシステム側３０以外では動作せず、また、システム側３０は偽のＨＤＤ側５０を認識することが可能となる。また、２つの鍵を共有する場合には、短い鍵を使用した比較的弱い暗号方式を使いながらも、実行的に強力なセキュリティを確保することが可能となる。
【００５０】
次に、図７〜図１０を用いてセットトップボックス１０(システム装置)であるシステム側３０における処理の流れを詳述する。
図７は、システム側３０における全体処理の流れを説明するためのフローチャートである。まず、中央処理装置３１の電源がオンされ(ステップ１０１)、『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドの処理が実行される(ステップ１０２)。そして、パーソナライズ(PERSONALIZE)要求の有無が判断される(ステップ１０３)。要求が存在する場合には、『ＳＥＴ_ＰＥＲＳＯＮＡＬＩＺＥ』コマンドの処理が実行されて(ステップ１０４)、ステップ１０７に移行する。ステップ１０３で要求が存在しない場合には、各種ＨＤＤコマンド要求の有無が判断される(ステップ１０５)。要求が存在する場合には、各種ＨＤＤコマンド処理が実行され(ステップ１０６)、ステップ１０７に移行する。ステップ１０５で要求が存在しない場合には、図３に示すコマンドカウンタ３７が特定の値、例えば「１０」より大きいか否かが判断される(ステップ１０７)。この特定の値を超える場合には、コマンドカウンタ３７を「０」にセットし(ステップ１０８)、『ＳＥＴ_ＫＥＹ』コマンド処理が実行される(ステップ１０９)。ステップ１０７で、この特定の値を超えない場合には、コマンドカウンタ３７をインクリメント(＋１)し(ステップ１１０)、ステップ１０３に戻る。
【００５１】
図中の▲１▼からの処理、即ち、後述するタイムアウトエラーや復号結果が正しくない場合には、認証失敗カウンタ３６をインクリメント(＋１)する(ステップ１１１)。そして、認証失敗カウンタ３６が特定の値、例えば３より大きいか否かが判断される(ステップ１１２)。特定の値を超える場合には、誤りがあるものとして中央処理装置３１を停止する(ステップ１１３)。認証失敗カウンタ３６が特定の値を超えない場合には、ステップ１０３からの処理が実行される。
【００５２】
図８は、図７のステップ１０４における『ＳＥＴ_ＰＥＲＳＯＮＡＬＩＺＥ』コマンドの処理を詳述したフローチャートである。システム側３０は、まず、乱数発生器３５から６４ビット乱数ＲＮＤxを取り出す(ステップ２０１)。そして、取り出した乱数をパラメータに持つ『ＳＥＴ_ＰＥＲＳＯＮＡＬＩＺＥ』コマンドをデータ送受信制御装置３２からＨＤＤ側５０に対して送信する(ステップ２０２)。その後、データ送受信制御装置３２によって受信される１２８ビット通信データを待つ(ステップ２０３)。中央処理装置３１は、タイムアウトエラーが生じたか否かを判断し(ステップ２０４)、タイムアウトの場合には、上述した▲１▼の認証失敗処理に移行する。タイムアウトエラーが生じる前に１２８ビット通信データを受信した場合には、受信した１２８ビット通信データをＤ１とする(ステップ２０５)。
【００５３】
次に、中央処理装置３１は、不揮発性メモリ３４のハードディスク用秘密鍵領域からＰkhを取り出す(ステップ２０６)。そして、このＰkhで受信データＤ１を復号する(ステップ２０７)。ここで、復号データの後半６４ビットデータがＲＮＤx＋１か否かが判断され(ステップ２０８)、ＲＮＤx＋１ではない場合、即ち、この結果が正しくない場合には、上述した▲１▼の認証失敗処理に移行する。正しい場合には、復号データの前半６４ビットデータをＲＮＤyとする(ステップ２０９)。
【００５４】
次に、不揮発性メモリ３４のシステム用秘密鍵領域からＰksを取り出す(ステップ２１０)。そして、乱数発生器３５から６４ビットデータＤ２を作成し(ステップ２１１)、このＤ２から５６ビットを取り出して新しいシステム用秘密鍵newＰksとする(ステップ２１２)。次に、Ｄ２とＲＮＤy＋１を結合した１２８ビットデータをＰksで暗号化し(ステップ２１３)、この暗号化データをデータ送受信制御装置３２から送信する(ステップ２１４)。そして、データ送受信制御装置３２から１２８ビット通信データを待ち(ステップ２１５)、タイムアウトエラーの有無を判断して(ステップ２１６)、タイムアウトエラーである場合には、上述した▲１▼のステップに移行する。タイムアウトエラーではない場合には、受信した６４ビット通信データをＰkhで復号し、その値を不揮発性メモリ３４のハードディスク用秘密鍵領域に格納する(ステップ２１７)。そして、newＰksを不揮発性メモリ３４のシステム用秘密鍵領域に格納し(ステップ２１８)、認証失敗カウンタ３６を０として(ステップ２１９)、ステップ１０７へ戻る。
【００５５】
図９は、図７のステップ１０２における『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドの処理を詳述したフローチャートである。システム側３０は、まず、乱数発生器３５から６４ビット乱数sＲＮＤを取り出し(ステップ３０１)、取り出した乱数をパラメータに持つ『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドをデータ送受信制御装置３２からＨＤＤ側５０に対して送信する(ステップ３０２)。そして、データ送受信制御装置３２によって受信される１２８ビット通信データを待つ(ステップ３０３)。ここで、タイムアウトエラーが発生したか否かを判断し(ステップ３０４)、タイムアウトの場合には、▲１▼の認証失敗処理に移行する。タイムアウトエラーが生じる前に１２８ビット通信データを受信した場合には、受信した１２８ビット通信データをＤ１とする(ステップ３０５)。
【００５６】
次に、中央処理装置３１は、不揮発性メモリ３４のハードディスク用秘密鍵領域からＰkhを取り出し(ステップ３０６)、このＰkhで受信データＤ１を復号する(ステップ３０７)。ここで、復号データの後半６４ビットデータがsＲＮＤ＋１か否かが判断され(ステップ３０８)、sＲＮＤ＋１ではない場合、即ち、この結果が正しくない場合には、上述した▲１▼の認証失敗処理に移行する。正しい場合には、復号データの前半６４ビットデータをhＲＮＤとする(ステップ３０９)。
【００５７】
次に、不揮発性メモリ３４のシステム用秘密鍵領域からＰksを取り出し(ステップ３１０)、hＲＮＤをＰksで暗号化した値と不揮発性メモリ３４に格納されたＨＤＤ用パスワードの排他的論理和をＤ２とする(ステップ３１１)。このＤ２をパラメータとするＡＴＡ ＳＥＣＵＲＩＴＹコマンドをデータ送受信制御装置３２からＨＤＤ側５０に送信する(ステップ３１２)。そして、sＲＮＤ＋hＲＮＤの値を乱数発生器３５の初期値に設定し(ステップ３１３)、認証失敗カウンタ３６を０として(ステップ３１４)、ステップ１０３へ戻る。
【００５８】
図１０は、図７のステップ１０９における『ＳＥＴ_ＫＥＹ』コマンドの処理を示したフローチャートである。『ＳＥＴ_ＫＥＹ』コマンド処理では、乱数発生器３８から擬似乱数列のシード値Ｉｖを取得する(ステップ４０１)。その後、このＩｖをパラメータに持つ『ＳＥＴ_ＫＥＹ』コマンドをデータ送受信制御装置３２からＨＤＤ側５０に送信し(ステップ４０２)、ステップ１０３に戻る。
【００５９】
このように、本実施の形態におけるセットトップボックス１０等のシステム側３０では、乱数を発生してＨＤＤ側５０に対して送信し、この乱数に対してＨＤＤ側５０により一定の法則に則って加工が施され(加工された乱数)、秘密鍵で暗号化されたものを受信する。一方で、システム側３０では、暗号化された「加工された乱数」を秘密鍵を用いて復号化し、その数が、発生した乱数に一定の法則に基づいて加工を施したものかどうかを確認している。これによって、システム側３０にて、ＨＤＤ側５０が秘密鍵を保持しているか否かを判断することができる。
【００６０】
次に、図１１〜図１４を用いてＨＤＤ側５０における処理の流れを詳述する。図１１は、ＨＤＤ側５０における全体処理の流れを説明するためのフローチャートである。まず、中央処理装置５１の電源がオンされ(ステップ５０１)、『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドの処理が実行される(ステップ５０２)。そして、パーソナライズ(PERSONALIZE)コマンドの有無が判断され(ステップ５０３)、コマンドが存在する場合には、『ＳＥＴ_ＰＥＲＳＯＮＡＬＩＺＥ』コマンドの処理が実行されて(ステップ５０４)、ステップ５０８に移行する。ステップ５０３で要求が存在しない場合には、『ＳＥＴ_ＫＥＹ』コマンドの有無が判断される(ステップ５０５)。コマンドが存在する場合には、『ＳＥＴ_ＫＥＹ』コマンドの処理が実行され(ステップ５０６)、コマンドカウンタ５６を０にして(ステップ５０７)、ステップ５０８に移行する。
【００６１】
ステップ５０５でコマンドが存在しない場合には、図３に示すコマンドカウンタ５６が特定の値、例えば「１０」より大きいか否かが判断される(ステップ５０８)。この特定の値を超える場合には、中央処理装置５１を停止する(ステップ５０９)。この特定の値を超えない場合には、コマンドカウンタ５６をインクリメント(＋１)し(ステップ５１０)、ステップ５０３に戻る。
【００６２】
図中の▲２▼からの処理、即ち、後述するタイムアウトエラーや復号結果が正しくない場合には、認証失敗カウンタ５５をインクリメント(＋１)する(ステップ５１１)。そして、認証失敗カウンタ５５が特定の値、例えば３より大きいか否かが判断される(ステップ５１２)。特定の値を超える場合には、誤りがあるものとして中央処理装置５１を停止する(ステップ５０９)。認証失敗カウンタ５５が特定の値を超えない場合には、ステップ５０３からの処理が実行される。
【００６３】
図１２は、図１１のステップ５０４における『ＳＥＴ_ＰＥＲＳＯＮＡＬＩＺＥ』コマンドの処理を詳述したフローチャートである。ＨＤＤ側５０の中央処理装置５１は、まず、データ送受信制御装置５２からＲＮＤxを受け取り(ステップ６０１)、乱数発生器５４から６４ビット乱数ＲＮＤｙを取り出す(ステップ６０２)。そして、不揮発性メモリ(ディスクメディア２１)のハードディスク用秘密鍵領域からＰkhを取り出す(ステップ６０３)。その後、ＲＮＤyとＲＮＤx＋１を結合した１２８ビットデータをＰkhで暗号化する(ステップ６０４)。暗号化したデータをデータ送受信制御装置５２からシステム側３０に対して送信する(ステップ６０５)。その後、データ送受信制御装置５２によって受信される１２８ビット通信データを待つ(ステップ６０６)。この通信データを待つに際し、タイムアウトエラーが生じたか否かが判断され(ステップ６０７)、タイムアウトの場合には、上述した▲２▼の認証失敗処理に移行する。タイムアウトエラーが生じる前に１２８ビット通信データを受信した場合には、受信した１２８ビット通信データをＤ１とする(ステップ６０８)。
【００６４】
次に、中央処理装置５１は、不揮発性メモリ(ディスクメディア２１)のシステム用秘密鍵領域からＰksを取り出す(ステップ６０９)。そして、このＰksで受信データＤ１を復号する(ステップ６１０)。ここで、復号データの後半６４ビットデータがＲＮＤy＋１か否かが判断され(ステップ６１１)、ＲＮＤy＋１ではない場合、即ち、この結果が正しくない場合には、上述した▲２▼の認証失敗処理に移行する。正しい場合には、復号データの前半６４ビットデータをnewＰksとする(ステップ６１２)。
【００６５】
次に、乱数発生器５４から６４ビットデータＤ２を作成し(ステップ６１３)、このＤ２から５６ビットを取り出して新しいハードディスク用秘密鍵newＰkhとする(ステップ６１４)。次に、Ｄ２とＰkhで暗号化し(ステップ６１５)、この暗号化データをデータ送受信制御装置５２から送信する(ステップ６１６)。そして、newＰkhを不揮発性メモリ(ディスクメディア２１)のハードディスク用秘密鍵領域に格納し(ステップ６１７)、newＰksを不揮発性メモリ(ディスクメディア２１)のシステム用秘密鍵領域に格納する(ステップ６１８)。そして、認証失敗カウンタ５５を０として(ステップ６１９)、ステップ５０８へ戻る。
【００６６】
図１３は、図１１のステップ５０２における『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドの処理を詳述したフローチャートである。ＨＤＤ側５０は、まず、データ送受信制御装置５２からsＲＮＤを受け取る(ステップ７０１)。そして、乱数発生器５４から６４ビット乱数hＲＮＤを取り出し(ステップ７０２)、不揮発性メモリ(ディスクメディア２１)のハードディスク用秘密鍵領域からＰkhを取り出す(ステップ７０３)。次に、取り出した乱数hＲＮＤとsＲＮＤx＋１を結合した１２８ビットデータを取り出したＰkhで暗号化し(ステップ７０４)、暗号化データをデータ送受信制御装置５２からシステム側３０に対して送信する(ステップ７０５)。
【００６７】
次に、中央処理装置５１は、データ送受信制御装置５２からＡＴＡ ＳＥＣＵＲＩＴＹコマンドを待ち(ステップ７０６)、所定の時間までにコマンドが到達せず、タイムアウトエラーが発生したか否かを判断する(ステップ７０７)。タイムアウトの場合には、▲２▼の認証失敗処理に移行する。タイムアウトエラーが生じる前にＡＴＡ ＳＥＣＵＲＩＴＹコマンドを受信した場合には、受信したＡＴＡ ＳＥＣＵＲＩＴＹコマンドのパラメータをＤ１とする(ステップ７０８)。
【００６８】
また、中央処理装置５１は、不揮発性メモリ(ディスクメディア２１)のシステム用秘密鍵領域からＰksを取り出し(ステップ７０９)、乱数hＲＮＤをＰksで暗号化した値とＤ１の排他的論理和をＤ２とする(ステップ７１０)。ここで、不揮発性メモリ(ディスクメディア２１)に格納されたＨＤＤ用パスワードとＤ２が一致しているか否かが判断され(ステップ７１１)、一致していない場合、即ち、この結果が正しくない場合には、上述した▲２▼の認証失敗処理に移行する。正しい場合には、sＲＮＤ＋hＲＮＤの値を乱数発生器５４の初期値に設定し(ステップ７１２)、認証失敗カウンタ５５を０として(ステップ７１３)、ステップ５０３へ戻る。
【００６９】
図１４は、図１１のステップ５０６における『ＳＥＴ_ＫＥＹ』コマンドの処理を示したフローチャートである。『ＳＥＴ_ＫＥＹ』コマンド処理では、まず、中央処理装置５１は、データ送受信制御装置５２から擬似乱数列のシード値Ｉｖを受け取り(ステップ８０１)、乱数発生器５７から取得された値がＩｖと等しいか否かが判断される(ステップ８０２)。等しい場合には、ステップ５０７に戻る。等しくない場合には、中央処理装置５１を停止する(ステップ８０３)。
【００７０】
このように、本実施の形態によれば、ハードディスクドライブ(ＨＤＤ)等の外部記憶装置側からセットトップボックス１０等のシステム装置(側)を認証することにより、外部記憶装置が特定の組み合わせ以外で動作することを防ぎ、システム装置は偽外部記憶装置を認識すること(機器認証)が可能である。これによって、例えば、ＨＤＤが組み込まれたセットトップボックス１０を無料で提供する等のビジネス形態に対し、ＨＤＤだけを取り外して別の用途に使用される等の危険性を排除することができる。また、暗号技術の輸出規制を勘案し、輸出規制の対象外となるような暗号方式を提供することができる。更には、これまでのＨＤＤコマンドに対して最大限の整合性を持つ新たなコマンド体系を提供することが可能となる。
【００７１】
【発明の効果】
以上説明したように、本発明によれば、外部記憶装置が特定のシステム装置との組み合わせ以外で動作することを禁止することができる。また、システム装置では、外部記憶装置を認証することが可能となる。
【図面の簡単な説明】
【図１】  本実施の形態が適用されるコンピュータシステムの構成を説明するための図である。
【図２】  本実施の形態が適用される外部記憶装置の構成を詳述した説明図である。
【図３】  図１および図２にて説明したコンピュータシステムにおける処理ブロックの構成を説明するための図である。
【図４】  イニシャル時になされるパーソナライズ処理を説明するための図である。
【図５】  パスワードの暗号化処理を説明するための図である。
【図６】  継続的な機器認証機構を説明するための図である。
【図７】  システム側における全体処理の流れを説明するためのフローチャートである。
【図８】  図７のステップ１０４における『ＳＥＴ_ＰＥＲＳＯＮＡＬＩＺＥ』コマンドの処理を詳述したフローチャートである。
【図９】  図７のステップ１０２における『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドの処理を詳述したフローチャートである。
【図１０】  図７のステップ１０９における『ＳＥＴ_ＫＥＹ』コマンドの処理を示したフローチャートである。
【図１１】  ＨＤＤ側における全体処理の流れを説明するためのフローチャートである。
【図１２】  図１１のステップ５０４における『ＳＥＴ_ＰＥＲＳＯＮＡＬＩＺＥ』コマンドの処理を詳述したフローチャートである。
【図１３】  図１１のステップ５０２における『ＯＰＥＮ_ＳＥＳＳＩＯＮ』コマンドの処理を詳述したフローチャートである。
【図１４】  図１１のステップ５０６における『ＳＥＴ_ＫＥＹ』コマンドの処理を示したフローチャートである。
【符号の説明】
７…スマートカード、８…ケーブルモデム、９…ディスプレイ(ＴＶ)、１０…セットトップボックス、１１…スマートカードリーダ、１２…ディスプレイＩ/Ｆ、１３…イーサネットＩ/Ｆ、１４…ＲＡＭ、１５…ＭＰＵ、１６…ＲＯＭ、２０…セキュア(Secure)ＨＤＤ(ハードディスクドライブ)、２１…ディスクメディア、２２…メディアコントローラ、２３…ＭＰＵ、２４…ＲＯＭ、２５…ＲＡＭ、２６…ＡＴＡ Ｉ/Ｆ、３０…システム側、３１…中央処理装置、３２…データ送受信制御装置、３３…セキュリティ制御機構、３４…不揮発性メモリ、３５…乱数発生器、３６…認証失敗カウンタ、３７…コマンドカウンタ、３８…乱数発生器、４０…データバス、５０…ＨＤＤ側、５１…中央処理装置、５２…データ送受信制御装置、５３…セキュリティ制御機構、５４…乱数発生器、５５…認証失敗カウンタ、５６…コマンドカウンタ、５７…乱数発生器
【図１】
0003824297.tif 000002
【図２】
0003824297.tif 000003
【図３】
0003824297.tif 000004
【図４】
0003824297.tif 000005
【図５】
0003824297.tif 000006
【図６】
0003824297.tif 000007
【図７】
0003824297.tif 000008
【図８】
0003824297.tif 000009
【図９】
0003824297.tif 000010
【図１０】
0003824297.tif 000011
【図１１】
0003824297.tif 000012
【図１２】
0003824297.tif 000013
【図１３】
0003824297.tif 000014
【図１４】
0003824297.tif 000015