(57)【要約】【課題】  本発明は、より安全に暗号鍵を共有可能な暗号通信システムを提供することを目的とする。【解決手段】  第1装置は、第2装置の公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを前記第2装置へ送信し、前記第2装置から、第2暗号化鍵データを受信し、第1装置の秘密鍵を用いて前記第2暗号化鍵データを復号して第２鍵を取得し、前記第1鍵と第２鍵とに基づいて、第1暗号鍵を生成する。前記第2装置は、前記第１装置の公開鍵を用いて第３鍵を暗号化して前記第２暗号化鍵データを生成し、生成した第２暗号化鍵データを前記第１装置へ送信し、前記第１装置から前記第1暗号化鍵データを受信し、当該第2装置の秘密鍵を用いて前記第1暗号化鍵データを復号して第4鍵を取得し、前記第３鍵と第4鍵とに基づいて、第2暗号鍵を生成する。【選択図】  図２
2007529162.tif 000002
【特許請求の範囲】
【請求項１】
第1及び第2装置間で共有した鍵を用いて暗号通信を行う暗号通信システムであって、
前記第１装置は、
前記第2装置の公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを前記第2装置へ送信し、
前記第2装置から、第2暗号化鍵データを受信し、第1装置の秘密鍵を用いて前記第2暗号化鍵データを復号して第２鍵を取得し、
前記第1鍵と第２鍵とに基づいて、前記第2装置との間での通信に用いる第1暗号鍵を生成し、
前記第2装置は、
前記第１装置の公開鍵を用いて第３鍵を暗号化して前記第２暗号化鍵データを生成し、生成した第２暗号化鍵データを前記第１装置へ送信し、
前記第１装置から前記第1暗号化鍵データを受信し、当該第2装置の秘密鍵を用いて前記第1暗号化鍵データを復号して第4鍵を取得し、
前記第３鍵と第4鍵とに基づいて、前記第1装置との間での通信に用いる第2暗号鍵を生成する
ことを特徴とする暗号通信システム。
【請求項２】
通信相手の装置と共有した鍵を用いて暗号通信を行う通信装置であって、
相手装置が保持する第２秘密鍵に対応する第２公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを相手装置へ送信する暗号化鍵データ生成手段と、
相手装置によって、当該通信装置の第1公開鍵を用いて第2鍵を暗号化して生成された第2暗号化鍵データを、相手装置から受信し、通信装置の第1秘密鍵を用いて前記第2暗号化鍵データを復号して第３鍵を取得する暗号化鍵データ復号手段と、
前記第1鍵と第３鍵とに基づいて、暗号鍵を生成する暗号鍵生成手段と、
前記相手装置との間で、前記暗号鍵を用いて暗号通信を行う通信手段と
を備えることを特徴とする通信装置。
【請求項３】
前記暗号鍵生成手段は、更に、
前記第1鍵と第3鍵とに基づいて、ハッシュ鍵を生成し、
前記通信手段は、
前記ハッシュ鍵を用いて、前記相手装置へ送信する送信データに対するハッシュ値を算出するハッシュ値算出部と、
前記暗号鍵を用いて、前記送信データを暗号化して暗号化データを生成する暗号化部と、
前記ハッシュ値及び前記暗号化データを送信する送信部とを備える
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記暗号鍵生成手段は、
前記第1鍵と第3鍵とを連結して連結データを生成し、生成した連結データに対するハッシュ値を算出し、算出したハッシュ値に基づいて、前記暗号鍵とハッシュ鍵とを生成する
ことを特徴とする請求項３に記載の通信装置。
【請求項５】
前記暗号鍵生成手段は、
前記第1鍵と第3鍵とを用いて排他的論理和演算を行い、演算結果に基づいて、前記暗号鍵とハッシュ鍵とを生成する
ことを特徴とする請求項３に記載の通信装置。
【請求項６】
前記暗号鍵生成手段は、更に、
前記第1鍵と第3鍵とに基づいて、ハッシュ鍵を生成し、
前記通信手段は、
前記相手装置が保持する暗号鍵を用いデータを暗号化した暗号化データと、前記データに対して、前記相手装置が保持するハッシュ鍵を用いて算出された第1ハッシュ値とを、前記相手装置から受信する受信部と、
受信した暗号化データを前記暗号鍵を用いて復号し、平文の受信データを生成する復号部と、
前記ハッシュ鍵を用いて、前記受信データに対する第2ハッシュ値を算出し、算出した第2ハッシュ値と前記第1ハッシュ値とが一致するか否かを判断する判断手段とを備え、
前記通信装置は、更に、
前記判断手段が一致すると判断する場合に、前記受信データを利用し、一致しないと判断する場合に、前記受信データの利用を抑制する利用手段を備える
ことを特徴とする請求項２に記載の通信装置。
【請求項７】
前記通信装置は、更に、
前記暗号鍵を用いて、前記相手装置と認証を行う認証手段
を備えることを特徴とする請求項２に記載の通信装置。
【請求項８】
前記認証手段は、第1認証値を生成し、前記暗号鍵を用いて前記第1認証値を暗号化して暗号化第1認証値を生成し、生成した暗号化第1認証値を前記相手装置へ送信し、
前記相手装置から、前記相手装置が保持する暗号鍵を用いて前記暗号化第1認証値を復号して生成した第2認証値を受信し、受信した第2認証値と前記第1認証地とが一致するか否かを判断し、
前記通信装置は、更に、
前記判断結果が、一致することを示す場合に、前記相手装置との間で通信を行う通信手段を備える
ことを特徴とする請求項７に記載の通信装置。
【請求項９】
前記認証手段は、
前記相手装置から、前記相手装置が保持する暗号鍵を用いて、第3認証値を暗号化して生成した暗号化第3認証値を受信し、受信した暗号化第3認証値を、前記暗号鍵を用いて復号して第4認証値を生成し、生成した第4認証値を前記相手装置へ送信し、
前記通信手段は、
前記第4認証値と前記第3認証値とを比較して一致すると前記相手装置が判断した場合に、通信を行う
ことを特徴とする請求項８に記載の通信装置。
【請求項１０】
前記暗号化鍵データ生成手段は、鍵カプセル化メカニズムに基づいて、前記第1鍵を暗号化して前記第1暗号化鍵データを生成し、
前記暗号化鍵データ復号手段は、鍵復号メカニズムに基づいて、前記第2暗号化鍵データを復号し、前記第３鍵を取得する
ことを特徴とする請求項２に記載の通信装置。
【請求項１１】
通信相手の装置と共有した鍵を用いて暗号通信を行う通信装置で用いられる方法であって、
暗号化鍵データ生成手段が、相手装置が保持する第２秘密鍵に対応する第２公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを相手装置へ送信する暗号化鍵データ生成ステップと、
暗号化鍵データ復号手段が、相手装置によって、当該通信装置の第1公開鍵を用いて第2鍵を暗号化して生成された第2暗号化鍵データを、相手装置から受信し、通信装置の第1秘密鍵を用いて前記第2暗号化鍵データを復号して第３鍵を取得する暗号化鍵データ復号ステップと、
暗号鍵生成手段が、前記第1鍵と第３鍵とに基づいて、暗号鍵を生成する暗号鍵生成ステップと、
通信手段が、前記相手装置との間で、前記暗号鍵を用いて暗号通信を行う通信ステップと
を含むことを特徴とする方法。
【請求項１２】
通信相手の装置と共有した鍵を用いて暗号通信を行う通信装置で用いられるプログラムであって、
暗号化鍵データ生成手段が、相手装置が保持する第２秘密鍵に対応する第２公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを相手装置へ送信する暗号化鍵データ生成ステップと、
暗号化鍵データ復号手段が、相手装置によって、当該通信装置の第1公開鍵を用いて第2鍵を暗号化して生成された第2暗号化鍵データを、相手装置から受信し、通信装置の第1秘密鍵を用いて前記第2暗号化鍵データを復号して第３鍵を取得する暗号化鍵データ復号ステップと、
暗号鍵生成手段が、前記第1鍵と第３鍵とに基づいて、暗号鍵を生成する暗号鍵生成ステップと、
通信手段が、前記相手装置との間で、前記暗号鍵を用いて暗号通信を行う通信ステップと
を含むことを特徴とするプログラム。
【請求項１３】
通信相手の装置と共有した鍵を用いて暗号通信を行う通信装置で用いられるプログラムを記録した、コンピュータ読み取り可能な記録媒体であって、
前記プログラムは、
暗号化鍵データ生成手段が、相手装置が保持する第２秘密鍵に対応する第２公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを相手装置へ送信する暗号化鍵データ生成ステップと、
暗号化鍵データ復号手段が、相手装置によって、当該通信装置の第1公開鍵を用いて第2鍵を暗号化して生成された第2暗号化鍵データを、相手装置から受信し、通信装置の第1秘密鍵を用いて前記第2暗号化鍵データを復号して第３鍵を取得する暗号化鍵データ復号ステップと、
暗号鍵生成手段が、前記第1鍵と第３鍵とに基づいて、暗号鍵を生成する暗号鍵生成ステップと、
通信手段が、前記相手装置との間で、前記暗号鍵を用いて暗号通信を行う通信ステップと
を含む
ことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置間で鍵を共有して暗号通信を行う暗号通信技術に関する。
【背景技術】
【０００２】
近年、家庭用電化製品、携帯電話機などの間でネットワークを介した通信を行う機会が増している。このような装置間では、著作物の保護や、通信内容の漏洩を防ぐため、機器認証及び鍵共有を行った後に、共有した鍵を用いて暗号通信を行う。
認証鍵共有方式の一つとして、AV機器同士をIEEE1394のバスで接続した場合に使用される、DTCP（Digital Transmission Content Protection）と呼ばれる規格で規定されている方式がある。DTCPでは、認証方式に楕円DSA署名を用いたチャレンジ・レスポンス認証を使用し、鍵共有方式に楕円DH鍵共有を使用する。なお、DTCPについては非特許文献１に、チャレンジ・レスポンス認証、楕円DSA署名及び楕円DH鍵共有については、非特許文献２に開示されている。
【非特許文献１】DTCP  SpecificationのWhite paper  ＜URL：http://www.dtcp.com/spec.html＞
【非特許文献２】岡本龍明、山本博資、“現代暗号”、産業図書（1997年）
【非特許文献３】Victor Shoup, "A proposal for an ISO standard for public key encryption (version 2.1)"、［online］、2001年12月20日、［2002年9月29日検索］、＜URL：http://shoup.net/papers/iso-2_1.pdf＞
【非特許文献４】Tatsuaki Okamoto，“Generic conversions for constructing IND-CCA2 public-key encryption in the random oracle model”、［online］、The 5th Workshop on Elliptic Curve Cryptography（ECC 2001）、2001年10月30日、＜URL：http://www.cacr.math.uwaterloo.ca/conferences/2001/ecc/okamoto.ppt＞［2002年9月29日検索］
【非特許文献５】Neal Koblitz，“Algebraic Aspects of Cryptography”，Algorithms and Computation in mathematics Vol.3， pp.132−133，Springer-Verlag，1998．
【非特許文献６】M. Bellare and P. Rogaway，“Minimizing the use of random oraclesion authenticated encryption schemes.”In Proceedings of PKS’97，1997
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、DTCPの認証鍵共有方式は、安全性の証明がなされておらず、安全性に不安がある。ここで安全性の証明とは、公開鍵暗号において、数学的な問題が求解困難であることを根拠にして、秘密鍵を持たないユーザが暗号文を解読することが出来ないことを証明するのもであり、公開鍵暗号の安全性の保証となる。（例えば非特許文献６）
そこで本発明はかかる問題点に鑑みてなされたものであり、より安全に暗号鍵を共有可能な暗号通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記目的を達成するために本発明は、第1及び第2装置間で共有した鍵を用いて暗号通信を行う暗号通信システムであって、前記第１装置は、前記第2装置の公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを前記第2装置へ送信し、前記第2装置から、第2暗号化鍵データを受信し、第1装置の秘密鍵を用いて前記第2暗号化鍵データを復号して第２鍵を取得し、前記第1鍵と第２鍵とに基づいて、前記第2装置との間での通信に用いる第1暗号鍵を生成し、前記第2装置は、前記第１装置の公開鍵を用いて第３鍵を暗号化して前記第２暗号化鍵データを生成し、生成した第２暗号化鍵データを前記第１装置へ送信し、前記第１装置から前記第1暗号化鍵データを受信し、当該第2装置の秘密鍵を用いて前記第1暗号化鍵データを復号して第4鍵を取得し、前記第３鍵と第4鍵とに基づいて、前記第1装置との間での通信に用いる第2暗号鍵を生成する。
【発明の効果】
【０００５】
この構成によると、共有した２個の鍵から新たに暗号共有鍵を生成しているので、共有した何れかの鍵が不正利用者によって暴露されたとしても、データの暗号通信に用いる暗号共有鍵は守られているので、通信するデータを保護することが出来る。
また、正しく暗号化鍵を復号して２個の共有鍵を得ることが可能か否かによって、相手機器が正当な機器であるか否かを認証することが出来る。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
１．  暗号通信システム１の構成
暗号通信システム１は、図１に示すように、装置A１００及び装置B２００から構成される。装置A１００及び装置B２００は、映像、音声などからなるコンテンツを再生する装置である。
【０００７】
暗号通信システム１は、装置間で認証及び鍵共有を行い、共有した鍵を用いて、暗号通信を行うシステムである。本実施の形態では、共有した鍵を用いてコンテンツデータを送受信する場合を一例として説明する。
１．１  装置A１００の構成
装置A１００は、図２に示すように、送受信部１０２、コンテンツデータ格納部１０３、共有鍵格納部１０９、認証部１１２、制御部１１５、入力部１１６、再生部１１７、インターフェース１１８、鍵共有処理部１２０及びコンテンツデータ処理部１３０から構成される。
【０００８】
装置A１００は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニットなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、装置A１００は、その機能を達成する。
【０００９】
装置A１００は、インターフェース１１８にモニタやスピーカなど外部の機器を接続可能であり、コンテンツデータを再生する際には、インターフェース１１８を介して映像信号や音声信号が出力される。
以下、各構成について説明する。
（１）鍵共有処理部１２０
鍵共有処理部１２０は、図３に示すように、検証データ格納部１０１、証明書検証部１０４、秘密鍵格納部１０５、鍵生成部１０６、鍵復号部１０７及び共有鍵生成部１０８から構成される。
【００１０】
鍵共有処理部１２０は、装置A１００から装置B２００へ鍵KAを配送し、装置B２００から装置A１００へ鍵KBを配送し、鍵KA及び鍵KBを共有する。共有した鍵KA及び鍵KBとから、暗号通信に用いる暗号用共有鍵KSと、通信するデータの改竄検出に用いられるハッシュ用共有鍵KHを生成する。
（ａ）検証データ格納部１０１
検証データ格納部１０１は、装置A１００の公開鍵証明書Cert_A及びCA（Certification Authority）の公開鍵KPCを格納している。
【００１１】
公開鍵証明書Cert_Aは、公開鍵KPAと署名SKPAとを含む。
公開鍵KPAは、装置A１００に対してCAにより発行された公開鍵である。また、署名SKPAは、公開鍵KPAが正当な公開鍵であることを証明するものであり、CAにより発行される。署名SKPAは、公開鍵KPCと対応するCAの秘密鍵KSCを用いて、公開鍵KPAに対して署名生成アルゴリズムS１を施して生成される。
【００１２】
ここでCAとは、信頼できる第三者機関であり、暗号通信システム１に属する装置の公開鍵の正当性を証明する公開鍵証明書を発行する機関である。なお、署名アルゴリズムS１は、例えば、RSA署名、楕円DSA署名などである。これらの署名アルゴリズムについては、非特許文献２が詳しい。
（ｂ）秘密鍵格納部１０５
秘密鍵格納部１０５は、秘密鍵KSAを格納している。秘密鍵KSAは、上記公開鍵KPAに対応する鍵であり、認証局によって予め生成される。
【００１３】
（ｃ）証明書検証部１０４
証明書検証部１０４は、通信相手の装置から受信する公開鍵証明書が、CAにより発行された正当な公開鍵証明書であるか否かを検証する。
証明書検証部１０４は、制御部１１５の制御の下、装置B２００の公開鍵証明書Cert_Bを受け取ると、公開鍵証明書Cert_Bに含まれる署名SKPB及び公開鍵KPBを取り出す。また、検証データ格納部１０１から公開鍵KPCを読み出し、公開鍵KPC及び公開鍵KPBを用いて署名SKPBに署名検証アルゴリズムV1を施して署名検証する。検証結果が成功の場合、証明書検証部１０４は、証明書に含まれる公開鍵KPBを鍵生成部１０６へ出力する。また、検証結果が失敗の場合、以降の処理を終了する。
【００１４】
（ｄ）鍵生成部１０６
鍵生成部１０６は、証明書検証部１０４から装置B２００の公開鍵KPBを受け取り、鍵カプセル化メカニズムに基づいて、鍵KA及び鍵情報KEMAを生成する。
ここで、鍵カプセル化メカニズムは、公開鍵暗号を用いて送信側の装置から受信側の装置へ共有鍵を配送するアルゴリズムである。送信装置は、公開鍵暗号化アルゴリズムEに受信装置の公開鍵ｐｋを入力して暗号文Cと共有鍵Kとを生成し、暗号文Cを受信側の装置に伝送する。そして、受信装置が公開鍵復号アルゴリズムDに受信装置の秘密鍵ｓｋと暗号文Cとを入力して送信装置と同じ共有鍵Kを求める。
【００１５】
その後、通信されるデータは、共有鍵Kを用いて共通鍵暗号で暗号化される。
このように、送信装置から受信装置に一方的に情報の送信が行われていながら、送信側が作為的に共有鍵を作成できず、送信側による不正が抑制されている点が従来の鍵配送方式に無い特徴である。
鍵生成部１０６は、装置B２００の公開鍵KPBを入力として、鍵カプセル化メカニズムにおける共有鍵Kに相当する鍵KAと、暗号文Cに相当する鍵情報KEMAとを生成する。生成した鍵KAを共有鍵生成部１０８へ出力し、鍵情報KEMAを制御部１１５へ出力する。
【００１６】
なお、鍵カプセル化メカニズムについては、非特許文献３に詳しく開示されている。
（ｅ）鍵復号部１０７
鍵復号部１０７は、制御部１１５の制御の下、装置B２００から受信する鍵情報KEMBを受け取る。鍵情報KEMBは、鍵カプセル化メカニズムにおける暗号文Cに相当する。
鍵復号部１０７は、秘密鍵格納部１０５から秘密鍵KSAを読み出す。秘密鍵KSAは、鍵カプセル化メカニズムにおける受信装置の秘密鍵に相当する。鍵復号部１０７は、鍵情報KEMBと、読み出した秘密鍵KSAとを入力として、鍵情報KEMBを復号し、鍵KB’を生成する。生成した鍵KB’を、共有鍵生成部１０８へ出力する。
【００１７】
（ｆ）共有鍵生成部１０８
共有鍵生成部１０８は、制御部１１５の制御の下、鍵生成部１０６から鍵KAを受け取り、鍵復号部１０７から鍵KB’を受け取る。受け取った鍵KA及びKB’をこの順で連結して鍵データKA||KB’を生成する。鍵データKA||KB’に対して、ハッシュ関数を施し、ハッシュ値Hを生成する。生成したハッシュ値Hを分割し、上位を暗号用共有鍵KSａとし、残りの部分をハッシュ用共有鍵KHａとする。
【００１８】
共有鍵生成部１０８は、生成した暗号用共有鍵KSａ及びハッシュ用共有鍵KHａを共有鍵格納部１０９に格納する。
（２）共有鍵格納部１０９
共有鍵格納部１０９は、共有鍵生成部１０８によって生成された暗号用共有鍵KSａ及びハッシュ用共有鍵KHａを格納する。
（３）認証部１１２
認証部１１２は、共有鍵格納部１０９に格納されている暗号用共有鍵KSａを用いて、通信相手の装置と相互認証を行う。ここでは一例としてチャレンジ・レスポンス認証を行う。
【００１９】
なお、具体的な処理については後述する。
（４）コンテンツデータ処理部１３０
コンテンツデータ処理部１３０は、図４に示すように、暗号化部１１０、復号部１１１、ハッシュ値算出部１１３及び改竄検出部１１４から構成され、コンテンツデータ送受信に係る処理を行う。
【００２０】
（ａ）暗号化部１１０
暗号化部１１０は、制御部１１５の制御の下、暗号用共有鍵KSａを共有鍵格納部１０９から読み出し、検証データ格納部１０１からコンテンツデータDAを読み出す。暗号用共有鍵KSａを用いて読み出したコンテンツデータDAに暗号化アルゴリズムE1を施して暗号化し、暗号化データCDA＝Enc(KSａ，DA)を生成する。ここで、Enc(KSａ，DA)は、暗号用共有鍵KSａを用いてコンテンツデータDAを共通鍵暗号で暗号化した暗号文である。
【００２１】
ここで、暗号化アルゴリズムE1は一例としてAESである。AESについては公知であるので説明を省略する。
暗号化部１１０は、生成した暗号化データCDAを制御部１１５へ出力する。
（ｂ）ハッシュ値算出部１１３
ハッシュ値算出部１１３は、制御部１１５の制御の下、共有鍵格納部１０９からハッシュ用共有鍵KHａを読み出し、コンテンツデータ格納部１０３からコンテンツデータDAを読み出す。ハッシュ用共有鍵KHａを用いてコンテンツデータDAに対するハッシュ値HDA＝Hash(KHａ，DA)を算出する。ここで、Hash(KHａ，DA)は、ハッシュ用共有鍵KHａを用いて、鍵付ハッシュ関数で計算した、コンテンツデータDAのハッシュ値を意味する。なお、Hash(KHａ，DA)は、Hash(KHａ，DA)＝SHA1(KHａ||DA)としても良い。ここで、SHA1(ｘ)は、ｘのSHA1ハッシュ関数値であり、||は連結を示す。
【００２２】
ハッシュ値算出部１１３は、算出したハッシュ値HDAを制御部１１５へ出力する。
（ｃ）復号部１１１
復号部１１１は、制御部１１５の制御の下、暗号化データCDB＝Enc(KSｂ，DB)を受け取り、共有鍵格納部１０９から暗号用共有鍵KSａを読み出す。読み出した暗号用共有鍵KSａを用いて、暗号化データCDBに対して復号アルゴリズムD1を施して復号し、平文のコンテンツデータDB’を生成する。なお、復号アルゴリズムD1は、暗号化アルゴリズムE1の逆の処理を行うアルゴリズムである。
【００２３】
ここで、上述の共有鍵生成部１０８にて正しく共有鍵が生成された場合、共有鍵格納部１０９に格納されている暗号用共有鍵KSａと、装置B２００が保持する暗号用共有鍵KSｂとは同一である。つまり、装置B２００が暗号用共有鍵KSｂを用いて生成した暗号化データCDBから、装置A１００が保持する暗号用共有鍵KSａを用いて、元のコンテンツデータDBと同一のコンテンツデータDB’を取り出すことが可能となる。
【００２４】
復号部１１１は、生成したコンテンツデータDB’を改竄検出部１１４へ出力する。
（ｄ）改竄検出部１１４
改竄検出部１１４は、復号部１１１で復号したコンテンツデータDB’が改竄されているか否かを判断する。
改竄検出部１１４は、制御部１１５の制御の下、ハッシュ値HDBを受け取り、復号部１１１からコンテンツデータDB’を受け取ると、共有鍵格納部１０９からハッシュ用共有鍵KHａを読み出す。読み出したハッシュ用共有鍵KHａを用い、コンテンツデータDB’に対するハッシュ値HDB’＝Hash(KHａ，DB’)
を算出する。また、算出したハッシュ値HDB’と受け取ったハッシュ値HDBとを比較する。ハッシュ値HDBとHDB’とが一致する場合は、改竄されていないと判断し、コンテンツデータDB’をコンテンツデータ格納部１０３へ格納する。一致しない場合は、改竄されていると判断し、コンテンツデータDB’を格納しない。
（５）コンテンツデータ格納部１０３
コンテンツデータ格納部１０３は、コンテンツデータDAを格納している。
【００２５】
また、コンテンツデータ処理部１３０により書き込まれるコンテンツデータDB’を保持する。
ここで、コンテンツデータDA及びDB’は、例えば映画や音楽などのデジタルデータである。
（６）制御部１１５、入力部１１６、送受信部１０２
入力部１１６は、ユーザの操作による指示情報を受け付け、制御部１１５へ出力する。
【００２６】
送受信部１０２は、装置B２００と制御部１１５との間でデータの送受信を行う。
制御部１１５は、入力部１１６が受け付けるユーザからの指示情報に基づいて、鍵の共有、相互認証、コンテンツデータの送受信及び再生の処理を行う。
制御部１１５は、鍵の共有を示す指示情報を受け取ると、暗号用共有鍵KSａ及びハッシュ用共有鍵KHａを生成するように、鍵共有処理部１２０を制御する。  また、制御部１１５は、鍵生成部１０６から鍵情報KEMAを受け取ると、送受信部１０２をを介して装置B２００へ送信する。送受信部１０２を介して鍵情報KEMBを受信すると、鍵復号部１０７へ出力する。
【００２７】
制御部１１５は、相互認証を示す指示情報を受け取ると、認証部１１２に相互認証を行わせる。
制御部１１５は、コンテンツデータの送受信を示す指示情報を受け取ると、コンテンツデータ処理部１３０を制御して、コンテンツデータの送受信を行う。制御部１１５は、コンテンツデータDAの送信の際、暗号化部１１０から暗号化データCDAを受け取り、ハッシュ値算出部１１３からハッシュ値HDAを受け取ると、暗号化データCDA及びハッシュ値HDAを、送受信部１０２を介して装置B２００へ送信する。また、装置B２００から送受信部１０２を介して暗号化データCDB及びハッシュ値HDBを受信すると、暗号化データCDBを復号部１１１へ出力し、ハッシュ値HDBを改竄検出部１１４へ出力する。
【００２８】
また、制御部１１５は、コンテンツデータDA又はDB’の再生を示す指示情報を受け取ると、指示されたコンテンツデータを再生部１１７へ出力し、再生するよう再生部１１７を制御する。
（７）再生部１１７、インターフェース１１８
インターフェース１１８は、外部の機器が接続される。例えば、TV、モニタ、スピーカなどが接続される。
【００２９】
再生部１１７は、制御部１１５の制御の下、コンテンツデータから映像信号や音声信号などを生成し、インターフェース１１８を介して外部の装置へ出力する。
１．２  装置B２００の構成
装置B２００は、図５に示すように、送受信部２０２、コンテンツデータ格納部２０３、共有鍵格納部２０９、認証部２１２、制御部２１５、入力部２１６、再生部２１７、モニタ２１８、スピーカ１１９、鍵共有処理部２２０及びコンテンツデータ処理部２３０から構成される。
【００３０】
装置B２００は、装置A１００と同様に、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニットなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、装置B２００は、その機能を達成する。
【００３１】
以下、各構成について説明する。
（１）鍵共有処理部２２０
鍵共有処理部２２０は、図５に示すように、検証データ格納部２０１、証明書検証部２０４、秘密鍵格納部２０５、鍵生成部２０６、鍵復号部２０７及び共有鍵生成部２０８から構成される。
【００３２】
（ａ）検証データ格納部２０１
検証データ格納部２０１は、装置B２００の公開鍵証明書Cert_B及びCAの公開鍵KPCを格納している。
公開鍵証明書Cert_Bは、装置B２００の公開鍵KPBと署名SKPBとを含む。署名SKPBは、公開鍵KPBが正当な公開鍵であることを証明するものであり、CAの秘密鍵KSCを用い、公開鍵KPBに対して署名生成アルゴリズムS１を施して生成した署名データである。
【００３３】
（ｂ）秘密鍵格納部２０５
秘密鍵格納部２０５は、公開鍵KPBに対応する秘密鍵KSBを格納している。
（ｃ）証明書検証部２０４
証明書検証部２０４は、制御部２１５の制御の下、装置A１００の公開鍵証明書Cert_Aを受け取り、証明書Cert_Aに含まれる署名SKPA及び公開鍵KPAを取り出す。また、検証データ格納部２０１から公開鍵KPCを読み出す。読み出した公開鍵KPC及び公開鍵KPAを用いて署名SKPAに署名検証アルゴリズムV1を施して署名検証する。検証結果が成功の場合、鍵生成部２０６へ公開鍵KPAを出力する。検証結果が失敗の場合、以降の処理を終了する。
【００３４】
（ｄ）鍵生成部２０６
鍵生成部２０６は、鍵カプセル化メカニズムを利用して、鍵KB及び鍵情報KEMBを生成する。生成した鍵KBを共有鍵生成部２０８へ出力し、鍵情報KEMBを制御部２１５へ出力する。
（ｅ）鍵復号部２０７
鍵復号部２０７は、制御部２１５の制御の下、装置A１００から鍵情報KEMAを受け取り、秘密鍵格納部２０５から秘密鍵KSBを読み出す。鍵情報KEMA及び秘密鍵KSBを入力として、鍵情報KEMBを復号して鍵KA’を生成する。生成した鍵KA’を共有鍵生成部２０８へ出力する。
【００３５】
（ｆ）共有鍵生成部２０８
共有鍵生成部２０８は、鍵生成部２０６から鍵KBを受け取り、鍵復号部２０７から鍵KA’を受け取る。上述の共有鍵生成部１０８と同様に、鍵KA’及び鍵KBに基づいて暗号用共有鍵KSｂ及びハッシュ用共有鍵KHｂを生成する。生成した共有鍵は、共有鍵格納部２０９へ格納する。
（２）共有鍵格納部２０９
共有鍵格納部２０９は、鍵共有処理部２２０によって生成された暗号用共有鍵KSｂ及びハッシュ用共有鍵KHｂとを格納する。
（３）認証部２１２
認証部２１２は、共有鍵格納部２０９に格納されている暗号用共有鍵KSｂを用いて、認証部１１２との間で相互認証を行う。
（４）コンテンツデータ処理部２３０
コンテンツデータ処理部２３０は、図６に示すように、暗号化部２１０、復号部２１１、ハッシュ値算出部２１３及び改竄検出部２１４から構成される。
【００３６】
（ａ）暗号化部２１０
暗号化部２１０は、制御部２１５の制御の下、コンテンツデータ格納部２０３からコンテンツデータDBを読み出し、共有鍵格納部２０９から暗号用共有鍵KSｂを読み出す。読み出した暗号用共有鍵KSｂを用いてコンテンツデータDBに暗号化アルゴリズムE1を施して暗号化し、暗号化データCDB＝Enc(KSｂ，DB)を生成する。生成した暗号化データCDBを制御部２１５へ出力する。
【００３７】
（ｂ）ハッシュ値算出部２１３
ハッシュ値算出部２１３は、制御部２１５の制御の下、共有鍵格納部２０９からハッシュ用共有鍵KHｂを読み出し、コンテンツデータ格納部１０３からコンテンツデータDＢを読み出す。ハッシュ用共有鍵KHｂを用いてコンテンツデータDＢに対するハッシュ値HDＢ＝Hash(KHｂ，DB)を算出し、算出したハッシュ値HDＢを制御部１１５へ出力する。
【００３８】
（ｃ）復号部２１１
復号部２１１は、制御部２１５の制御の下、暗号化データCDA＝Enc(KSａ，DＡ)を受け取ると、共有鍵格納部２０９から暗号用共有鍵KSｂを読み出し、暗号用共有鍵KSｂを用いて暗号化データCDAを復号し、平文のコンテンツデータDA’を生成する。
生成したコンテンツデータDA’を改竄検出部２１４へ出力する。
【００３９】
（ｄ）改竄検出部２１４
改竄検出部２１４は、制御部２１５の制御の下、ハッシュ値HDＡを受け取り、復号部２１１からコンテンツデータDA’を受け取る。また、共有鍵格納部２０９からハッシュ用共有鍵KHｂを読み出す。読み出したハッシュ用共有鍵KHｂを用いて、コンテンツデータDA’に対するハッシュ値HDA’＝Hash(KHｂ，DA’)を算出する。
【００４０】
算出したハッシュ値HDA’と受け取ったハッシュ値HDＡとを比較し、一致する場合、コンテンツデータDA’をコンテンツデータ格納部２０３へ格納し、一致しない場合、格納しない。
（５）コンテンツデータ格納部２０３
コンテンツデータ格納部２０３は、コンテンツデータDBを格納している。
【００４１】
また、コンテンツデータ処理部２３０から書き込まれるコンテンツデータDA’を保持する。
（６）制御部２１５、入力部２１６、送受信部２０２
入力部２１６は、外部からの入力による指示情報を受け付けて制御部２１５へ出力し、送受信部２０２は、装置A１００と制御部２１５との間でデータの送受信を行う。
【００４２】
制御部２１５は、制御部１１５と同様に、入力部１１６が受け付けるユーザからの指示情報に基づいて、鍵の共有、相互認証、コンテンツデータの送受信及び再生の処理を行う。
（７）再生部２１７、モニタ２１８、スピーカ２１９
再生部２１７は、制御部２１５の制御の下、コンテンツデータから映像信号や音声信号を生成し、映像信号をモニタ２１８へ、音声信号をスピーカ２１９へ出力する。２．鍵カプセル化メカニズム
鍵カプセル化メカニズムでは、送信側の装置から受信側の装置へ情報を送信し、受信側の装置では、受信した情報を基にして共有鍵を生成する。
【００４３】
ここで、鍵カプセル化メカニズムとして、PSEC−KEMについて説明する。なお、PSEC−KEMについては、非特許文献４に詳しく記載されている。
（ａ）送信装置及び受信装置は、以下に示す、PSEC−KEMのシステムパラメータを持つ。
楕円曲線：E、楕円曲線上の位数ｎの点：P
ハッシュ関数：G，H
なお、楕円曲線、位数及びハッシュ関数については、非特許文献２に詳細が記述されているので、ここでは説明を省略する。
【００４４】
（ｂ）PSEC‐KEMにおいて、受信装置の公開鍵ｐｋ及び秘密鍵ｓｋは以下のようにして生成される。
ランダムにZnの要素ｘが選ばれ、W=x＊Pを生成する。
ここで、Znは、｛０，1，・・・，ｎ−１｝からなる集合であり、ｘ＊Pは、楕円曲線上の点Pをｘ回加算することにより得られる楕円曲線上の点を表す。なお、楕円曲線上の点の加算方法については、非特許文献２に記述されている。
【００４５】
公開鍵ｐｋをW（＝ｘ＊P）とし、秘密鍵ｓｋをｘとする。
（ｃ）送信装置は、受信装置の公開鍵ｐｋを取得し、以下に述べる公開鍵暗号化アルゴリズムKemEに公開鍵ｐｋを入力して共有鍵Kと暗号文Cとを出力する。以下、公開鍵暗号化アルゴリズムKemEについて説明する。
Znの要素ｓをランダムに生成する。
【００４６】
G（ｓ）を生成し、G（ｓ）をG（ｓ）＝ａ||Ｋに分割する。ここで、||は、ビット連結を表し、G（ｓ）をG（ｓ）＝ａ||Ｋと分割するとは、G（ｓ）の上位複数ビットをａとし、残りのビットをＫとすることを表す。
Ｒ＝ａ＊Ｐ、Ｑ＝ａ＊Ｗを生成する。
ハッシュ関数Hの入力を（ａ＊Ｐ||ａ＊Ｗ）としており、ランダムに生成した要素ｓにＨ（ａ＊Ｐ||ａ＊Ｗ）の値を作用させて、
ｖ＝ｓ  XOR  H（R||Q）を生成する。ここで、XORは、排他的論理和演算を表す。
【００４７】
共有鍵Kと暗号文C＝（R，ｖ）を出力する。
送信装置は、暗号文Ｃを受信装置へ送信する。
（ｄ）受信装置は、送信装置から暗号文Ｃを受信し、以下に述べる公開鍵復号アルゴリズムKemDに暗号文C＝（R，v）と、受信装置の公開鍵ｐｋ及び秘密鍵ｓｋとを入力して共有鍵Kを出力する。以下に復号アルゴリズムKemDについて説明する。
【００４８】
Ｒ＝ａ＊Ｐから秘密鍵ｓｋ（＝ｘ）を用いて
Ｑ＝ｘ＊Ｒ＝ｘ＊（ａ＊Ｐ）＝ａ＊（ｘ＊Ｐ）＝ａ＊Ｗを求める。
ｓ’＝ｖ  XOR  H（R||Q）（＝ｖ  ＸＯＲ  Ｈ（ａ＊Ｐ||ａ＊Ｗ））
を生成する。
G（ｓ’）を生成し、G（ｓ’）をG（ｓ’）＝ａ||Ｋと分割する。
【００４９】
Ｒ＝ａ＊Ｐが成立するかどうかチェックする。成立すれば共有鍵Ｋを出力する。
（ｅ）よって、送信装置は公開鍵暗号アルゴリズムKemEにおいて、受信装置は公開鍵復号アルゴリズムKemDにおいて、ハッシュ関数Gに同じ値を入力することが出来、同じ共有鍵Kを導出することが出来る。この結果、秘密鍵を有する受信装置は、送信装置が導出したものと同じ共有鍵Kを導出できることになる。
【００５０】
（ｆ）一方で、秘密鍵ｓｋを知らない他の受信装置は、たとえ公開鍵ｐｋを取得して暗号文Cを受信したとしても、秘密鍵ｓｋ（＝ｘ）を知らないので、R＝ａ＊ＰからQ＝ａ＊Ｗ（＝（ａｘ）＊P）を計算できず、送信装置が導出したのもと同じ共有鍵Kを導出できない。なぜならば、秘密鍵ｓｋを知らない他の受信装置は、公開鍵ｐｋしか利用できないので、上記Qの計算には秘密鍵ｓｋ（＝ｘ）の代わりに公開鍵ｐｋのW=x＊Pを利用することになる。しかし、一般に、ａ＊ＰとW=x＊Pから、Ｑ＝ａ＊Ｗ（＝（ａｘ）＊Ｐ）を求めることは、楕円曲線上のDiffie−Hellman問題と呼ばれ、ａやｘの値を知らない限り計算困難である。（例えば、非特許文献５参照）
（ｇ）上記のPSEC−KEMアルゴリズムは、楕円曲線上のDiffie−Hellman問題が困難であれば、秘密鍵を知らない受信装置は共有鍵Kを得ることが出来ないことが証明されている。PSEC−KEMの他のKEMアルゴリズム、例えばRSA−KEM（非特許文献３参照）なども同様の困難な数学上の問題を根拠として安全性証明されており、他のKEMアルゴリズムを用いて鍵KA及びKBを共有するとしても良い。
３．暗号通信システム１の動作
３．１  共有鍵の生成
装置A１００及び装置B２００の間で、鍵カプセル化メカニズムを利用して共有鍵KS及びKHを生成する場合の動作について、図７を参照して説明する。
【００５１】
装置B２００の証明書検証部２０４は、検証データ格納部２０１から公開鍵証明書Cert_Bを読み出す（ステップＳ５０１）。制御部２１５は、読み出された証明書Cert_Bを、送受信部２０２を介して装置A１００へ送信する（ステップＳ５０２）。
装置A１００の制御部１１５は、送受信部１０２を介して受信した公開鍵証明書Cert_Bを証明書検証部１０４へ出力する。証明書検証部１０４は、公開鍵証明書Cert_Aを受け取ると、署名SKPBと公開鍵KPBとを取り出し、検証データ格納部１０１から公開鍵KPCを読み出す。読み出した公開鍵KPCを用いて署名SKPBを署名検証する（ステップＳ５０３）。検証結果が、署名SKPBが正しいことを示す場合（ステップＳ５０４でYES）、公開鍵KPBを鍵生成部１０６へ出力する。検証結果が正しくない場合（ステップＳ５０４でNO）、処理を終了する。
【００５２】
鍵生成部１０６は、鍵カプセル化メカニズムに基づいて、鍵KAと鍵情報KEMAとを生成する（ステップＳ５０５）。生成した鍵KAを共有鍵生成部１０８へ出力し、鍵情報KEMAを制御部１１５へ出力する。また、証明書検証部１０４は、検証データ格納部１０１から装置A１００の公開鍵証明書Cert_Aを読み出し（ステップＳ５０６）、制御部１１５へ出力する。
【００５３】
制御部１１５は、送受信部１０２を介して鍵情報KEMA及び公開鍵証明書Cert_Aを装置B２００へ送信する（ステップＳ５０７）。
装置B２００の制御部２１５は、鍵情報KEMA及び公開鍵証明書Cert_Aを受信すると、鍵情報KEMAを鍵復号部２０７へ出力し、公開鍵証明書Cert_Aを証明書検証部２０４へ出力する。
【００５４】
証明書検証部２０４は、公開鍵証明書Cert_Aを受け取り、署名SKPA及び公開鍵KPAを取り出し、検証データ格納部２０１から公開鍵KPCを読み出す。読み出した公開鍵KPCを用いて署名SKPAを署名検証する（ステップＳ５０８）。検証結果が、署名SKPAが正しいことを示す場合（ステップＳ５０９でYES）、公開鍵KPAを鍵生成部２０６へ出力する。検証結果が、正しくないことを示す場合（ステップＳ５０９でNO）、処理を終了する。
【００５５】
鍵復号部２０７は、制御部２１５から鍵情報KEMAを受け取り、秘密鍵格納部２０５から秘密鍵KSBを読み出す。読み出した秘密鍵KSBを用いて鍵情報KEMAを復号し、鍵KA’を得る（ステップＳ５１０）。
次に、鍵生成部２０６は、上述の鍵カプセル化メカニズムに基づいて、鍵KBと鍵情報KEMBとを生成する（ステップＳ５１１）。生成した鍵KBを共有鍵生成部２０８へ出力し、鍵情報KEMBを制御部２１５へ出力する。制御部２１５は、鍵情報KEMBを、送受信部２０２を介して装置A１００へ送信する（ステップＳ５１２）。
【００５６】
装置A１００の制御部１１５は、鍵情報KEMBを受け取ると、鍵復号部１０７へ出力する。鍵復号部１０７は、鍵情報KEMBを受け取り、秘密鍵格納部１０５から秘密鍵KSAを読み出す。読み出した秘密鍵KSAを用いて鍵情報KEMBを復号し、鍵KB’を生成する（ステップＳ５１３）。鍵復号部１０７は、鍵KB’を共有鍵生成部１０８へ出力する。
共有鍵生成部１０８は、鍵生成部１０６から鍵KAを受け取り、鍵復号部１０７からKB’を受け取ると、鍵KA及び鍵KB’を用いて暗号用共有鍵KSa及びハッシュ用共有鍵KHaを生成し（ステップＳ５１４）、生成した共有鍵を共有鍵格納部１０９へ格納する（ステップＳ５１５）。
【００５７】
共有鍵生成部２０８も同様に、鍵生成部２０６から鍵KBを受け取り、鍵復号部２０７からKA’を受け取ると、鍵KB及び鍵KA’を用いて暗号用共有鍵KSb及びハッシュ用共有鍵KHbを生成し（ステップＳ５１６）、生成した共有鍵を共有鍵格納部２０９へ格納する（ステップＳ５１７）。
このように、装置A１００及び装置B２００が正当な機器である場合、相手装置から受信する鍵情報を正しく復号して鍵を取得することが出来るので、鍵KAと鍵KBとを共有できる。
【００５８】
また、両装置が正当な装置であれば、それぞれの装置は、同一の暗号用共有鍵KSａ及び暗号用共有鍵KSｂと、ハッシュ用共有鍵KHａ及びハッシュ用共有鍵KHｂとを生成することが出来る。
３．２  相互認証
装置A１００及び装置B２００の間で、コンテンツデータを送信する前に行う相互認証の動作について、図８を参照して説明する。
【００５９】
まず、装置A１００の認証部１１２は、ランダムに乱数resAを生成する（ステップＳ５３１）。生成した乱数resAを暗号用共有鍵KSaを用いて暗号化し、chaAを生成する（ステップＳ５３２）。生成したchaAを、送受信部１０２を介して装置B２００へ送信する（ステップＳ５３３）。
装置B２００の認証部２１２は、送受信部２０２を介してchaAを受信すると、暗号用共有鍵KSｂを用いてchaAを復号し、resA’を得る（ステップＳ５３４）。次に認証部２１２は、ランダムに乱数resBを生成する（ステップＳ５３５）。生成したresBを、暗号用共有鍵KSｂを用いて暗号化し、chaBを生成する（ステップＳ５３６）。生成したchaB及び復号して取得したresA’を装置A１００へ送信する（ステップＳ５３７）。
【００６０】
装置A１００の認証部１１２は、chaB及びresA’を受信すると、ステップＳ５３１で生成したresAと受信したresA’とが一致するか否かを判断する（ステップＳ５３８）。一致しない場合（ステップＳ５３８でNO）、認証に失敗したものと判断し、以降の処理を終了する。一致する場合（ステップＳ５３８でYES）、認証に成功したものとして、以降の処理を継続する。認証部１１２は、暗号用共有鍵KSaを用いてchaBを復号し、resB’を生成する（ステップＳ５３９）。生成したresB’を装置B２００へ送信する（ステップＳ５４０）。
【００６１】
装置B２００の認証部２１２は、resB’を受信し、受信したresB’とステップＳ５３５で生成したresBとが一致するか否かを判断する（ステップＳ５４１）。一致しない場合（ステップＳ５４１でNO）、認証に失敗したものとして、処理を終了する。一致する場合（ステップＳ５４１でYES）、以降の処理を継続する。
以上のようにして、装置A１００及び装置B２００は、相互に機器認証を行う。このとき、鍵共有が正しく行われて、暗号用共有鍵KSａ及び暗号用共有鍵KSｂが同一であれば、相手装置は、正しく鍵を共有できた装置であり、正当な装置であることを認証することが出来る。
３．３  コンテンツデータの送信
装置A１００及び装置B２００の間で、コンテンツデータDA及びDBを送受信する際の動作について、図９を参照して説明する。
【００６２】
装置A１００の暗号化部１１０は、制御部１１５の制御の下、コンテンツデータ格納部１０３からコンテンツデータDAを読み出し、共有鍵格納部１０９から暗号用共有鍵KSaを読み出す。読み出した暗号用共有鍵KSa用いてコンテンツデータDAを暗号化し、暗号化データCDAを生成する（ステップＳ５６１）。生成した暗号化データCDAを制御部１１５へ出力する。
【００６３】
また、ハッシュ値算出部１１３は、制御部１１５の制御の下、コンテンツデータ格納部１０３からコンテンツデータDAを読み出し、共有鍵格納部１０９からハッシュ用共有鍵KHaを読み出し、読み出したハッシュ用共有鍵KHaを用いてコンテンツデータDAに対するハッシュ値HDAを算出する（ステップＳ５６２）。算出したハッシュ値HDAを制御部１１５へ出力する。
【００６４】
制御部１１５は、暗号化データCDA及びハッシュ値HDAを受け取ると、送受信部１０２を介して装置B２００へ送信する（ステップＳ５６３）。
装置B２００の復号部２１１は、制御部２１５から暗号化データCDAを受け取り、共有鍵格納部２０９から暗号用共有鍵KSｂを読み出す。読み出した暗号用共有鍵KSｂを用いて暗号化データCDAを復号し、平文のコンテンツデータDA’を生成する（ステップＳ５６４）。コンテンツデータDA’を改竄検出部２１４へ出力する。
【００６５】
改竄検出部２１４は、制御部２１５からハッシュ値HDAを受け取り、復号部２１１からコンテンツデータDA’を受け取ると、共有鍵格納部２０９からハッシュ用共有鍵KHｂを読み出す。読み出したハッシュ用共有鍵KHｂを用いてコンテンツデータDA’に対するハッシュ値HDA’を生成する（ステップＳ５６５）。生成したハッシュ値HDA’と、受信したハッシュ値HDAとが一致するか否かを判断し（ステップＳ５６６）、一致しない場合（ステップＳ５６６でNO）、改竄されているとみなして、処理を終了する。一致する場合（ステップＳ５６６でYES）、改竄されていないとみなして、生成したコンテンツデータDA’をコンテンツデータ格納部２０３へ格納する（ステップＳ５６７）。
【００６６】
また、暗号化部２１０は、制御部２１５の制御の下、コンテンツデータ格納部２０３からコンテンツデータDBを読み出し、共有鍵格納部２０９から暗号用共有鍵KSｂを読み出す。暗号用共有鍵KSｂを用いてコンテンツデータDBを暗号化し、暗号化データCDBを生成する（ステップＳ５６８）。生成した暗号化データCDBを制御部２１５へ出力する。
また、ハッシュ値算出部２１３は、制御部２１５の制御の下、コンテンツデータ格納部２０３からコンテンツデータDBを読み出し、共有鍵格納部２０９からハッシュ用共有鍵KHｂを読み出す。読み出したハッシュ用共有鍵KHｂを用いて、コンテンツデータDBに対するハッシュ値HDBを生成する（ステップＳ５６９）。生成したハッシュ値HDBを制御部２１５へ出力する。
【００６７】
制御部２１５は、送受信部２０２を介して、暗号化データCDB及びハッシュ値HDBを装置A１００へ送信する（ステップＳ５７０）。
装置A１００の復号部１１１は、暗号化データCDBを受け取ると、制御部１１５の制御の下、共有鍵格納部１０９から暗号用共有鍵KSaを読み出す。読み出した暗号用共有鍵KSaを用いて暗号化データDBを復号し、平分のコンテンツデータDB’を生成する（ステップＳ５７１）。コンテンツデータDB’を改竄検出部１１４へ出力する。
【００６８】
また、改竄検出部１１４は、制御部１１５の制御の下、復号部１１１からコンテンツデータDB’を受け取り、共有鍵格納部１０９からハッシュ用共有鍵KHaを読み出す。読み出したハッシュ用共有鍵KHaを用いて、コンテンツデータDB’に対するハッシュ値HDB’を算出する（ステップＳ５７２）。算出したハッシュ値HDB’と受け取ったハッシュ値HDBとが一致するか否かを判断し（ステップＳ５７３）、一致しない場合（ステップＳ５７３でNO）、改竄されているとみなして以降の処理を終了する。一致する場合（ステップＳ５７３）、改竄されていないとみなして、コンテンツデータDB’をコンテンツデータ格納部１０３に格納する（ステップＳ５７４）。
４．その他の変形例
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）本実施の形態では、装置A１００から装置B２００へ、また、装置B２００から装置A１００へコンテンツデータを送信するとしたが、どちらか一方から他方へ送信するとしても良い。
（２）本実施の形態では、鍵の共有、相互認証、コンテンツデータの送信を続けて記述しているが、間に何らかの処理が含まれても良い。例えば、装置の機能（音楽再生機能、映画再生機能や放送受信機能など）の確認処理が含まれていても良い。
（３）公開鍵証明書及び公開鍵とコンテンツデータとが別の格納部に格納されるとしたが、同じ格納部に格納されているとしても良いし、複数の格納部にデータが別々に格納されるとしても良い。
（４）コンテンツデータの送受信後、データ格納部に格納しているが、コンテンツデータが画像データであれば、画面に出力、音楽データであれば、スピーカより出力するとしても良い。
（５）公開鍵証明書に公開鍵とその公開鍵に対する署名とが含まれるとしたが、これに他のデータ、例えば、ID情報などを付加しても良い。また、署名の対象となるデータは、公開鍵と他のデータとを組み合わせたものでも良く、例えば、ID情報との連結としても良い。
（６）本実施の形態で、暗号用共有鍵KS及びハッシュ用共有鍵KHの生成は、鍵KA及びKBの連結データに対するハッシュ値を分割するとしたが、本発明は、これに限定されない。
【００６９】
鍵KA及びKBの排他的論理和演算の結果を分割するとしても良いし、鍵KA及びKBの両方の少なくとも一部に基づいて生成されれば良い。
（７）ハッシュ値の算出や暗号文の生成に用いるアルゴリズムは、本実施の形態に記載のアルゴリズムに限定されず、他のアルゴリズムを用いて算出しても良いのは勿論である。
（８）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【００７０】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD‐ROM、MO、DVD、DVD−ROM、DVD−RAM、BD（Blu−ray  Disc）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【００７１】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【００７２】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（９）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
５．まとめ
以上説明したように、本発明は、第1及び第2装置間で共有した鍵を用いて暗号通信を行う暗号通信システムであって、前記第１装置は、前記第2装置の公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを前記第2装置へ送信し、前記第2装置から、第2暗号化鍵データを受信し、第1装置の秘密鍵を用いて前記第2暗号化鍵データを復号して第２鍵を取得し、前記第1鍵と第２鍵とに基づいて、前記第2装置との間での通信に用いる第1暗号鍵を生成し、前記第2装置は、前記第１装置の公開鍵を用いて第３鍵を暗号化して前記第２暗号化鍵データを生成し、生成した第２暗号化鍵データを前記第１装置へ送信し、前記第１装置から前記第1暗号化鍵データを受信し、当該第2装置の秘密鍵を用いて前記第1暗号化鍵データを復号して第4鍵を取得し、前記第３鍵と第4鍵とに基づいて、前記第1装置との間での通信に用いる第2暗号鍵を生成する。
【００７３】
また、本発明は、通信相手の装置と共有した鍵を用いて暗号通信を行う通信装置であって、相手装置が保持する第２秘密鍵に対応する第２公開鍵を用いて第1鍵を暗号化して第1暗号化鍵データを生成し、生成した第1暗号化鍵データを相手装置へ送信する暗号化鍵データ生成手段と、相手装置によって、当該通信装置の第1公開鍵を用いて第2鍵を暗号化して生成された第2暗号化鍵データを、相手装置から受信し、通信装置の第1秘密鍵を用いて前記第2暗号化鍵データを復号して第３鍵を取得する暗号化鍵データ復号手段と、前記第1鍵と第３鍵とに基づいて、暗号鍵を生成する暗号鍵生成手段と、前記相手装置との間で、前記暗号鍵を用いて暗号通信を行う通信手段とを備える。
【００７４】
この構成によると、共有した２個の鍵から新たに暗号鍵を生成しているので、共有した鍵が不正利用者によって暴露されたとしても、データの送受信に用いる暗号鍵は守られているので、通信するデータを保護することが出来る。また、従来の鍵共有では、共有した2個の鍵を安全に保持する必要があったが、本発明では、暗号鍵のみを安全に保持していれば良く、メモリの使用量を減らすことが出来る。また、相手装置が、暗号化鍵データから正しく鍵を復号できるか否か、暗号鍵を正しく生成可能か否かによって、相手装置の正当性を間接的に認証することが出来る。
【００７５】
ここで、前記暗号鍵生成手段は、更に、前記第1鍵と第3鍵とに基づいて、ハッシュ鍵を生成し、前記通信手段は、前記ハッシュ鍵を用いて、前記相手装置へ送信する送信データに対するハッシュ値を算出するハッシュ値算出部と、前記暗号鍵を用いて、前記送信データを暗号化して暗号化データを生成する暗号化部と前記ハッシュ値及び前記暗号化データを送信する送信部とを備えるとしても良い。
【００７６】
また、前記暗号鍵生成手段は、更に、前記第1鍵と第3鍵とに基づいて、ハッシュ鍵を生成し、前記通信手段は、前記相手装置が保持する暗号鍵を用いデータを暗号化した暗号化データと、前記データに対して、前記相手装置が保持するハッシュ鍵を用いて算出された第1ハッシュ値とを、前記相手装置から受信する受信部と、受信した暗号化データを前記暗号鍵を用いて復号し、平文の受信データを生成する復号部と、前記ハッシュ鍵を用いて、前記受信データに対する第2ハッシュ値を算出し、算出した第2ハッシュ値と前記第1ハッシュ値とが一致するか否かを判断する判断手段とを備え、前記通信装置は、更に、前記判断手段が一致すると判断する場合に、前記受信データを利用し、一致しないと判断する場合に、前記受信データの利用を抑制する利用手段を備えるとしても良い。
【００７７】
この構成によると、データの送信側の装置が元のデータに対して、共有したハッシュ鍵を用いて算出したハッシュ値を送信し、受信側の装置は、受信したデータに対して、共有したハッシュ鍵を用いてハッシュ値を算出し、比較しているので、データが改竄されているか否かを検出できる。また、鍵を共有した装置同士出なければ、同一のハッシュ値を算出することが出来ないので、鍵を共有し、間接的に認証した相手装置のデータのみを利用することが出来る。
【００７８】
ここで、前記通信装置は、更に、前記暗号鍵を用いて、前記相手装置と認証を行う認証手段を備えることとしても良い。
また、前記認証手段は、第1認証値を生成し、前記暗号鍵を用いて前記第1認証値を暗号化して暗号化第1認証値を生成し、生成した暗号化第1認証値を前記相手装置へ送信し、前記相手装置から、前記相手装置が保持する暗号鍵を用いて前記暗号化第1認証値を復号して生成した第2認証値を受信し、受信した第2認証値と前記第1認証地とが一致するか否かを判断し、前記通信装置は、更に、前記判断結果が、一致することを示す場合に、前記相手装置との間で通信を行う通信手段を備えることとしても良い。
【００７９】
また、前記認証手段は、前記相手装置から、前記相手装置が保持する暗号鍵を用いて、第3認証値を暗号化して生成した暗号化第3認証値を受信し、受信した暗号化第3認証値を、前記暗号鍵を用いて復号して第4認証値を生成し、生成した第4認証値を前記相手装置へ送信し、前記通信手段は、前記第4認証値と前記第3認証値とを比較して一致すると前記相手装置が判断した場合に、通信を行うこととしても良い。
【００８０】
この構成によると、正しく鍵の共有を行った装置であることを認証することが出来る。
ここで、前記暗号化鍵データ生成手段は、鍵カプセル化メカニズムに基づいて、前記第1鍵を暗号化して前記第1暗号化鍵データを生成し、前記暗号化鍵データ復号手段は、鍵復号メカニズムに基づいて、前記第2暗号化鍵データを復号し、前記第３鍵を取得することとしても良い。
【００８１】
この構成によると、鍵カプセル化メカニズムを利用することで、困難な数学上の問題を根拠にして安全性証明が可能であることが保証されているので、本発明の通信装置の安全性が保証できる。
【産業上の利用可能性】
【００８２】
映画や音楽などの著作物がデジタル化されたコンテンツやコンピュータプログラムなどのソフトウェアを提供するソフトウェア産業において、本発明は、経営的に、また反復的、継続的に使用することが出来る。また、本発明の暗号通信システム、通信装置は、電器製品等の製造産業において、生産し、販売することが出来る。
【図面の簡単な説明】
【００８３】
【図１】暗号通信システム１の全体の構成を示す。
【図２】装置A１００及び装置B２００の構成を示すブロック図である。
【図３】装置A１００の鍵共有処理部１２０の構成を示すブロック図である。
【図４】装置A１００のコンテンツデータ処理部１３０の構成を示すブロック図である。
【図５】装置B２００の鍵共有処理部２２０の構成を示すブロック図である。
【図６】装置B２００のコンテンツデータ処理部２３０の構成を示すブロック図である。
【図７】鍵共有処理部による鍵共有処理の動作を示すフローチャートである。
【図８】認証部による相互認証の動作を示すフローチャートである。
【図９】コンテンツデータ処理部によるコンテンツデータの送受信の動作を示すフローチャートである。
【符号の説明】
【００８４】
１０１    検証データ格納部
１０２    送受信部
１０３    コンテンツデータ格納部
１０４    証明書検証部
１０５    秘密鍵格納部
１０６    鍵生成部
１０７    鍵復号部
１０８    共有鍵生成部
１０９    共有鍵格納部
１１０    暗号化部
１１１    復号部
１１２    認証部
１１３    ハッシュ値算出部
１１４    改竄検出部
１１５    制御部
１１６    入力部
１１７    再生部
１１８    インターフェース
１１９    スピーカ
１２０    鍵共有処理部
１３０    コンテンツデータ処理部
２０１    検証データ格納部
２０２    送受信部
２０３    コンテンツデータ格納部
２０４    証明書検証部
２０５    秘密鍵格納部
２０６    鍵生成部
２０７    鍵復号部
２０８    共有鍵生成部
２０９    共有鍵格納部
２１０    暗号化部
２１１    復号部
２１２    認証部
２１３    ハッシュ値算出部
２１４    改竄検出部
２１５    制御部
２１６    入力部
２１７    再生部
２１８    モニタ
２１９    スピーカ
２２０    鍵共有処理部
２３０    コンテンツデータ処理部
【図１】
2007529162.tif 000003
【図２】
2007529162.tif 000004
【図３】
2007529162.tif 000005
【図４】
2007529162.tif 000006
【図５】
2007529162.tif 000007
【図６】
2007529162.tif 000008
【図７】
2007529162.tif 000009
【図８】
2007529162.tif 000010
【図９】
2007529162.tif 000011
【手続補正書】
【提出日】平成19年8月2日(2007.8.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
前記認証手段は、第1認証値を生成し、前記暗号鍵を用いて前記第1認証値を暗号化して暗号化第1認証値を生成し、生成した暗号化第1認証値を前記相手装置へ送信し、
前記相手装置から、前記相手装置が保持する暗号鍵を用いて前記暗号化第1認証値を復号して生成した第2認証値を受信し、受信した第2認証値と前記第1認証値とが一致するか否かを判断し、
前記通信装置は、更に、
前記判断結果が、一致することを示す場合に、前記相手装置との間で通信を行う通信手段を備える
ことを特徴とする請求項７に記載の通信装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
送受信部１０２は、装置B２００と制御部１１５との間でデータの送受信を行う。
制御部１１５は、入力部１１６が受け付けるユーザからの指示情報に基づいて、鍵の共有、相互認証、コンテンツデータの送受信及び再生の処理を行う。
制御部１１５は、鍵の共有を示す指示情報を受け取ると、暗号用共有鍵KSａ及びハッシュ用共有鍵KHａを生成するように、鍵共有処理部１２０を制御する。  また、制御部１１５は、鍵生成部１０６から鍵情報KEMAを受け取ると、送受信部１０２を介して装置B２
００へ送信する。送受信部１０２を介して鍵情報KEMBを受信すると、鍵復号部１０７へ出力する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５０
【補正方法】変更
【補正の内容】
【００５０】
（ｆ）一方で、秘密鍵ｓｋを知らない他の受信装置は、たとえ公開鍵ｐｋを取得して暗号文Cを受信したとしても、秘密鍵ｓｋ（＝ｘ）を知らないので、R＝ａ＊ＰからQ＝ａ＊
Ｗ（＝（ａｘ）＊P）を計算できず、送信装置が導出したものと同じ共有鍵Kを導出できない。なぜならば、秘密鍵ｓｋを知らない他の受信装置は、公開鍵ｐｋしか利用できないので、上記Qの計算には秘密鍵ｓｋ（＝ｘ）の代わりに公開鍵ｐｋのW=x＊Pを利用すること
になる。しかし、一般に、ａ＊ＰとW=x＊Pから、Ｑ＝ａ＊Ｗ（＝（ａｘ）＊Ｐ）を求めることは、楕円曲線上のDiffie−Hellman問題と呼ばれ、ａやｘの値を知らない限り計算困
難である。（例えば、非特許文献５参照）
（ｇ）上記のPSEC−KEMアルゴリズムは、楕円曲線上のDiffie−Hellman問題が困難であれば、秘密鍵を知らない受信装置は共有鍵Kを得ることが出来ないことが証明されている
。PSEC−KEMの他のKEMアルゴリズム、例えばRSA−KEM（非特許文献３参照）なども同様の困難な数学上の問題を根拠として安全性証明されており、他のKEMアルゴリズムを用いて鍵KA及びKBを共有するとしても良い。
３．暗号通信システム１の動作
３．１  共有鍵の生成
装置A１００及び装置B２００の間で、鍵カプセル化メカニズムを利用して共有鍵KS及びKHを生成する場合の動作について、図７を参照して説明する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００７８
【補正方法】変更
【補正の内容】
【００７８】
ここで、前記通信装置は、更に、前記暗号鍵を用いて、前記相手装置と認証を行う認証手段を備えることとしても良い。
また、前記認証手段は、第1認証値を生成し、前記暗号鍵を用いて前記第1認証値を暗号化して暗号化第1認証値を生成し、生成した暗号化第1認証値を前記相手装置へ送信し、前記相手装置から、前記相手装置が保持する暗号鍵を用いて前記暗号化第1認証値を復号して生成した第2認証値を受信し、受信した第2認証値と前記第1認証値とが一致するか否かを判断し、前記通信装置は、更に、前記判断結果が、一致することを示す場合に、前記相手装置との間で通信を行う通信手段を備えることとしても良い。
【国際調査報告】
2007529162.tif 000012
2007529162.tif 000013
2007529162.tif 000014