(57)【要約】  なりすまし攻撃に対しても安全性である通信装置を提供する。  通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置は、第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成し、前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断し、前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成する。
2007125877.tif 000002
【特許請求の範囲】
【請求項１】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、
第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段と
を備えることを特徴とする通信装置。
【請求項２】
前記鍵生成手段は、
前記第１の鍵データを生成し、前記第１の鍵データを秘密に前記外部装置へ送信し及び前記外部装置にて生成された第２の鍵データを秘密に受信することにより前記外部装置との間で前記第１の鍵データ及び前記第２の鍵データを共有し、共有した前記第１の鍵データと前記第２の鍵データとを用いて前記共有鍵を生成する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記認証は、チャレンジレスポンス認証であり、
前記判断手段は、
前記外部装置から前記第１の鍵データをチャレンジデータとし、前記チャレンジデータと前記共有鍵とに前記関数を施して生成されたレスポンスデータを受け取り、前記チャレンジレスポンス認証を行う
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記鍵生成手段は、
前記第１鍵データと前記第２鍵データとの排他的論理和演算により共有鍵データを算出し、算出した共有鍵データから前記共有鍵を生成する
ことを特徴とする請求項２に記載の通信装置。
【請求項５】
前記鍵生成手段は、
前記共有鍵データの一部を前記共有鍵とする
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記鍵生成手段は、
前記共有鍵データそのものを前記共有鍵とする
ことを特徴とする請求項４に記載の通信装置。
【請求項７】
前記鍵生成手段は、
前記第１鍵データと前記第２鍵データとに前記鍵依存関数を施して共有鍵データを生成し、生成した共有鍵データから前記共有鍵を生成する
ことを特徴とする請求項２に記載の通信装置。
【請求項８】
前記鍵依存関数は、前記共有鍵に依存する一方向性関数
であることを特徴とする請求項１に記載の通信装置。
【請求項９】
前記共有鍵は、前記判断手段による認証及び前記検証用データの生成に用いる検証用共有鍵であり、
前記鍵生成手段は、さらに、
前記共有鍵データから前記外部装置との間で共有され、通信対象データの暗号化及び復号に用いる暗号用共有鍵を生成し、
前記通信装置は、さらに、
前記暗号用共有鍵を用いて前記通信対象データを暗号化して、暗号化データを生成し、生成した前記暗号化データを前記検証用データとともに前記外部装置へ送信する送信手段を備える
ことを特徴とする請求項１に記載の通信装置。
【請求項１０】
前記共有鍵は検証用共有鍵であり、
前記鍵生成手段は、さらに、
前記共有鍵データから前記外部装置との間で共有すべき暗号用共有鍵を生成し、
前記通信装置は、さらに、
前記外部装置から前記暗号用共有鍵にて通信対象データが暗号化された暗号化データを受信する受信手段を備え、
前記データ生成手段は、前記受信手段にて受信した暗号化データを復号して復号データを取得し、取得した復号データを通信対象データとして前記検証用データを生成する
ことを特徴とする請求項１に記載の通信装置。
【請求項１１】
前記鍵生成手段は、
前記鍵配送として鍵カプセル化メカニズムを用いて前記共有鍵を生成する
ことを特徴とする請求項１に記載の通信装置。
【請求項１２】
実行が開始されたプログラムを通信相手とし、前記プログラムと共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、
第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記プログラムとの間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記プログラムが正当であるか否かを判断する判断手段と、
前記判断手段にて前記プログラムが正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いた検証用データを生成するデータ生成手段と
を備えることを特徴とする通信装置。
【請求項１３】
コンピュータ装置に実行させ、コンピュータ装置を通信相手とし、前記コンピュータ装置と共有した鍵を用いて通信対象データの秘密通信を行うプログラムであって、
第三者に知られることなく前記コンピュータ装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記コンピュータ装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記コンピュータ装置が正当であるか否かを判断する判断ステップと、
前記判断ステップにて前記コンピュータ装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とするプログラム。
【請求項１４】
第１の領域に格納され、第２の領域に存在する第２プログラムを通信相手とし、前記第２プログラムと共有した鍵を用いて通信対象データの秘密通信を行う第１プログラムであって、
前記第１プログラム及び前記第２プログラムは、コンピュータ装置にて実行され、
前記第１プログラムは、
第三者に知られることなく前記第２プログラムとの間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記第２プログラムとの間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記第２プログラムが正当であるか否かを判断する判断ステップと、
前記判断ステップにて前記第２プログラムが正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする第１プログラム。
【請求項１５】
第１及び第２の通信装置間で共有した鍵を用いて通信対象データの秘密通信を行う通信システムであって、
前記第１の通信装置は、
第三者に知られることなく前記第２の通信装置との間で安全性証明のなされた暗号方式を用いて共有すべき第１の共有鍵を生成する第１の鍵生成手段と、
前記第２の通信装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記第２の通信装置が正当であるか否かを判断する第１の判断手段と、
前記第１の判断手段にて前記第２の通信装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記第１の共有鍵に依存する前記鍵依存関数と同一の関数を用いた第１の検証用データを生成する第１のデータ生成手段とを備え、
前記第２の通信装置は、前記第１の通信装置が認証に用いるデータを送信する
ことを特徴とする通信システム。
【請求項１６】
前記第２の通信装置は、さらに、
第三者に知られることなく前記第１の通信装置との間で安全性証明のなされた暗号方式を用いて共有すべき第２の共有鍵を生成する第２の鍵生成手段と、
前記鍵依存関数を用いた認証を行うことにより、前記第１の通信装置が正当であるか否かを判断する第２の判断手段と、
前記第２の判断手段にて前記第１の通信装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記第２の共有鍵に依存する前記鍵依存関数と同一の関数を用いて第２の検証用データを生成する第２のデータ生成手段とを備え、
前記第１の通信装置は、前記第２の通信装置が認証に用いるデータを送信する
ことを特徴とする請求項１４に記載の暗号通信システム。
【請求項１７】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置で用いられる通信方法であって、
第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断ステップと、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする通信方法。
【請求項１８】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置で用いられる通信プログラムであって、
第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断ステップと、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする通信プログラム。
【請求項１９】
前記通信プログラムは、コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項１７に記載の通信プログラム。
【請求項２０】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置の集積回路であって、
第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティ技術としての暗号技術、特に共有鍵を用いて正当な通信相手と秘密通信を行う技術に関する。
【背景技術】
【０００２】
近年、家庭用電化製品、携帯電話機などの間でネットワークを介した通信を行う機会が増加している。例えば、ＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）機器ではコンテンツの著作権保護のために機器同士で、また、携帯電話機では通信内容の漏洩を防ぐために携帯電話機と通信相手である装置とで、認証鍵共有を行った後に、共有した鍵を用いて暗号化した通信を行うことがある。ここで、認証鍵共有とは、機器同士などで、通信相手の機器が正しく作られた機器であるかを、相互認証により確認し、それと同時に鍵を共有するものである（以下、共有する鍵を共有鍵という。）。【０００３】
例えば、ＡＶ機器同士をＩＥＥＥ１３９４で接続したときに使用される、ＤＴＣＰ（Ｄｉｇｉｔａｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｅｎｔ  Ｐｒｏｔｅｃｔｉｏｎ）と呼ばれる著作権保護規格で規定されている認証鍵共有方法がある（非特許文献１参照）。この方法は、認証方式に楕円ＤＳＡ署名を用いたチャレンジ・レスポンス認証を使用し、鍵共有方式に楕円ＤＨ鍵共有を使用している。チャレンジ・レスポンス認証、楕円ＤＳＡ署名及び楕円ＤＨ鍵共有については、非特許文献２が詳しい。【０００４】
上記に示すＤＴＣＰの認証鍵共有方法では、安全性の問題、すなわち、実効性のある攻撃方法の存在については特に指摘されていない。しかし、未知の攻撃方法を含めた全ての攻撃方法に対する安全性の証明はなされていない。
ここで、「安全性の証明」とは、暗号方式の安全性が経験的なものではなく、数学的に証明できることである。例えば、公開鍵暗号においては、秘密鍵を持たないユーザが暗号文の解読を行う場合、数学的に求解困難であると考えられている問題（例えば、素因数分解問題や楕円離散対数問題）を解く必要があることを証明する。この証明ができる場合、暗号文の解読が、求解困難であると考えられている問題よりも難しいことが示せたこととなる。したがって、このような証明ができる場合には、公開鍵暗号について安全性証明があることになる。【０００５】
安全性証明ができないと経験的に「たぶん解読困難と思われる」というレベルまでしか暗号方式の安全が保証できないので、その暗号方式を使用することに不安が残ってしまう。そのため、ユーザは、従来の認証鍵共有方法を安心して使用することはできない。
そこで、安全性証明された鍵配送方式である鍵カプセル化メカニズム（Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  Ｍｅｃｈａｎｉｓｍｓ、以降ではＫＥＭと呼ぶ。）を用いた認証鍵共有方式が提案されている（特許文献１参照）。この技術により鍵漏洩がなされないので、ユーザは、安心して認証鍵の共有ができる。
【特許文献１】国際公開第ＷＯ０５／０３９１００号
【非特許文献１】ＤＴＣＰ  ＳｐｅｃｉｆｉｃａｔｉｏｎのＷｈｉｔｅ  ｐａｐｅｒ  ＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｄｔｃｐ．ｃｏｍ／ｄａｔａ／ｓｐｅｃ．ｈｔｍｌ＞
【非特許文献２】岡本龍明、山本博資、”現代暗号”、産業図書（１９９７年）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＫＥＭを用いた認証鍵共有方法では共有鍵の漏洩に対する安全性については証明しているが、なりすまし攻撃に対する安全性については証明できていない。なりすまし攻撃とは、攻撃者が通信相手のユーザ（機器）になりすまして、正当なユーザ（機器）との間で、正当なユーザ（機器）の情報を漏洩させたり、相手の通信をさせないように遮ろうとしたりする攻撃である。【０００７】
そのため、データを送信する送信元の装置は、正当な装置であるようになりすました不正な装置に対して、データを送信する可能性があるので、システム全体としての安全性に問題が残る。
なぜなら、例えば、仮に共有鍵の漏洩に対する安全性が保証されており、また、共有鍵によって暗号化されたデータ１つ１つから共有鍵を推測することは困難であっても、暗号化されたデータを大量に収集すると共有鍵の推測が容易になることがあるからである。【０００８】
したがって、認証鍵共有では、なりすまし攻撃に対して安全であることが望ましい。さらに、この場合、共有鍵の漏洩に対してのみならず、なりすまし攻撃に対する防衛策についても安全性証明があることが望ましい。
そこで、本発明は、なりすまし攻撃に対しても安全性証明ができる通信装置、通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明は、通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段とを備えることを特徴とする。
【発明の効果】
【００１０】
上記に示した構成によると、通信装置は、共有鍵と鍵依存関数とを用いて認証を行い、さらに、同一の共有鍵と鍵依存関数を用いて検証用データを生成しているので、なりすまし攻撃を防ぐことができる。以下にその理由を示す。
通信装置は、認証時になりすまし攻撃を受けている場合には、その認証により不正な外部装置であると判断することができるので、以降において通信対象データを送信しないことにより、なりすまし攻撃を防ぐことができる。【００１１】
また、認証後に通信装置がなりすまし攻撃により不正な装置から通信対象データを受信する場合において、通信装置は、不正な装置から通信対象データを受信してしまうが、通信相手が不正な装置であることが分かれば、受信した通信対象データを破棄すればよい。この場合において、通信対象データの正当性検証のために、不正な装置から検証データをも送信される。しかしながら、不正な装置は、共有鍵及びこれに依存する鍵依存関数を有していないので、正当な検証データを送信することができない。仮に、通信装置が不正な装置から検証データを受信したとしても、受信した検証データは通信装置が有する共有鍵に依存する鍵依存関数により生成されていないため通信装置自身が生成した検証データとは異なることとなり、通信対象データが不正、つまり、通信対象データを送信した装置が不正であると判断することができる。これにより、通信装置は、通信対象データを送信した装置が不正であると判断した場合には受信した通信対象データを破棄することにより、なりすまし攻撃を防ぐことができる。【００１２】
さらには、通信装置は、安全性証明のなされた暗号方式により共有すべき共有鍵を生成するので、漏洩に対して安全である。これにより、通信装置は、漏洩に対して安全である共有鍵を用いて外部装置の認証及び秘密通信を行うので、これら処理に対する安全性も保証される。
以下、簡単になりすまし攻撃に対する安全性の証明を行う。【００１３】
認証時において、通信装置が、外部装置が正当であると確認するためには、外部装置にて正しい検証用データが生成される必要があり、そのためには通信装置と外部装置との間で同一の共有鍵を共有する必要がある。しかしながら、共有鍵は安全性証明がなされた暗号方式を用いて生成されるので、漏洩される、つまり、不正な装置が共有鍵を取得することができる確率が非常に小さく、無視できる程度となることを数学的に証明できる。そのため、不正な装置が正しい検証用データを生成することができないことも数学的に証明できる。したがって、通信装置は、なりすまし攻撃に対しても安全性が証明できる。【００１４】
ここで、前記鍵生成手段は、前記第１の鍵データを生成し、前記第１の鍵データを秘密に前記外部装置へ送信し及び前記外部装置にて生成された第２の鍵データを秘密に受信することにより前記外部装置との間で前記第１の鍵データ及び前記第２の鍵データを共有し、共有した前記第１の鍵データと前記第２の鍵データとを用いて前記共有鍵を生成するとしてもよい。【００１５】
この構成によると、通信装置は、秘密に共有した第１の鍵データ及び第２の鍵データを用いて共有鍵を生成するので、共有鍵が外部に漏洩されることはない。
ここで、前記認証は、チャレンジレスポンス認証であり、前記判断手段は、前記外部装置から前記第１の鍵データをチャレンジデータとし、前記チャレンジデータと前記共有鍵とに前記関数を施して生成されたレスポンスデータを受け取り、前記チャレンジレスポンス認証を行うとしてもよい。【００１６】
この構成によると、通信装置は、チャレンジレスポンス認証時にチャレンジデータを改めて送信する必要がないので、通信量を削減することができる。
ここで、前記鍵生成手段は、前記第１鍵データと前記第２鍵データとの排他的論理和演算により共有鍵データを算出し、算出した共有鍵データから前記共有鍵を生成するとしてもよい。【００１７】
この構成によると、通信装置は、第１鍵データと第２鍵データとの排他的論理和演算により共有鍵データを算出しているので、共有鍵データから第１鍵データと第２鍵データを導出することを困難にすることができる。
ここで、前記鍵生成手段は、前記共有鍵データの一部を前記共有鍵とするとしてもよい。【００１８】
この構成によると、通信装置は、共有鍵を、共有鍵データの一部とすることにより生成することができる。
ここで、前記鍵生成手段は、前記共有鍵データそのものを前記共有鍵とするとしてもよい。
この構成によると、通信装置は、共有鍵を、共有鍵データと同一にしているので、改めて共有鍵を生成する必要がない。そのため、通信装置における処理量を削減することができる。【００１９】
ここで、前記鍵生成手段は、前記第１鍵データと前記第２鍵データとに前記鍵依存関数を施して共有鍵データを生成し、生成した共有鍵データから前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、第１鍵データと第２鍵データとに関数を施して共有鍵データへと変換しているので、第１鍵データ及び第２鍵データの漏洩を防ぐことができる。【００２０】
ここで、前記鍵依存関数は、前記共有鍵に依存する一方向性関数であるとしてもよい。
この構成によると、通信装置は、一方向性関数を用いて共有鍵データを生成している。これにより、生成された共有鍵データから第１鍵データ及び第２鍵データを生成するのは困難であるので、第１鍵データ及び第２鍵データの漏洩に対する安全性を高めることができる。【００２１】
ここで、前記共有鍵は、前記判断手段による認証及び前記検証用データの生成に用いる検証用共有鍵であり、前記鍵生成手段は、さらに、前記共有鍵データから前記外部装置との間で共有され、通信対象データの暗号化及び復号に用いる暗号用共有鍵を生成し、前記通信装置は、さらに、前記暗号用共有鍵を用いて前記通信対象データを暗号化して、暗号化データを生成し、生成した前記暗号化データを前記検証用データとともに前記外部装置へ送信する送信手段を備えるとしてもよい。【００２２】
この構成によると、通信装置は、外部装置と共有すべき暗号用共有鍵を用いて通信対象データを暗号化して暗号化データを生成し、生成した暗号化データを外部装置へ送信するので、通信対象データが漏洩されることはない。
ここで、前記共有鍵は検証用共有鍵であり、前記鍵生成手段は、さらに、前記共有鍵データから前記外部装置との間で共有すべき暗号用共有鍵を生成し、前記通信装置は、さらに、前記外部装置から前記暗号用共有鍵にて通信対象データが暗号化された暗号化データを受信する受信手段を備え、前記データ生成手段は、前記受信手段にて受信した暗号化データを復号して復号データを取得し、取得した復号データを通信対象データとして前記検証用データを生成するとしてもよい。【００２３】
この構成によると、通信装置は、外部装置と共有すべき暗号用共有鍵を用いて復号された復号データから検証データを生成するので、外部装置との間で正当な暗号用共有鍵及び正当な検証用共有鍵を共有しない限り、正当な復号データ及び正当な検証用データを取得することができない。つまり、正当な通信装置のみが、復号データ及び検証データを取得することができる。【００２４】
ここで、前記鍵生成手段は、前記鍵配送として鍵カプセル化メカニズムを用いて前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、外部装置との間で鍵カプセル化メカニズムを用いて共有鍵を生成するので、共有鍵が漏洩されることはない。
また、鍵カプセル化メカニズムを用いることにより、鍵漏洩に対して安全であるので、認証時において、なりすまし攻撃に対する安全性が証明される。
【図面の簡単な説明】
【００２５】
【図１】暗号通信システム１の概要を示す図である。
【図２】暗号通信装置Ａ１０の構成を示すブロック図である。
【図３】暗号通信装置Ｂ２０の構成を示すブロック図である。
【図４】暗号通信システム１の動作を示す流れ図である。図５へ続く。
【図５】暗号通信システム１の動作を示す流れ図である。図４から続き、図６へ続く。
【図６】暗号通信システム１の動作を示す流れ図である。図５から続き、図７へ続く。
【図７】暗号通信システム１の動作を示す流れ図である。図６から続く。
【符号の説明】
【００２６】
１    暗号通信システム
１０    暗号通信装置Ａ
２０    暗号通信装置Ｂ
３０    通信路
１０１、２０１    入出力部
１０２、２０２    送受信部
１０３、２０３    公開鍵格納部
１０４、２０４    秘密鍵格納部
１０５、２０５    ＫＥＭ暗号文生成部
１０６、２０６    ＫＥＭ暗号文復号化部
１０７、２０７    共有鍵生成部
１０８、２０８    共有鍵格納部
１０９、２０９    チャレンジデータ生成部
１１０、２１０    レスポンスデータ生成部
１１１、２１１    レスポンスデータ検証部
１１２、２１２    ＭＡＣ生成部
１１３、２１３    共通鍵暗号化部
１１４、２１４    共通鍵復号化部
１１５、２１５    ＤＥＭ暗号文生成部
１１６、２１６    ＤＥＭ暗号文復号化部
【発明を実施するための最良の形態】
【００２７】
１．第１の実施の形態
本発明にかかる第１の実施の形態としての暗号通信システム１について説明する。
暗号通信システム１は、図１に示すように、暗号通信装置Ａ１０と暗号通信装置Ｂ２０とから構成され、暗号通信装置Ａ１０と暗号通信装置Ｂ２０とは、通信路３０を介して通信を行う。【００２８】
暗号通信装置Ａ１０及び暗号通信装置Ｂ２０は、鍵の漏洩及びなりすまし攻撃を防止して、通信相手と共有鍵を用いた暗号通信を行う。
暗号通信装置Ａ１０及び暗号通信装置Ｂ２０における暗号通信は、大きく分けて、３つのフェーズ動作からなる。
１つ目のフェーズは、ＫＥＭを用いて暗号通信装置Ａ１０と暗号通信装置Ｂ２０とが相互認証及び鍵配送を行い、互いの装置にて鍵を共有するフェーズである。【００２９】
２つ目のフェーズは、共有した鍵を用いてチャレンジ・レスポンス認証を行うことにより、暗号通信装置Ａ１０と暗号通信装置Ｂ２０のそれぞれが、お互いの送信相手がなりすまし攻撃を行っていないことを確認するフェーズである。
３つ目のフェーズは、共有した鍵を用いて暗号通信装置Ａ１０と暗号通信装置Ｂ２０との間で通信路３０を介して暗号したデータの送受信を行うフェーズである。【００３０】
ここで、データとは、例えば、テキストデータ、音楽データ、画像データ、映画コンテンツデータである。
１．１  準備
ここでは、本実施の形態に用いる鍵配送方式の１つである鍵カプセル化メカニズム（Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  Ｍｅｃｈａｎｉｓｍｓ、以降では「ＫＥＭ」と呼ぶ。）について説明する。【００３１】
鍵カプセル化メカニズムは、簡単に説明すると、公開鍵暗号を用いて送信装置と受信装置の間で共有鍵を配送するアルゴリズムである。先ず、送信側が、公開鍵暗号化アルゴリズムＥに受信者の公開鍵ｐｋを入力して暗号文Ｃと共有鍵Ｋを生成し、暗号文Ｃを受信側に伝送する。そして、受信側が、公開鍵復号アルゴリズムＤに、秘密鍵ｓｋと暗号文Ｃを入力して送信側と同じ共有鍵Ｋを求める。なお、本明細書では、暗号文Ｃを「鍵データＫのＫＥＭ暗号文」等とも呼ぶ。【００３２】
鍵カプセル化メカニズムの目的は、鍵カプセル化メカニズムで共有鍵Ｋを送信装置と受信装置で共有することにより、その後、送信装置から受信装置へ通信される通信内容データを、共有鍵Ｋを用いて共通鍵暗号で暗号化することにある。ここで、送信装置を持つ送信者から受信装置を持つ受信者に一方的に情報の送信が行われていながら、送信者が作為的に共有鍵を作成できず、送信者による不正が抑制されている点が従来の鍵配送方式にない特徴である。【００３３】
このような鍵カプセル化メカニズムとして、ＰＳＥＣ−ＫＥＭと呼ばれるアルゴリズムが開示されている。
なお、ＰＳＥＣ−ＫＥＭアルゴリズムの詳細については、著者Ｔａｔｓｕａｋｉ  Ｏｋａｍｏｔｏによる“Ｇｅｎｅｒｉｃ  ｃｏｎｖｅｒｓｉｏｎｓ  ｆｏｒ  ｃｏｎｓｔｒｕｃｔｉｎｇ  ＩＮＤ−ＣＣＡ２  ｐｕｂｌｉｃ−ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ  ｉｎ  ｔｈｅ  ｒａｎｄｏｍ  ｏｒａｃｌｅ  ｍｏｄｅｌ”に記載されているので説明を省力する。以下に、ＰＳＥＣ−ＫＥＭアルゴリズムについて簡単に説明する。【００３４】
（１）ＰＳＥＣ−ＫＥＭのシステムパラメータ
ＰＳＥＣ−ＫＥＭは、以下のシステムパラメータを持つ。
・楕円曲線：Ｅ
・楕円曲線Ｅ上の位数ｎの点：Ｐ
・ハッシュ関数：Ｇ、Ｈ
なお、楕円曲線、位数及びハッシュ関数については、非特許文献２に詳細が記述されているので、ここでは説明を省略する。【００３５】
なお、ハッシュ関数Ｇ、Ｈは送信側および受信側の両方で共有している。
（２）ＰＳＥＣ−ＫＥＭの公開鍵と秘密鍵
・ランダムにＺｎの要素ｘを選び、Ｗ＝ｘ＊Ｐを生成する。
ここで、Ｚｎは、｛０，１，．．．，ｎ−１｝からなる集合であり、ｘ＊Ｐは、楕円曲線Ｅ上の点Ｐをｘ回加算することにより得られる楕円曲線上の点を表す。なお、楕円曲線上の点の加算方法については、非特許文献２に記述されている。【００３６】
・公開鍵ｐｋを（Ｅ，Ｐ，Ｗ，ｎ）とし、秘密鍵ｓｋをｘとする。
（３）ＰＳＥＣ−ＫＥＭの暗号化
暗号化時には、以下に述べる公開鍵暗号化アルゴリズムＫｅｍＥに公開鍵ｐｋを入力して共有鍵Ｋと暗号文Ｃを出力する。
以下に公開鍵暗号化アルゴリズムＫｅｍＥについて説明する。【００３７】
・Ｚｎの要素ｓをランダムに生成する。
・Ｇ（ｓ）を生成し、Ｇ（ｓ）をＧ（ｓ）＝ａ｜｜Ｋと分割する。ここで、｜｜はビット結合を表し，Ｇ（ｓ）をＧ（ｓ）＝ａ｜｜Ｋと分割するとは、Ｇ（ｓ）の上位複数ビットをａとし、残りのビットをＫとすることを表す。
・Ｒ＝ａ＊Ｐ，Ｑ＝ａ＊Ｗを生成する。【００３８】
・ｖ＝ｓ  ｘｏｒ  Ｈ（Ｒ｜｜Ｑ）を生成する。ここで、ｘｏｒは排他的論理和演算を表す。
・共有鍵Ｋと暗号文Ｃ＝（Ｒ，ｖ）を出力する。
・送信側の装置は、暗号文Ｃを通信の相手先（受信側の装置）へ送信する。
（４）ＰＳＥＣ−ＫＥＭの復号化
受信側の装置は、送信側の装置から暗号文Ｃを受け取り、以下に述べる公開鍵復号アルゴリズムＫｅｍＤに暗号文Ｃ＝（Ｒ，ｖ）と秘密鍵ｓｋを入力して共有鍵Ｋを出力する。【００３９】
以下に公開鍵復号アルゴリズムＫｅｍＤについて説明する。
・Ｑ＝ｘ＊Ｒを生成する。ここで、上述したようにｘは秘密鍵ｓｋである。
・ｓ’＝ｖ  ｘｏｒ  Ｈ（Ｒ｜｜Ｑ）を生成する。ここで、ｖとＲは暗号文Ｃから得られる。
・Ｇ（ｓ’）を生成し、Ｇ（ｓ’）をＧ（ｓ’）＝ａ’｜｜Ｋ’と分割する。ここで、分割の仕方は暗号化側と同様である。【００４０】
・Ｒ＝ａ’＊Ｐが成立するかどうかチェックする。成立すればＫ’を共有鍵Ｋとして出力する。
このＰＳＥＣ−ＫＥＭアルゴリズムを、送信装置と受信装置の間で暗号化通信を行う暗号システムに応用した場合、まず、送信装置は、通信先受信装置の公開鍵ｐｋを取得し、取得した公開鍵ｐｋを前述の公開鍵暗号化アルゴリズムＫｅｍＥに入力して共有鍵Ｋと暗号文Ｃを導出して、暗号文Ｃを受信装置へ送信する。そして、受信装置は、送信装置から暗号文Ｃを受信し、受信した暗号文Ｃと自身が有する秘密鍵ｓｋを前述の公開鍵復号アルゴリズムＫｅｍＤに入力して、送信装置が導出したものと等しい共有鍵Ｋを導出する。【００４１】
以下に、このことを詳細に説明する。
今、ＰＳＥＣ−ＫＥＭアルゴリズムは、ハッシュ関数Ｈの入力を（ａ＊Ｐ｜｜ａ＊Ｗ）としており、公開鍵暗号化アルゴリズムＫｅｍＥで、ランダムに生成した要素ｓにＨ（ａ＊Ｐ｜｜ａ＊Ｗ）の値を作用させてｖを生成する。そして、公開鍵復号アルゴリズムＫｅｍＤでは、暗号文Ｃに含まれるＲ＝ａ＊Ｐから秘密鍵ｓｋ（＝ｘ）を用いてＱ＝ｘ＊Ｒ＝ｘ＊（ａ＊Ｐ）＝ａ＊（ｘ＊Ｐ）＝ａ＊Ｗを求めることができるので、ｖ  ｘｏｒ  Ｈ（ａ＊Ｐ｜｜ａ＊Ｗ）を計算することにより、公開鍵暗号化アルゴリズムＫｅｍＥにおいて生成されたランダムな要素ｓを求めることができる。ここで、ｖ  ｘｏｒ  Ｈ（ａ＊Ｐ｜｜ａ＊Ｗ）は、公開鍵暗号化アルゴリズムＫｅｍＥがｓからｖを計算する演算の逆演算である。従って、公開鍵暗号化アルゴリズムＫｅｍＥと公開鍵復号アルゴリズムＫｅｍＤは、ハッシュ関数Ｇに同じｓの値を入力することができ、同じ共有鍵Ｋを導出することができる。この結果、秘密鍵ｓｋを有する受信装置は、送信装置が導出したものと同じ共有鍵Ｋを導出できることになる。【００４２】
一方で、秘密鍵ｓｋを知らない他の受信装置は、たとえ公開鍵ｐｋを取得して暗号文Ｃを受信したとしても、秘密鍵ｓｋ（＝ｘ）を知らないのでＲ＝ａ＊ＰからＱ＝ａ＊Ｗ（＝（ａｘ）＊Ｐ）を計算できず、送信装置が導出したものと同じ共有鍵Ｋを導出できない。なぜならば、秘密鍵ｓｋを知らない他の受信装置は、公開鍵ｐｋしか利用できないので、上記Ｑの計算には秘密鍵ｓｋ（＝ｘ）の代わりに公開鍵ｐｋに含まれるＷ＝ｘ＊Ｐを利用することになるが、一般に、ａ＊ＰとＷ＝ｘ＊Ｐから、Ｑ＝ａ＊Ｗ（＝（ａｘ）＊Ｐ）を求めることは、楕円曲線上のＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ問題と呼ばれ、ａやｘの値を知らない限り計算困難だからである。なお、これについては、著者Ｎｅａｌ  Ｋｏｂｌｉｔｚによる“Ａｌｇｅｂｒａｉｃ  Ａｓｐｅｃｔｓ  ｏｆ  Ｃｒｙｐｔｏｇｒａｐｈｙ”（Ａｌｇｏｒｉｔｈｍｓ  ａｎｄ  Ｃｏｍｐｕｔａｔｉｏｎ  ｉｎ  Ｍａｔｈｅｍａｔｉｃｓ  Ｖｏｌ．３，  ｐｐ．１３２−１３３，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９８．）に記載されているので、ここでの説明は省略する。【００４３】
すなわち、ＰＳＥＣ−ＫＥＭアルゴリズムは、秘密鍵を用いずにａ＊Ｐからａ＊Ｗを計算することが困難なＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ問題を用いて、最終的に共有鍵Ｋを導出することにより、秘密鍵を知らなければその共有鍵Ｋを導出できないようにしている。
よって、以上により、送信装置と受信装置とは、共有鍵Ｋを秘密に共有することができ、この後、秘密鍵暗号を用いて、送信装置から受信装置へ通信される通信内容データを、共有鍵Ｋを用いて共通鍵暗号で暗号化することができる。【００４４】
上記のＰＳＥＣ−ＫＥＭアルゴリズムは、先に述べた楕円曲線上のＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ問題が困難であれば、秘密鍵を知らない受信装置は共有鍵Ｋを得ることができないことが証明されている。このような証明を方式の安全性を証明していることから、「安全性証明」と呼ぶ。ＰＳＥＣ−ＫＥＭの他のＫＥＭアルゴリズム、例えばＲＳＡ−ＫＥＭやＮＴＲＵ−ＫＥＭ（特開２００４−２０１２９２号公報及び特開２００４−２０１２９３号公報参照）なども同様の困難な数学上の問題を根拠として安全性証明されている。【００４５】
なお、ＲＳＡ−ＫＥＭの詳細については、著者Ｖｉｃｔｏｒ  Ｓｈｏｕｐにより“Ａ  ｐｒｏｐｏｓａｌ  ｆｏｒ  ａｎ  ＩＳＯ  ｓｔａｎｄａｒｄ  ｆｏｒ  ｐｕｂｌｉｃ  ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ  （ｖｅｒｓｉｏｎ  ２．１）”に記載されているので説明を省略する。
また、ＮＴＲＵ−ＫＥＭの詳細については、特開２００４−２０１２９２号公報及び特開２００４−２０１２９３号公報に記載されているので説明を省略する。【００４６】
上記にて説明したＫＥＭを用いて、２台の暗号通信装置の双方からＫＥＭ暗号文を送りあうこともある。この場合、一方の暗号通信装置Ａから他の暗号通信装置ＢにＫＥＭ暗号文を送ることで共有される共有鍵（ＫＡと呼ぶ）と、暗号通信装置Ｂから暗号通信装置ＡにＫＥＭ暗号文を送ることで共有される共有鍵（ＫＢと呼ぶ）との両方を用いて共有鍵Ｋを作ることで、より安全な鍵共有ができる。【００４７】
暗号通信システム１では、このような双方からＫＥＭ暗号部を送りあう構成で鍵共有を行う。
以下に、暗号通信システム１を攻勢する暗号通信装置Ａ１０、Ｂ２０、及びこれらの動作について説明する。
１．２  暗号通信装置Ａ１０の構成
暗号通信装置Ａ１０は、図２に示すように、入出力部１０１、送受信部１０２、公開鍵格納部１０３、秘密鍵格納部１０４、ＫＥＭ暗号文生成部１０５、ＫＥＭ暗号文復号化部１０６、共有鍵生成部１０７、共有鍵格納部１０８、チャレンジデータ生成部１０９、レスポンスデータ生成部１１０、レスポンスデータ検証部１１１、ＭＡＣ（改ざん検出符号、Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）生成部１１２、共通鍵暗号化部１１３、共通鍵復号化部１１４、ＤＥＭ（Ｄａｔａ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  Ｍｅｃｈａｎｉｓｍ）暗号文生成部１１５、及びＤＥＭ暗号文復号化部１１６から構成されている。【００４８】
（１）公開鍵格納部１０３
公開鍵格納部１０３は、暗号通信装置Ｂ２０の公開鍵ＫＰＢを格納している。
なお、公開鍵ＫＰＢは、秘密鍵ＫＳＢと共に暗号通信装置Ｂ２０に対応付けて、予め与えられている。また、暗号通信装置Ａ１０では、公開鍵ＫＰＢは予め外部から与えられて格納されているか、あるいは、暗号通信装置Ｂ２０から送信され、通信路３０を介して予め受信されて格納されているものとする。【００４９】
（２）秘密鍵格納部１０４
秘密鍵格納部１０４は、暗号通信装置Ａ１０の秘密鍵ＫＳＡを格納している。
なお、秘密鍵ＫＳＡは、公開鍵ＫＰＡと共に暗号通信装置Ａ１０に対応付けて、予め与えられている。
（３）ＫＥＭ暗号文生成部１０５
ＫＥＭ暗号文生成部１０５は、公開鍵ＫＰＢと、鍵カプセル化メカニズム（ＫＥＭ）の公開鍵暗号化アルゴリズムＫｅｍＥとを用いて、鍵データＫＡ及び鍵データＫＡに対するＫＥＭ暗号文ＫＥＭＡを生成する。鍵データＫＡ及びＫＥＭ暗号文ＫＥＭＡの生成方法については、上記にて示すＰＳＥＣ−ＫＥＭの暗号化と同様の方法であるので、説明は省略する。【００５０】
ＫＥＭ暗号文生成部１０５は、生成したＫＥＭ暗号文ＫＥＭＡを送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
ＫＥＭ暗号文生成部１０５は、生成した鍵データＫＡを共有鍵生成部１０７へ出力する。
（４）ＫＥＭ暗号文復号化部１０６
ＫＥＭ暗号文復号化部１０６は、暗号通信装置Ｂ２０から送受信部１０２を介して、ＫＥＭにおける公開鍵暗号化アルゴリズムＫｅｍＥにより鍵データＫＢが暗号化された暗号文であるＫＥＭ暗号文ＫＥＭＢを受信する。【００５１】
ＫＥＭ暗号文復号化部１０６は、公開鍵暗号化アルゴリズムＫｅｍＥに対応する公開鍵復号アルゴリズムＫｅｍＤに対して、秘密鍵ＫＳＡ及びＫＥＭ暗号文ＫＥＭＢを入力値として与えて、受信したＫＥＭ暗号文ＫＥＭＢを復号化して、鍵データＫＢを生成する。鍵データＫＢの復号化方法については、上記にて示すＰＳＥＣ−ＫＥＭの復号化と同様の方法であるので、説明は省略する。【００５２】
ＫＥＭ暗号文復号化部１０６は、生成した鍵データＫＢを共有鍵生成部１０７へ出力する。
（５）共有鍵生成部１０７
共有鍵生成部１０７は、ＫＥＭ暗号文生成部１０５から鍵データＫＡを、ＫＥＭ暗号文復号化部１０６から鍵データＫＢを、それぞれ受け取る。【００５３】
共有鍵生成部１０７は、受け取った鍵データＫＡとＫＢを用いて、共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを生成し、生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを共有鍵格納部１０８に格納する。
以下に共通鍵暗号用共有鍵ＫＳ及びＭＡＣ用共有鍵ＫＨの生成の具体例を以下に示す。
共有鍵生成部１０７は、鍵データＫＡとＫＢとの排他的論理和（ｘｏｒ）を取り、共有鍵データＫを生成する。共有鍵生成部１０７は、生成した共有鍵データＫの一部を共通鍵暗号用共有鍵ＫＳとし、それ以外の部分をＭＡＣ用共有鍵ＫＨとする。つまり、共有鍵生成部１０７は、生成した共有鍵データＫに対して、Ｋ＝ＫＳ｜｜ＫＨを満たすように共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを取得すればよい。ここで、｜｜は連結を示す。また、共有データＫから共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを取得するための区切り位置は、暗号通信装置Ｂ２０側と揃っていれば任意の位置でよい。【００５４】
なお、共有鍵データＫの生成方法は、鍵データＫＡとＫＢの両方の情報が含まれるものであればよい。例えば、鍵データＫＡとＫＢのビットまたはバイト連結したデータＫ’のハッシュ関数値を共有鍵データＫとしてもよい。
（６）共有鍵格納部１０８
共有鍵格納部１０８は、共有鍵生成部１０７で生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを格納するための領域を有している。【００５５】
（７）チャレンジデータ生成部１０９
チャレンジデータ生成部１０９は、乱数であるチャレンジデータｎＡを生成し、生成したチャレンジデータｎＡを、送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
チャレンジデータ生成部１０９は、生成したチャレンジデータｎＡを一時的に記憶する。【００５６】
（８）レスポンスデータ生成部１１０
レスポンスデータ生成部１１０は、暗号通信装置Ｂ２０から送受信部１０２を介して、チャレンジデータｎＢと、チャレンジデータ生成部１０９にて送信したチャレンジデータｎＡに対するレスポンスデータｒＢを受け取る、または、チャレンジデータｎＢのみ受け取る。【００５７】
（チャレンジデータｎＢとレスポンスデータｒＢとを受け取った場合）
レスポンスデータ生成部１１０は、暗号通信装置Ｂ２０からチャレンジデータｎＢとレスポンスデータｒＢとを受け取ると、受け取ったチャレンジデータｎＢを一時的に記憶する。
レスポンスデータ生成部１１０は、レスポンスデータｒＢと、レスポンスデータの検証を指示する旨の検証指示とをレスポンスデータ検証部１１１へ出力する。【００５８】
レスポンスデータ生成部１１０は、レスポンスデータ検証部１１１からレスポンスデータの生成を指示する旨のレスポンスデータ生成指示を受け取ると、改ざん検出符号（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ，  ＭＡＣ）の生成を指示する旨のＭＡＣ生成指示と、一時的に記憶しているチャレンジデータｎＢとをＭＡＣ生成部１１２へ出力する。【００５９】
レスポンスデータ生成部１１０は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＢを受け取ると、受け取ったＭＡＣ値ＨｎＢをレスポンスデータｒＡとして、送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
なお、ＭＡＣ値ＨｎＢについては、ＭＡＣ生成部１１２の説明の箇所で後述する。
（チャレンジデータｎＢのみ受け取った場合）
レスポンスデータ生成部１１０は、暗号通信装置Ｂ２０からチャレンジデータｎＢを受け取ると、ＭＡＣ生成指示と、受け取ったチャレンジデータｎＢとをＭＡＣ生成部１１２へ出力する。【００６０】
レスポンスデータ生成部１１０は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＢを受け取ると、受け取ったＭＡＣ値ＨｎＢをレスポンスデータｒＡとして、チャレンジデータ生成部１０９にて生成したチャレンジデータｎＡとともに、送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
（９）レスポンスデータ検証部１１１
レスポンスデータ検証部１１１は、レスポンスデータ生成部１１０から検証指示と、レスポンスデータｒＢとを受け取ると、チャレンジデータ生成部１０９にて一時的に記憶されているチャレンジデータｎＡを取得する。【００６１】
レスポンスデータ検証部１１１は、ＭＡＣ生成指示と、取得したチャレンジデータｎＡとをＭＡＣ生成部１１２へ出力する。
レスポンスデータ検証部１１１は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＡを受け取ると、ＭＡＣ値ＨｎＡとレスポンスデータｒＢとが一致するか否かを判断する。
一致すると判断する場合には、レスポンスデータ生成部１１０は、レスポンスデータ生成指示をレスポンスデータ生成部１１０へ出力する。【００６２】
一致しないと判断する場合には、レスポンスデータ生成部１１０は、暗号通信に係る処理全体を中止する。
レスポンスデータ検証部１１１は、暗号通信装置Ｂ２０から送受信部１０２を介して、レスポンスデータｒＢを受け取ると、チャレンジデータ生成部１０９にて一時的に記憶されているチャレンジデータｎＡを取得し、上記と同様の動作を行い、レスポンスデータｒＢの検証を行う。【００６３】
（１０）ＭＡＣ生成部１１２
ＭＡＣ生成部１１２は、鍵付ハッシュ関数Ｈａｓｈを予め記憶している。鍵付ハッシュ関数とは、鍵とデータとが入力として与えられ、鍵に依存する一方向性関数である。本実施の形態で用いる鍵付ハッシュ関数Ｈａｓｈは、ＭＡＣ用共有鍵ＫＨを用い、且つＭＡＣ用共有鍵ＫＨに依存する関数である。鍵付ハッシュ関数の詳細については、非特許文献２の１８９〜１９５ページに記載されているので説明を省略する。【００６４】
ＭＡＣ生成部１１２は、ＭＡＣ対象データに対して、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを使用して、所定のビット長ｔ（ｔは１以上）からなる改ざん検出符号の値（ＭＡＣ値）を生成（算出）する。
ここで、ＭＡＣ対象データＤＭに対するＭＡＣ値を、ＨＤＭ＝Ｈａｓｈ（ＫＨ，ＤＭ）とする。また、Ｈａｓｈ（ＫＨ，ＤＭ）は、ＭＡＣ用共有鍵ＫＨを用いて鍵付ハッシュ関数Ｈａｓｈで計算したデータＤＭのハッシュ値を意味する。【００６５】
ＭＡＣ生成部１１２は、レスポンスデータ生成部１１０からＭＡＣ生成指示と、チャレンジデータｎＢとを受け取ると、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部１１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、チャレンジデータｎＢに対するＭＡＣ値ＨｎＢ（＝Ｈａｓｈ（ＫＨ，ｎＢ））を算出し、算出したＭＡＣ値ＨｎＢをレスポンスデータ生成部１１０へ出力する。【００６６】
ＭＡＣ生成部１１２は、レスポンスデータ検証部１１１からＭＡＣ生成指示と、チャレンジデータｎＡとを受け取ると、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部１１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、チャレンジデータｎＡに対するＭＡＣ値ＨｎＡ（＝Ｈａｓｈ（ＫＨ，ｎＡ））を算出し、算出したＭＡＣ値ＨｎＡをレスポンスデータ検証部１１１へ出力する。【００６７】
ＭＡＣ生成部１１２は、ＭＡＣ生成指示と、共通鍵暗号により暗号化し暗号通信装置Ｂ２０へ送信するデータ（以下、暗号化対象データという。）ＤＡとを、ＤＥＭ暗号文生成部１１５から受け取ると、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部１１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、暗号化対象データＤＡに対するＭＡＣ値ＨＤＡ（＝Ｈａｓｈ（ＫＨ，ＤＡ））を算出し、算出したＭＡＣ値ＨＤＡをＤＥＭ暗号文生成部１１５へ出力する。【００６８】
ＭＡＣ生成部１１２は、ＭＡＣ生成指示と、ＤＥＭ暗号文復号化部１１６から復号化データＤＢ’とを受け取ると、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部１１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、復号化データＤＢ’に対するＭＡＣ値ＨＤＢ’（＝Ｈａｓｈ（ＫＨ，ＤＢ’））を算出し、算出したＭＡＣ値ＨＤＢ’をＤＥＭ暗号文生成部１１５へ出力する。【００６９】
復号化データＤＢ’については、共通鍵復号化部１１４の説明の箇所で後述する。
なお、Ｈａｓｈ（ＫＨ，ＤＭ）は、Ｈａｓｈ（ＫＨ，ＤＭ）＝ＳＨＡ１（ＫＨ｜｜ＤＭ）としてもよい。ここで、ＳＨＡ１（ｘ）は、ｘのＳＨＡ１ハッシュ関数値であり、｜｜は連結を示す。
（１１）共通鍵暗号化部１１３
共通鍵暗号化部１１３は、暗号化対象データＤＡと、暗号化を指示する旨の暗号化指示とを、ＤＥＭ暗号文生成部１１５から受け取ると、共有鍵格納部１０８に格納している共通鍵暗号用共有鍵ＫＳを取得する。【００７０】
共通鍵暗号化部１１３は、取得した共通鍵暗号用共有鍵ＫＳと、共通鍵暗号アルゴリズムとを用いて、暗号化対象データＤＡを暗号化して、暗号化対象データＤＡに対する暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））を生成する。ここで、Ｅｎｃ（ＫＳ，ＤＡ）は、鍵ＫＳを用いてデータＤＡを共通鍵暗号で暗号化した暗号文を意味する。共通鍵暗号は例えばＤＥＳ暗号やＡＥＳ暗号である。共通鍵暗号の詳細については、非特許文献２の７９〜１０５ページに記載されているので説明を省略する。【００７１】
共通鍵暗号化部１１３は、生成した暗号化データＥｎｃ（ＫＳ，ＤＡ）をＤＥＭ暗号文生成部１１５へ出力する。
（１２）共通鍵復号化部１１４
共通鍵復号化部１１４は、暗号化対象データＤＢを共通鍵暗号用共有鍵ＫＳで暗号化した暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＢ））と、暗号化データの復号化を指示する旨の復号指示とを、ＤＥＭ暗号文復号化部１１６から受け取ると、共有鍵格納部１０８に格納している共通鍵暗号用共有鍵ＫＳを取得する。【００７２】
共通鍵復号化部１１４は、取得した共通鍵暗号用共有鍵ＫＳと、共通鍵復号化アルゴリズムとを用いて、暗号化データＥｎｃ（ＫＳ，ＤＢ）を復号化して、復号化データＤＢ’を生成する。
共通鍵復号化部１１４は、生成した復号化データＤＢ’をＤＥＭ暗号文復号化部１１６へ出力する。【００７３】
（１３）ＤＥＭ暗号文生成部１１５
ＤＥＭ暗号文生成部１１５は、外部から入出力部１０１を介して、暗号化対象データＤＡを受け取ると、暗号化指示と、受け取った暗号化対象データＤＡとを、共通鍵暗号化部１１３へ出力する。
ＤＥＭ暗号文生成部１１５は、ＭＡＣ指示と、受け取った暗号化対象データＤＡとをＭＡＣ生成部１１２へ出力する。【００７４】
ＤＥＭ暗号文生成部１１５は、暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））を共通鍵暗号化部１１３から受け取り、ＭＡＣ値ＨＤＡ（＝Ｈａｓｈ（ＫＨ，ＤＡ））をＭＡＣ生成部１１２から受け取ると、これらを連結して、ＤＥＭ暗号文ＤＥＭＡ（＝Ｅｎｃ（ＫＳ，ＤＡ）｜｜ＨＤＡ）を生成する。
ＤＥＭ暗号文生成部１１５は、生成したＤＥＭ暗号文ＤＥＭＡを、送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。【００７５】
（１４）ＤＥＭ暗号文復号化部１１６
ＤＥＭ暗号文復号化部１１６は、暗号通信装置Ｂ２０から送受信部１０２を介して、ＤＥＭ暗号文ＤＥＭＢ（＝ＥＤＢ｜｜ＨＤＢ）を受け取る。ここで、ＥＤＢは暗号化対象データＤＢを暗号通信装置Ｂ２０が有する共通鍵暗号用共有鍵ＫＳにて暗号化した暗号化データ（Ｅｎｃ（ＫＳ，ＤＢ））であり、ＨＤＢは暗号化対象データＤＢに対するＭＡＣ値（Ｈａｓｈ（ＫＨ，ＤＢ））である。【００７６】
ＤＥＭ暗号文復号化部１１６は、受け取ったＤＥＭ暗号文ＤＥＭＢ（＝ＥＤＢ｜｜ＨＤＢ）を暗号化データＥＤＢとＭＡＣ値ＨＤＢとに分離する。
ここで、分解の一例を示す。ＤＥＭ暗号文ＤＥＭＢのビット長をｕとすると、上述したように、ＭＡＣ値ＨＤＢのビット長はｔであるので、ｕ＞ｔであることが分かる。ＤＥＭ暗号文復号化部１１６は、ｕ−ｔビット長からなるデータをＤＥＭ暗号文ＤＥＭＢの先頭から抽出し、抽出したデータを暗号化データＥＤＢとし、残りｔビット長からなるデータをＭＡＣ値ＨＤＢとする。【００７７】
ＤＥＭ暗号文復号化部１１６は、復号指示と、暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＢ））とを共通鍵復号化部１１４へ出力する。
ＤＥＭ暗号文復号化部１１６は、復号化データＤＢ’を共通鍵復号化部１１４から受け取ると、ＭＡＣ指示と復号化データＤＢ’とをＭＡＣ生成部１１２へ出力する。
ＤＥＭ暗号文復号化部１１６は、ＭＡＣ値ＨＤＢ’（＝Ｈａｓｈ（ＫＨ、ＤＢ’））を受け取ると、ＤＥＭ暗号文ＤＥＭＢから分離したＨＤＢとを比較し、一致するか否かを判断する。【００７８】
一致すると判断する場合には、ＤＥＭ暗号文復号化部１１６は、復号化データＤＢ’、つまり暗号化対象データＤＢを、入出力部１０１を介して外部へ出力する。
一致しないと判断する場合には、ＤＥＭ暗号文復号化部１１６は、暗号通信に係る処理全体を中止する。
（１５）入出力部１０１
入出力部１０１は、外部から暗号化対象データＤＡを受け付け、受け付けた暗号化対象データＤＡをＤＥＭ暗号文生成部１１５へ出力する。【００７９】
入出力部１０１は、ＤＥＭ暗号文復号化部１１６から復号化データＤＢ’を受け取ると、受け取った復号化データＤＢ’を外部へ出力する。
（１６）送受信部１０２
送受信部１０２は、ＫＥＭ暗号文ＫＥＭＡをＫＥＭ暗号文生成部１０５から受け取ると、受け取ったＫＥＭ暗号文ＫＥＭＡを、通信路３０を介して暗号通信装置Ｂ２０へ送信する。【００８０】
送受信部１０２は、暗号通信装置Ｂ２０から通信路３０を介して、ＫＥＭ暗号文ＫＥＭＢを受け取ると、受け取ったＫＥＭ暗号文ＫＥＭＢをＫＥＭ暗号文復号化部１０６へ出力する。
送受信部１０２は、チャレンジデータｎＡをチャレンジデータ生成部１０９から受け取ると、受け取ったチャレンジデータｎＡを、通信路３０を介して暗号通信装置Ｂ２０へ送信する。【００８１】
送受信部１０２は、レスポンスデータｒＡをレスポンスデータ生成部１１０から受け取ると、受け取ったレスポンスデータｒＡを、通信路３０を介して暗号通信装置Ｂ２０へ送信する。
送受信部１０２は、暗号通信装置Ｂ２０から通信路３０を介して、チャレンジデータｎＢとレスポンスデータｒＢとを、若しくはチャレンジデータｎＢのみを受け取ると、受け取ったチャレンジデータｎＢ及びレスポンスデータｒＢを、若しくはチャレンジデータｎＢを、レスポンスデータ生成部１１０へ出力する。【００８２】
送受信部１０２は、暗号通信装置Ｂ２０から通信路３０を介して、レスポンスデータｒＢを受け取ると、受け取ったレスポンスデータｒＢをレスポンスデータ検証部１１１へ出力する。
送受信部１０２は、ＤＥＭ暗号文ＤＥＭＡをＤＥＭ暗号文生成部１１５から受け取ると、受け取ったＤＥＭ暗号文ＤＥＭＡを、通信路３０を介して暗号通信装置Ｂ２０へ送信する。【００８３】
送受信部１０２は、暗号通信装置Ｂ２０から通信路３０を介して、ＤＥＭ暗号文ＤＥＭＢを受け取ると、受け取ったＤＥＭ暗号文ＤＥＭＢをＤＥＭ暗号文復号化部１１６へ出力する。
１．３  暗号通信装置Ｂ２０の構成
暗号通信装置Ｂ２０は、図３に示すように、入出力部２０１、送受信部２０２、公開鍵格納部２０３、秘密鍵格納部２０４、ＫＥＭ暗号文生成部２０５、ＫＥＭ暗号文復号化部２０６、共有鍵生成部２０７、共有鍵格納部２０８、チャレンジデータ生成部２０９、レスポンスデータ生成部２１０、レスポンスデータ検証部２１１、ＭＡＣ生成部２１２、共通鍵暗号化部２１３、共通鍵復号化部２１４、ＤＥＭ暗号文生成部２１５、及びＤＥＭ暗号文復号化部２１６から構成されている。【００８４】
（１）公開鍵格納部２０３
公開鍵格納部２０３は、暗号通信装置Ａ１０の公開鍵ＫＰＡを格納している。
なお、公開鍵ＫＰＡは、秘密鍵ＫＳＡと共に暗号通信装置Ａ１０に対応付けて、予め与えられている。また、暗号通信装置Ｂ２０では、公開鍵ＫＰＡは予め外部から与えられて格納されているか、あるいは、暗号通信装置Ａ１０から送信され、通信路３０を介して予め受信されて格納されているものとする。【００８５】
（２）秘密鍵格納部２０４
秘密鍵格納部２０４は、暗号通信装置Ｂ２０の秘密鍵ＫＳＢを格納している。
なお、秘密鍵ＫＳＢは、公開鍵ＫＰＢと共に暗号通信装置Ｂ２０に対応付けて、予め与えられている。
（３）ＫＥＭ暗号文生成部２０５
ＫＥＭ暗号文生成部２０５は、公開鍵ＫＰＡと、鍵カプセル化メカニズム（ＫＥＭ）の公開鍵暗号化アルゴリズムＫｅｍＥとを用いて、鍵データＫＢ及び鍵データＫＢに対するＫＥＭ暗号文ＫＥＭＢを生成する。鍵データＫＢ及びＫＥＭ暗号文ＫＥＭＢの生成方法については、上記にて示すＰＳＥＣ−ＫＥＭの暗号化と同様の方法であるので、説明は省略する。【００８６】
ＫＥＭ暗号文生成部２０５は、生成したＫＥＭ暗号文ＫＥＭＢを送受信部２０２を介して暗号通信装置Ａ１０へ送信する。
ＫＥＭ暗号文生成部２０５は、生成した鍵データＫＢを共有鍵生成部２０７へ出力する。
（４）ＫＥＭ暗号文復号化部２０６
ＫＥＭ暗号文復号化部２０６は、暗号通信装置Ａ１０から送受信部２０２を介して、ＫＥＭ暗号文ＫＥＭＡを受信する。【００８７】
ＫＥＭ暗号文復号化部２０６は、公開鍵暗号化アルゴリズムＫｅｍＥに対応する公開鍵復号アルゴリズムＫｅｍＤに対して、秘密鍵ＫＳＢ及びＫＥＭ暗号文ＫＥＭＡを入力値として与えて、受信したＫＥＭ暗号文ＫＥＭＡを復号化して、鍵データＫＡを生成する。鍵データＫＡの復号化方法については、上記にて示すＰＳＥＣ−ＫＥＭの復号化と同様の方法であるので、説明は省略する。【００８８】
ＫＥＭ暗号文復号化部２０６は、生成した鍵データＫＡを共有鍵生成部２０７へ出力する。
（５）共有鍵生成部２０７
共有鍵生成部２０７は、ＫＥＭ暗号文生成部２０５から鍵データＫＢを、ＫＥＭ暗号文復号化部２０６から鍵データＫＡを、それぞれ受け取る。【００８９】
共有鍵生成部２０７は、受け取った鍵データＫＡとＫＢを用いて、共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを生成し、生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを共有鍵格納部２０８に格納する。
共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとの生成には、共有鍵生成部１０７における生成方法と同一の方法が用いられる。【００９０】
（６）共有鍵格納部２０８
共有鍵格納部２０８は、共有鍵生成部２０７で生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを格納するための領域を有している。
（７）チャレンジデータ生成部２０９
チャレンジデータ生成部２０９は、乱数であるチャレンジデータｎＢを生成し、生成したチャレンジデータｎＢを、送受信部２０２を介して暗号通信装置Ｂ２０へ送信する。【００９１】
チャレンジデータ生成部２０９は、生成したチャレンジデータｎＢを一時的に記憶する。
（８）レスポンスデータ生成部２１０
レスポンスデータ生成部２１０は、暗号通信装置Ａ１０から送受信部２０２を介して、チャレンジデータｎＡと、チャレンジデータ生成部２０９にて送信したチャレンジデータｎＢに対するレスポンスデータｒＡを受け取る、または、チャレンジデータｎＡのみ受け取る。【００９２】
（チャレンジデータｎＡとレスポンスデータｒＡとを受け取った場合）
レスポンスデータ生成部２１０は、暗号通信装置Ａ１０からチャレンジデータｎＡとレスポンスデータｒＡとを受け取ると、受け取ったチャレンジデータｎＡを一時的に記憶する。
レスポンスデータ生成部２１０は、レスポンスデータｒＡと、レスポンスデータの検証を指示する旨の検証指示とをレスポンスデータ検証部２１１へ出力する。【００９３】
レスポンスデータ生成部２１０は、レスポンスデータ検証部２１１からレスポンスデータの生成を指示する旨のレスポンスデータ生成指示を受け取ると、ＭＡＣ生成指示と、一時的に記憶しているチャレンジデータｎＡとをＭＡＣ生成部２１２へ出力する。
レスポンスデータ生成部２１０は、ＭＡＣ生成部２１２からＭＡＣ値ＨｎＡを受け取ると、受け取ったＭＡＣ値ＨｎＡをレスポンスデータｒＢとして、送受信部２０２を介して暗号通信装置Ａ１０へ送信する。【００９４】
なお、ＭＡＣ値ＨｎＡについては、ＭＡＣ生成部２１２の説明の箇所で後述する。
（チャレンジデータｎＡのみ受け取った場合）
レスポンスデータ生成部２１０は、暗号通信装置Ａ１０からチャレンジデータｎＡを受け取ると、ＭＡＣ生成指示と、受け取ったチャレンジデータｎＡとをＭＡＣ生成部２１２へ出力する。【００９５】
レスポンスデータ生成部２１０は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＡを受け取ると、受け取ったＭＡＣ値ＨｎＡをレスポンスデータｒＢとして、チャレンジデータ生成部２０９にて生成したチャレンジデータｎＢとともに、送受信部２０２を介して暗号通信装置Ｂ２０へ送信する。
（９）レスポンスデータ検証部２１１
レスポンスデータ検証部２１１は、レスポンスデータ生成部２１０から検証指示と、レスポンスデータｒＡとを受け取ると、チャレンジデータ生成部２０９にて一時的に記憶されているチャレンジデータｎＢを取得する。【００９６】
レスポンスデータ検証部２１１は、ＭＡＣ生成指示と、取得したチャレンジデータｎＢとをＭＡＣ生成部２１２へ出力する。
レスポンスデータ検証部２１１は、ＭＡＣ生成部２１２からＭＡＣ値ＨｎＢを受け取ると、ＭＡＣ値ＨｎＢとレスポンスデータｒＡとが一致するか否かを判断する。
一致すると判断する場合には、レスポンスデータ生成部２１０は、レスポンスデータ生成指示をレスポンスデータ生成部２１０へ出力する。【００９７】
一致しないと判断する場合には、レスポンスデータ生成部２１０は、暗号通信に係る処理全体を中止する。
レスポンスデータ検証部２１１は、暗号通信装置Ａ１０から送受信部２０２を介して、レスポンスデータｒＡを受け取ると、チャレンジデータ生成部２０９にて一時的に記憶されているチャレンジデータｎＢを取得し、上記と同様の動作を行い、レスポンスデータｒＡの検証を行う。【００９８】
（１０）ＭＡＣ生成部２１２
ＭＡＣ生成部２１２は、鍵付ハッシュ関数Ｈａｓｈを予め記憶している。
ＭＡＣ生成部１１２は、ＭＡＣ対象データＤＭに対して、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを使用して、所定のビット長ｔ（ｔは１以上）からなるＭＡＣ値ＨＤＭを生成（算出）する。なお、ＭＡＣ生成部２１２にて生成されるＭＡＣ値のビット長は、暗号通信装置Ａ２０のＭＡＣ生成部１１２にて生成されるＭＡＣ値のビット長と同一である。【００９９】
ＭＡＣ生成部２１２は、レスポンスデータ生成部２１０からＭＡＣ生成指示と、チャレンジデータｎＡとを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部２１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、チャレンジデータｎＡに対するＭＡＣ値ＨｎＡ（＝Ｈａｓｈ（ＫＨ，ｎＡ））を算出し、算出したＭＡＣ値ＨｎＡをレスポンスデータ生成部２１０へ出力する。【０１００】
ＭＡＣ生成部２１２は、レスポンスデータ検証部２１１からＭＡＣ生成指示と、チャレンジデータｎＢとを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部２１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＭＡＣ用共有鍵ＫＨとを用いて、チャレンジデータｎＢに対するＭＡＣ値ＨｎＢ（＝Ｈａｓｈ（ＫＨ，ｎＢ））を算出し、算出したＭＡＣ値ＨｎＢをレスポンスデータ検証部２１１へ出力する。【０１０１】
ＭＡＣ生成部２１２は、ＭＡＣ生成指示と、暗号通信装置Ａ１０へ暗号化し送信するデータである暗号化対象データＤＢとを、ＤＥＭ暗号文生成部２１５から受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部２１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＭＡＣ用共有鍵ＫＨとを用いて、暗号化対象データＤＢに対するＭＡＣ値ＨＤＢ（＝Ｈａｓｈ（ＫＨ，ＤＢ））を算出し、算出したＭＡＣ値ＨＤＢをＤＥＭ暗号文生成部２１５へ出力する。【０１０２】
ＭＡＣ生成部２１２は、ＭＡＣ生成指示と、ＤＥＭ暗号文復号化部２１６から復号化データＤＡ’とを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部２１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＭＡＣ用共有鍵ＫＨとを用いて、復号化データＤＡ’に対するＭＡＣ値ＨＤＡ’（＝Ｈａｓｈ（ＫＨ，ＤＡ’））を算出し、算出したＭＡＣ値ＨＤＡ’をＤＥＭ暗号文生成部２１５へ出力する。【０１０３】
復号化データＤＡ’については、共通鍵復号化部２１４の説明の箇所で後述する。
（１１）共通鍵暗号化部２１３
共通鍵暗号化部２１３は、暗号化対象データＤＢと、暗号化を指示する旨の暗号化指示とを、ＤＥＭ暗号文生成部２１５から受け取ると、共有鍵格納部２０８に格納している共通鍵暗号用共有鍵ＫＳを取得する。【０１０４】
共通鍵暗号化部２１３は、取得した共通鍵暗号用共有鍵ＫＳと、共通鍵暗号アルゴリズムとを用いて、暗号化対象データＤＢを暗号化して、暗号化対象データＤＢに対する暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＢ））を生成する。ここで、Ｅｎｃ（ＫＳ，ＤＢ）は、鍵ＫＳを用いてデータＤＢを共通鍵暗号で暗号化した暗号文を意味する。共通鍵暗号は例えばＤＥＳ暗号やＡＥＳ暗号である。共通鍵暗号については、非特許文献２の７９〜１０５ページに記載されている。【０１０５】
共通鍵暗号化部２１３は、生成した暗号化データＥｎｃ（ＫＳ，ＤＢ）をＤＥＭ暗号文生成部２１５へ出力する。
（１２）共通鍵復号化部２１４
共通鍵復号化部２１４は、暗号化対象データＤＡを共通鍵暗号用共有鍵ＫＳで暗号化した暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））と、暗号化データの復号化を指示する旨の復号指示とを、ＤＥＭ暗号文復号化部２１６から受け取ると、共有鍵格納部２０８に格納している共通鍵暗号用共有鍵ＫＳを取得する。【０１０６】
共通鍵復号化部２１４は、取得した共通鍵暗号用共有鍵ＫＳと、共通鍵復号化アルゴリズムとを用いて、暗号化データＥｎｃ（ＫＳ，ＤＡ）を復号化して、復号化データＤＡ’を生成する。
共通鍵復号化部２１４は、生成した復号化データＤＡ’をＤＥＭ暗号文復号化部２１６へ出力する。【０１０７】
（１３）ＤＥＭ暗号文生成部２１５
ＤＥＭ暗号文生成部２１５は、外部から入出力部２０１を介して、暗号化対象データＤＢを受け取ると、暗号化指示と、受け取った暗号化対象データＤＢとを、共通鍵暗号化部２１３へ出力する。
ＤＥＭ暗号文生成部２１５は、ＭＡＣ指示と、受け取った暗号化対象データＤＢとをＭＡＣ生成部２１２へ出力する。【０１０８】
ＤＥＭ暗号文生成部２１５は、暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＢ））を共通鍵暗号化部２１３から受け取り、ＭＡＣ値ＨＤＢ（＝Ｈａｓｈ（ＫＨ，ＤＢ））をＭＡＣ生成部２１２から受け取ると、これらを連結して、ＤＥＭ暗号文ＤＥＭＢ（＝Ｅｎｃ（ＫＳ，ＤＢ）｜｜ＨＤＢ）を生成する。
ＤＥＭ暗号文生成部２１５は、生成したＤＥＭ暗号文ＤＥＭＢを、送受信部２０２を介して暗号通信装置Ａ１０へ送信する。【０１０９】
（１４）ＤＥＭ暗号文復号化部２１６
ＤＥＭ暗号文復号化部２１６は、暗号通信装置Ａ１０から送受信部２０２を介して、ＤＥＭ暗号文ＤＥＭＡ（＝ＥＤＡ｜｜ＨＤＡ）を受け取る。ここで、ＥＤＡは暗号化対象データＤＡを暗号通信装置Ａ１０が有する共通鍵暗号用共有鍵ＫＳにて暗号化された暗号化データ（Ｅｎｃ（ＫＳ，ＤＡ））であり、ＨＤＡは暗号化対象データＤＡに対するＭＡＣ値（Ｈａｓｈ（ＫＨ，ＤＡ））である。【０１１０】
ＤＥＭ暗号文復号化部２１６は、受け取ったＤＥＭ暗号文ＤＥＭＡ（＝ＥＤＡ｜｜ＨＤＡ）を暗号化データＥＤＡとＭＡＣ値ＨＤＡとに分離する。なお、ＤＥＭ暗号文復号化部２１６は、上記にて示すＤＥＭ暗号文復号化部１１６の分解の方法と同一の方法でＤＥＭ暗号文ＤＥＭＡの分解を行う。
ＤＥＭ暗号文復号化部２１６は、復号指示と、暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））とを共通鍵復号化部２１４へ出力する。【０１１１】
ＤＥＭ暗号文復号化部２１６は、復号化データＤＡ’を共通鍵復号化部２１４から受け取ると、ＭＡＣ指示と復号化データＤＡ’とをＭＡＣ生成部２１２へ出力する。
ＤＥＭ暗号文復号化部２１６は、ＭＡＣ値ＨＤＡ’（＝Ｈａｓｈ（ＫＨ、ＤＢ’））を受け取ると、ＤＥＭ暗号文ＤＥＭＡから分離したＨＤＡとを比較し、一致するか否かを判断する。【０１１２】
一致すると判断する場合には、ＤＥＭ暗号文復号化部２１６は、復号化データＤＡ’、つまり暗号化対象データＤＡを、入出力部２０１を介して外部へ出力する。
一致しないと判断する場合には、ＤＥＭ暗号文復号化部２１６は、暗号通信に係る処理全体を中止する。
（１５）入出力部２０１
入出力部２０１は、外部から暗号化対象データＤＢを受け付け、受け付けた暗号化対象データＤＢをＤＥＭ暗号文生成部２１５へ出力する。【０１１３】
入出力部２０１は、ＤＥＭ暗号文復号化部２１６から復号化データＤＡ’を受け取ると、受け取った復号化データＤＡ’を外部へ出力する。
（１６）送受信部２０２
送受信部２０２は、ＫＥＭ暗号文ＫＥＭＢをＫＥＭ暗号文生成部２０５から受け取ると、受け取ったＫＥＭ暗号文ＫＥＭＡを、通信路３０を介して暗号通信装置Ａ１０へ送信する。【０１１４】
送受信部２０２は、暗号通信装置Ａ１０から通信路３０を介して、ＫＥＭ暗号文ＫＥＭＡを受け取ると、受け取ったＫＥＭ暗号文ＫＥＭＡをＫＥＭ暗号文復号化部２０６へ出力する。
送受信部２０２は、チャレンジデータｎＢをチャレンジデータ生成部２０９から受け取ると、受け取ったチャレンジデータｎＢを、通信路３０を介して暗号通信装置Ａ１０へ送信する。【０１１５】
送受信部２０２は、レスポンスデータｒＢをレスポンスデータ生成部２１０から受け取ると、受け取ったレスポンスデータｒＢを、通信路３０を介して暗号通信装置Ａ１０へ送信する。
送受信部２０２は、暗号通信装置Ａ１０から通信路３０を介して、チャレンジデータｎＡとレスポンスデータｒＡとを、若しくはチャレンジデータｎＡのみを受け取ると、受け取ったチャレンジデータｎＡ及びレスポンスデータｒＡを、若しくはチャレンジデータｎＡを、レスポンスデータ生成部２１０へ出力する。【０１１６】
送受信部２０２は、暗号通信装置Ａ１０から通信路３０を介して、レスポンスデータｒＡを受け取ると、受け取ったレスポンスデータｒＡをレスポンスデータ検証部２１１へ出力する。
送受信部２０２は、ＤＥＭ暗号文ＤＥＭＢをＤＥＭ暗号文生成部２１５から受け取ると、受け取ったＤＥＭ暗号文ＤＥＭＢを、通信路３０を介して暗号通信装置Ａ１０へ送信する。【０１１７】
送受信部２０２は、暗号通信装置Ａ１０から通信路３０を介して、ＤＥＭ暗号文ＤＥＭＡを受け取ると、受け取ったＤＥＭ暗号文ＤＥＭＡをＤＥＭ暗号文復号化部２１６へ出力する。
１．４  暗号通信システム１の動作
（１）動作概要
暗号通信システム１の動作は、大きく分けて、暗号通信装置Ａ１０と暗号通信装置Ｂ２０が鍵を共有する鍵共有フェーズ、共有した鍵を使用して相互で認証するチャレンジ・レスポンス認証フェーズ、共有した鍵を使用してデータを送受信するデータ暗号通信フェーズからなる。【０１１８】
鍵共有フェーズでは、ＫＥＭを用いて暗号通信装置Ａ１０と暗号通信装置Ｂ２０とが相互認証及び鍵配送を行い、互いの装置にて鍵を共有する。
チャレンジ・レスポンス認証フェーズでは、共有した鍵を用いてチャレンジ・レスポンス認証を行うことにより、暗号通信装置Ａ１０と暗号通信装置Ｂ２０のそれぞれが、お互いの送信相手がなりすまし攻撃を行っていないことを確認する。【０１１９】
データ暗号通信フェーズでは、共有した鍵を用いて暗号通信装置Ａ１０と暗号通信装置Ｂ２０との間で通信路３０を介して暗号したデータの送受信を行う。
ここで、データとは、例えば、テキストデータ、音楽データ、画像データ、映画コンテンツデータである。
（２）動作
以下、暗号通信システム１の動作について、図４から図７にて示す流れ図を用いて説明する。【０１２０】
暗号通信装置Ａ１０のＫＥＭ暗号文生成部１０５は、公開鍵ＫＰＢと、ＫＥＭの公開鍵暗号化アルゴリズムＫｅｍＥとを用いて、鍵データＫＡ及び鍵データＫＡに対するＫＥＭ暗号文ＫＥＭＡを生成する（ステップＳ５）。
ＫＥＭ暗号文生成部１０５は、生成したＫＥＭ暗号文ＫＥＭＡを暗号通信装置Ｂ２０へ送信する（ステップＳ１０）。【０１２１】
暗号通信装置Ｂ２０のＫＥＭ暗号文復号化部２０６は、暗号通信装置Ａ１０から送受信部２０２を介して、ＫＥＭ暗号文ＫＥＭＡを受信する（ステップＳ１５）。
ＫＥＭ暗号文復号化部２０６は、公開鍵暗号化アルゴリズムＫｅｍＥに対応する公開鍵復号アルゴリズムＫｅｍＤ、及び秘密鍵ＫＳＢを用いて、受信したＫＥＭ暗号文ＫＥＭＡを復号化して、鍵データＫＡを生成する（ステップＳ２０）。【０１２２】
暗号通信装置Ｂ２０のＫＥＭ暗号文生成部２０５は、公開鍵ＫＰＡと、ＫＥＭの公開鍵暗号化アルゴリズムＫｅｍＥとを用いて、鍵データＫＢ及び鍵データＫＢに対するＫＥＭ暗号文ＫＥＭＢを生成する（ステップＳ２５）。
ＫＥＭ暗号文生成部２０５は、生成したＫＥＭ暗号文ＫＥＭＢを暗号通信装置Ａ１０へ送信する（ステップＳ３０）。【０１２３】
暗号通信装置Ｂ２０の共有鍵生成部２０７は、ＫＥＭ暗号文生成部２０５にて生成された鍵データＫＢと、ＫＥＭ暗号文復号化部２０６にて生成された鍵データＫＡとを用いて、共有鍵Ｋ（＝ＫＡ  ｘｏｒ  ＫＢ）を生成する（ステップＳ３５）。
共有鍵生成部２０７は、生成した共有鍵Ｋから共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを生成し（Ｋ＝ＫＳ｜｜ＫＨ）、生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを共有鍵格納部２０８に格納する（ステップＳ４０）。【０１２４】
暗号通信装置Ａ１０のＫＥＭ暗号文復号化部１０６は、暗号通信装置Ｂ２０から送受信部１０２を介して、ＫＥＭ暗号文ＫＥＭＢを受信する（ステップＳ４５）。
ＫＥＭ暗号文復号化部１０６は、公開鍵復号アルゴリズムＫｅｍＤ、及び秘密鍵ＫＳＡを用いて、受信したＫＥＭ暗号文ＫＥＭＢを復号化して、鍵データＫＢを生成する（ステップＳ５０）。【０１２５】
暗号通信装置Ａ１０の共有鍵生成部１０７は、ＫＥＭ暗号文生成部１０５にて生成された鍵データＫＡと、ＫＥＭ暗号文復号化部１０６にて生成された鍵データＫＢとを用いて、共有鍵Ｋ（＝ＫＡ  ｘｏｒ  ＫＢ）を生成する（ステップＳ５５）。
共有鍵生成部１０７は、生成した共有鍵Ｋを用いて、共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを生成し（Ｋ＝ＫＳ｜｜ＫＨ）、生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを共有鍵格納部１０８に格納する（ステップＳ６０）。【０１２６】
暗号通信装置Ａ１０のチャレンジデータ生成部１０９は、チャレンジデータｎＡを生成し（ステップＳ６５）、生成したチャレンジデータｎＡを暗号通信装置Ｂ２０へ送信する（ステップＳ７０）。
暗号通信装置Ｂ２０のレスポンスデータ生成部２１０は、暗号通信装置Ａ１０からチャレンジデータｎＡを受け取る（ステップＳ７５）。【０１２７】
暗号通信装置Ｂ２０のＭＡＣ生成部２１２は、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、予め記憶している鍵付ハッシュ関数Ｈａｓｈとを用いて、チャレンジデータｎＡに対するＭＡＣ値ＨｎＡ（＝Ｈａｓｈ（ＫＨ，ｎＡ））を算出し、算出したＭＡＣ値ＨｎＡをレスポンスデータｒＢとする（ステップＳ８０）。
暗号通信装置Ｂ２０のチャレンジデータ生成部２０９は、チャレンジデータｎＢを生成する（ステップＳ８５）。【０１２８】
チャレンジデータ生成部２０９はチャレンジデータｎＢを、レスポンスデータ生成部２１０はレスポンスデータｒＢを、それぞれ暗号通信装置Ａ１０へ送信する（ステップＳ９０）。
暗号通信装置Ａ１０のレスポンスデータ生成部１１０は、暗号通信装置Ｂ２０からチャレンジデータｎＢとレスポンスデータｒＢとを受け取る（ステップＳ９５）。【０１２９】
レスポンスデータ生成部１１０は、レスポンスデータｒＢと検証指示とをレスポンスデータ検証部１１１へ出力する。レスポンスデータ検証部１１１は、レスポンスデータ生成部１１０から検証指示とレスポンスデータｒＢとを受け取ると、チャレンジデータ生成部１０９にて一時的に記憶されているチャレンジデータｎＡを取得する。レスポンスデータ検証部１１１は、ＭＡＣ生成指示と、取得したチャレンジデータｎＡとをＭＡＣ生成部１１２へ出力する。ＭＡＣ生成部１１２は、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、チャレンジデータｎＡに対するＭＡＣ値ＨｎＡを算出し、算出したＭＡＣ値ＨｎＡをレスポンスデータ検証部１１１へ出力する。レスポンスデータ検証部１１１は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＡを受け取ると、ＭＡＣ値ＨｎＡとレスポンスデータｒＢとが一致するか否かを判断する（ステップＳ１００）。【０１３０】
一致しないと判断する場合には（ステップＳ１００における「ＮＧ」）、暗号通信に係る処理は中止される。
一致すると判断する場合には（ステップＳ１００における「ＯＫ」）、レスポンスデータ生成部１１０は、レスポンスデータ生成指示をレスポンスデータ生成部１１０へ出力する。レスポンスデータ生成部１１０は、レスポンスデータ検証部１１１からレスポンスデータ生成指示を受け取ると、ＭＡＣ生成指示と、一時的に記憶しているチャレンジデータｎＢとをＭＡＣ生成部１１２へ出力する。ＭＡＣ生成部１１２は、レスポンスデータ検証部１１１からＭＡＣ生成指示と、チャレンジデータｎＢとを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、チャレンジデータｎＢに対するＭＡＣ値ＨｎＢ（＝Ｈａｓｈ（ＫＨ，ｎＢ））を算出し、算出したＭＡＣ値ＨｎＢをレスポンスデータｒＡとする（ステップＳ１０５）。【０１３１】
レスポンスデータ生成部１１０は、レスポンスデータｒＡを暗号通信装置Ｂ２０へ送信する（ステップＳ１１０）。
暗号通信装置Ｂ２０のレスポンスデータ検証部２１１は、暗号通信装置Ａ１０からレスポンスデータｒＡを受け取る（ステップＳ１１５）。
レスポンスデータ検証部２１１は、チャレンジデータ生成部２０９にて一時的に記憶されているチャレンジデータｎＢを取得する。レスポンスデータ検証部２１１は、ＭＡＣ生成指示と、取得したチャレンジデータｎＢとをＭＡＣ生成部２１２へ出力する。ＭＡＣ生成部２１２は、レスポンスデータ検証部２１１からＭＡＣ生成指示と、チャレンジデータｎＢとを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、チャレンジデータｎＢに対するＭＡＣ値ＨｎＢを算出し、算出したＭＡＣ値ＨｎＢをレスポンスデータ検証部２１１へ出力する。レスポンスデータ検証部２１１は、ＭＡＣ生成部２１２からＭＡＣ値ＨｎＢを受け取ると、ＭＡＣ値ＨｎＢとレスポンスデータｒＡとが一致するか否かを判断する（ステップＳ１２０）。【０１３２】
一致しないと判断する場合には（ステップＳ１２０における「ＮＧ」）、暗号通信に係る処理は中止される。
一致すると判断する場合には（ステップＳ１２０における「ＯＫ」）、暗号通信に係る処理は続行される。
暗号通信装置Ａ１０のＤＥＭ暗号文生成部１１５は、外部から入出力部１０１を介して、暗号化対象データＤＡを受け取る（ステップＳ１２５）。【０１３３】
暗号通信装置Ａ１０の共通鍵暗号化部１１３は、共有鍵格納部１０８に格納している共通鍵暗号用共有鍵ＫＳと、共通鍵暗号アルゴリズムとを用いて、ＤＥＭ暗号文生成部１１５が受け取った暗号化対象データＤＡを暗号化して、暗号化対象データＤＡに対する暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））を生成する（ステップＳ１３０）。
暗号通信装置Ａ１０のＭＡＣ生成部１１２は、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨと鍵付ハッシュ関数Ｈａｓｈとを用いて、ＤＥＭ暗号文生成部１１５が受け取った暗号化対象データＤＡに対するＭＡＣ値ＨＤＡ（＝Ｈａｓｈ（ＫＨ，ＤＡ））を算出する（ステップＳ１３５）。【０１３４】
ＤＥＭ暗号文生成部１１５は、共通鍵暗号化部１１３にて生成された暗号化データＥＤＡと、ＭＡＣ生成部１１２にて算出されたＭＡＣ値ＨＤＡとを連結して、ＤＥＭ暗号文ＤＥＭＡ（＝Ｅｎｃ（ＫＳ，ＤＡ）｜｜ＨＤＡ）を生成する（ステップＳ１４０）。
ＤＥＭ暗号文生成部１１５は、生成したＤＥＭ暗号文ＤＥＭＡを、暗号通信装置Ｂ２０へ送信する（ステップＳ１４５）。【０１３５】
暗号通信装置Ｂ２０のＤＥＭ暗号文復号化部２１６は、暗号通信装置Ａ１０からＤＥＭ暗号文ＤＥＭＡを受け取る（ステップＳ１５０）。
ＤＥＭ暗号文復号化部２１６は、受け取ったＤＥＭ暗号文ＤＥＭＡを暗号化データＥＤＡとＭＡＣ値ＨＤＡとに分離する（ステップＳ１５５）。
暗号通信装置Ｂ２０の共通鍵復号化部２１４は、共有鍵格納部２０８に格納している共通鍵暗号用共有鍵ＫＳと、共通鍵復号化アルゴリズムとを用いて、ＤＥＭ暗号文復号化部２１６が取得した暗号化データＥＤＡを復号化して、復号化データＤＡ’を生成する（ステップＳ１６０）。【０１３６】
暗号通信装置Ｂ２０のＭＡＣ生成部２１２は、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、共通鍵復号化部２１４にて生成された復号化データＤＡ’に対するＭＡＣ値ＨＤＡ’（＝Ｈａｓｈ（ＫＨ，ＤＡ’））を算出する（ステップＳ１６５）。
ＤＥＭ暗号文復号化部２１６は、ＭＡＣ生成部２１２にて算出されたＭＡＣ値ＨＤＡ’（＝Ｈａｓｈ（ＫＨ、ＤＢ’））と、ＤＥＭ暗号文ＤＥＭＡから分離したＨＤＡとを比較し、一致するか否かを判断する（ステップＳ１７０）。【０１３７】
一致しないと判断する場合には（ステップＳ１７０における「ＮＧ」）、暗号通信に係る処理は中止される。
一致すると判断する場合には（ステップＳ１７０における「ＯＫ」）、ＤＥＭ暗号文復号化部２１６は、復号化データＤＡ’、つまり暗号化対象データＤＡを、入出力部２０１を介して外部へ出力する（ステップＳ１７５）。【０１３８】
暗号通信装置Ｂ２０のＤＥＭ暗号文生成部２１５は、外部から入出力部２０１を介して、暗号化対象データＤＢを受け取る（ステップＳ１８０）。
暗号通信装置Ｂ２０の共通鍵暗号化部２１３は、共有鍵格納部２０８に格納している共通鍵暗号用共有鍵ＫＳと、共通鍵暗号アルゴリズムとを用いて、ＤＥＭ暗号文生成部２１５が受け取った暗号化対象データＤＢを暗号化して、暗号化対象データＤＢに対する暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＡ））を生成する（ステップＳ１８５）。【０１３９】
暗号通信装置Ｂ２０のＭＡＣ生成部２１２は、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、ＤＥＭ暗号文生成部２１５が受け取った暗号化対象データＤＢに対するＭＡＣ値ＨＤＢ（＝Ｈａｓｈ（ＫＨ，ＤＢ））を算出する（ステップＳ１９０）。
ＤＥＭ暗号文生成部２１５は、共通鍵暗号化部２１３にて生成された暗号化データＥＤＢと、ＭＡＣ生成部２１２にて算出されたＭＡＣ値ＨＤＢとを連結して、ＤＥＭ暗号文ＤＥＭＢ（＝Ｅｎｃ（ＫＳ，ＤＢ）｜｜ＨＤＢ）を生成する（ステップＳ１９５）。【０１４０】
ＤＥＭ暗号文生成部２１５は、生成したＤＥＭ暗号文ＤＥＭＢを暗号通信装置Ａ１０へ送信する（ステップＳ２００）。
暗号通信装置Ａ１０のＤＥＭ暗号文復号化部１１６は、暗号通信装置Ｂ２０からＤＥＭ暗号文ＤＥＭＢを受け取る（ステップＳ２０５）。
ＤＥＭ暗号文復号化部１１６は、受け取ったＤＥＭ暗号文ＤＥＭＢ（＝ＥＤＢ｜｜ＨＤＢ）を暗号化データＥＤＢとＭＡＣ値ＨＤＢとに分離する（ステップＳ２１０）。【０１４１】
暗号通信装置Ａ１０の共通鍵復号化部１１４は、共有鍵格納部１０８に格納している共通鍵暗号用共有鍵ＫＳと共通鍵復号化アルゴリズムとを用いて、ＤＥＭ暗号文復号化部１１６が取得した暗号化データＥＤＢを復号化して、復号化データＤＢ’を生成する（ステップＳ２１５）。
暗号通信装置Ａ１０のＭＡＣ生成部１１２は、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、共通鍵復号化部１１４にて生成された復号化データＤＢ’に対するＭＡＣ値ＨＤＢ’（＝Ｈａｓｈ（ＫＨ，ＤＢ’））を算出する（ステップＳ２２０）。【０１４２】
ＤＥＭ暗号文復号化部１１６は、ＭＡＣ生成部１１２にて算出されたＭＡＣ値ＨＤＢ’と、ＤＥＭ暗号文ＤＥＭＢから分離したＨＤＢとを比較し、一致するか否かを判断する（ステップＳ２２５）。
一致しないと判断する場合には（ステップＳ２２５における「ＮＧ」）、暗号通信に係る処理は中止される。【０１４３】
一致すると判断する場合には（ステップＳ２３０における「ＯＫ」）、ＤＥＭ暗号文復号化部１１６は、復号化データＤＢ’、つまり暗号化対象データＤＢを、入出力部１０１を介して外部へ出力する（ステップＳ２３０）。
ここで、鍵共有フェーズはステップＳ５からステップＳ６０までの処理に、チャレンジ・レスポンス認証フェーズはステップＳ６５からステップＳ１２０までの処理に、データ暗号通信フェーズはステップＳ１２５からステップＳ２３０までの処理に、それぞれ相当する。【０１４４】
１．５  第１の実施の形態の効果
第１の実施の形態では、鍵カプセル化メカニズム（ＫＥＭ）と、ＤＥＭ暗号文を送信する処理に、ＭＡＣ用共有鍵を用いたチャレンジ・レスポンス認証を実行する処理を追加することで、共有鍵の漏洩の困難性だけでなく、なりすまし攻撃に対する安全性を保証できる。【０１４５】
以下に、それを詳細に説明する。
鍵カプセル化メカニズムで共有した鍵を用いて、データに対して、暗号化した暗号化データとそのデータに対する鍵付ハッシュ関数値を送信するような方式であれば、データ暗号化方法として、困難な数学上の問題を根拠にして共有鍵の漏洩や暗号文データに対する平文データの漏洩に関する安全性証明を可能であることが保証されている。【０１４６】
なお、これについては、著者Ｖｉｃｔｏｒ  Ｓｈｏｕｐにより“Ａ  ｐｒｏｐｏｓａｌ  ｆｏｒ  ａｎ  ＩＳＯ  ｓｔａｎｄａｒｄ  ｆｏｒ  ｐｕｂｌｉｃ  ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ  （ｖｅｒｓｉｏｎ  ２．１）”に記載されているので、ここでの説明は省略する。
本方式は、同様に、鍵カプセル化メカニズムで共有した鍵を用いて、データに対して、暗号化した暗号化データとそのデータに対する鍵付ハッシュ値を送信しているため、同様の安全性が保証できる。【０１４７】
また、暗号通信装置Ａ１０において、正しい秘密鍵ＫＳＡを保持していなければ、ＫＥＭ暗号文ＫＥＭＢを復号化して鍵データＫＢを取得できないため、暗号通信装置Ｂ２０と共有した共通鍵暗号用共有鍵ＫＳ及びＭＡＣ用共有鍵ＫＨを得られない。そのため、ステップＳ２１５にて暗号データＥＤＢの復号化ができない。また、暗号通信装置Ｂ２０も同様に、正しい秘密鍵ＫＳＢを保持していなければ、ＫＥＭ暗号文ＫＥＭＡを復号化して鍵データＫＡを取得できないため、暗号通信装置Ａ１０と共有した共通鍵暗号用共有鍵ＫＳ及びＭＡＣ用共有鍵ＫＨを得られない。そのため、ステップＳ１６０にて暗号化データＥＤＡの復号化ができない。鍵データＫＡまたは、鍵データＫＢを正しく取得するためには、正しい秘密鍵ＫＳＡまたは、ＫＳＢが必要である。【０１４８】
したがって、両方の機器からＫＥＭ暗号文ＫＥＭＢ、ＫＥＭＡを送りあうことにより、双方向の認証が実現できている。
さらに、第１の実施の形態では、ＭＡＣ用共有鍵ＫＨを用いたチャレンジ・レスポンス認証を実行している。正しい暗号通信装置であると判定されるためには、正しいレスポンスデータを送信する必要がある。第１の実施の形態では、レスポンスデータを生成するために、ＤＥＭ暗号文生成部で使用するＭＡＣ生成部を使用する。ＤＥＭ暗号文生成部で使用するＭＡＣ生成部では、ＭＡＣ用共有鍵ＫＨを知らない限り、正しいレスポンスデータを生成できる確率は非常に低い。【０１４９】
したがって、正しいレスポンスデータを生成できる場合、すなわち、認証を通過してなりすまし攻撃が可能である場合、攻撃者はＭＡＣ用共有鍵ＫＨを知っていることになる。しかし、ＭＡＣ用共有鍵ＫＨに限らず、ＫＥＭを用いて生成した各共有鍵の漏洩は困難（共有鍵の漏洩に対して安全）であることが証明可能であるため、なりすまし攻撃が困難であることが証明可能となる。【０１５０】
以上より、鍵漏洩や平文漏洩の安全性だけでなく、なりすまし攻撃に対する安全性を保証できる認証鍵共有を実現でき、その価値は大きい。
１．６  暗号通信システム１の変形例
上記実施の形態では、暗号通信システム１は２台の暗号通信装置から構成されるとしたが、これに限定されない。【０１５１】
本発明における暗号通信システムは、１台のコンピュータ装置内において、耐タンパ性を有する領域Ａと他の領域Ｂとにおいてデータを送受信（入出力）する際に暗号通信を行う２つのプログラムからなるとしてもよい。これら２つのプログラムは、コンピュータ装置によって実行され、実行された２つのプログラム間で、本発明の暗号通信が行われる。
ここで、暗号通信を行う２つのプログラムをプログラムＡ及びＢとし、プログラムＡは領域Ａに存在し、プログラムＢは領域Ｂに存在するものとする。【０１５２】
プログラムＡ及びプログラムＢのそれぞれは、入出力ステップ、送受信部ステップ、ＫＥＭ暗号文生成ステップ、ＫＥＭ暗号文復号化ステップ、共有鍵生成ステップ、チャレンジデータ生成ステップ、レスポンスデータ生成ステップ、レスポンスデータ検証ステップ、ＭＡＣ生成ステップ、共通鍵暗号化ステップ、共有鍵復号化ステップ、ＤＥＭ暗号文生成ステップ、及びＤＥＭ暗号文復号化ステップを含んでいる。【０１５３】
また、領域Ａ及びＢは、上記にて示す暗号通信装置と同様に、通信相手の公開鍵を格納している公開鍵格納部、自身の秘密鍵を格納している秘密鍵格納部、及び共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを格納する領域を有している共有鍵格納部を有している。ここで、領域Ａにおける各格納部の内容は、領域Ａが耐タンパ性を有しているので外部へは漏洩されないようになっているが、領域Ｂにおける各格納部の内容についても外部へは漏洩されない仕組み（例えば、耐タンパ性）になっているものとする。【０１５４】
各ステップが上記の実施の形態にて示す各構成要素と同様の動作を行うことで、上記と同様に、鍵共有フェーズ、チャレンジ・レスポンス認証フェーズ及びデータ暗号通信フェーズが実現されるので、各ステップの動作についての説明は省略する。
なお、ここでは、本発明を２つのプログラム間における暗号通信に適用したが、これに限定されない。【０１５５】
本発明は、暗号通信装置とプログラムとの間における暗号通信に適用してもよい。具体的には、暗号通信装置をＤＶＤ装置とし、プログラムがＤＶＤに記録されているとした場合における暗号通信に適用してもよい。なお、プログラムは、ＤＶＤ装置内における実行手段にて実行され、ＤＶＤ装置に具備された構成要素（例えば、暗号通信装置Ａ１０と同様の構成要素）と、実行されたプログラム間で、本発明の暗号通信が行われる。【０１５６】
１．７  その他の変形例
上記に説明した実施の形態は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
（１）上記の実施の形態において、暗号通信装置Ａ１０及び暗号通信装置Ｂ２０のそれぞれからデータを送受信したが、これに限定されない。【０１５７】
１の暗号通信装置（例えば、暗号通信装置Ａ１０）のみがデータを送信し、他の暗号通信装置（例えば、暗号通信装置Ｂ２０）のみがデータを受信としてもよい。
（２）上記の実施の形態において、鍵共有フェーズとチャレンジ・レスポンス認証フェーズの間や、チャレンジ・レスポンス認証フェーズとデータ暗号通信フェーズの間には、その他の何らかの処理、例えば、機器の機能（音楽視聴機能、映画視聴機能や放送受信機能など）の確認処理が途中に含まれてもよい。また、各フェーズの内部の処理ステップの順番は、上記で示したものに限らない。【０１５８】
（３）上記の実施の形態において、チャレンジ・レスポンス認証フェーズでは、各暗号通信装置は、ランダムに生成したチャレンジデータを通信相手の装置へ送信しているが、これに限定されない。
各暗号通信装置は、通信相手からのＫＥＭ暗号文から求められる鍵データ（暗号通信装置Ａ１０であれば鍵データＫＢ、暗号通信装置Ｂ２０であれば鍵データＫＡ）をチャレンジデータとしてもよい。【０１５９】
そうすることで、チャレンジデータを送信する処理を削減できる。この時、相手先では、自身が生成した鍵データとチャレンジデータとして送信された鍵データとが一致するか否かを確認することでチャレンジ・レスポンス認証フェーズと同様の認証が行える。
例えば、暗号通信装置Ａ１０は、暗号通信装置Ｂ２０からチャレンジデータｒＢ（＝Ｈａｓｈ（ＫＨ，ＫＡ））を受け取ると、自身が生成したＫＡに対するＭＡＣ値を算出し、算出したＭＡＣ値とチャレンジデータｒＢとが一致するか否かを判断することにより、通信相手の認証を行う。【０１６０】
また、暗号通信装置Ｂ２０は、暗号通信装置Ａ１０からチャレンジデータｒＡ（＝Ｈａｓｈ（ＫＨ，ＫＢ））を受け取ると、自身が生成したＫＢに対するＭＡＣ値を算出し、算出したＭＡＣ値とチャレンジデータｒＡとが一致するか否かを判断することにより、通信相手の認証を行う。
（４）上記実施の形態において、各暗号通信装置の共有鍵生成部は、共有鍵Ｋを生成し、生成した共有鍵Ｋの一部を共通鍵暗号用共有鍵ＫＳとし、それ以外の部分をＭＡＣ用共有鍵ＫＨとしたが、これに限定されない。【０１６１】
各暗号通信装置の共有鍵生成部は、生成した共有鍵Ｋそのものを、共通鍵暗号用共有鍵ＫＳ及びＭＡＣ用共有鍵ＫＨとしてもよい。つまり、Ｋ＝ＫＳ＝ＫＨである。
（５）上記の実施の形態において、各暗号通信装置の共有鍵生成部は、共有鍵Ｋを生成する際に鍵ＫＡと鍵ＫＢの排他的論理和を用いて生成したが、これに限定されない。
共有鍵生成部は、ＭＡＣ生成部で使用しているハッシュ関数Ｈａｓｈを使用して、共有鍵Ｋを生成してもよい。【０１６２】
例えば、各暗号通信装置の共有鍵生成部は、Ｈａｓｈ（ＫＡ，ＫＢ）を共有鍵Ｋとしてもよいし、Ｈａｓｈ（ＫＢ，ＫＡ）を共有鍵Ｋとしてもよい。
また、ハッシュ関数Ｈａｓｈを上記実施の形態にて示すＳＨＡ１とする場合、各暗号通信装置の共有鍵生成部は、ＳＨＡ１（ＫＡ｜｜ＫＢ）を共有鍵Ｋとしてもよいし、ＳＨＡ１（ＫＢ｜｜ＫＡ）を共有鍵Ｋとしてもよい。【０１６３】
これにより、共有鍵生成における安全性が向上する。
（６）上記の実施の形態において、各暗号通信装置は、通信相手の公開鍵を予め、公開鍵格納部に格納しているが、これに限定されない。
暗号通信装置は、証明書センタが発行した公開鍵証明書（公開鍵に対する証明書センタの署名と、公開鍵そのものとを含む）を、通信相手に送信するとしてもよい。例えば、暗号通信装置Ａ１０は通信相手である暗号通信装置Ｂ２０から公開鍵ＫＰＢに対する公開鍵証明書を受け取り、暗号通信装置Ｂ２０は通信相手である暗号通信装置Ａ１０から公開鍵ＫＰＡに対する公開鍵証明書を受け取る。【０１６４】
その場合、通信相手である暗号通信装置は、証明書センタの公開鍵を有しており、鍵共有フェーズの前に、互いの公開鍵証明書を証明書センタの公開鍵を用いて検証し、正しい証明書と判定したときに公開鍵格納部に、公開鍵証明書に含まれる公開鍵を格納する。
また、各暗号通信装置は、公開鍵証明書を証明書センタから受け取るとしてもよい。
（７）上記の実施の形態において、チャレンジ・レスポンス認証を行う際に、鍵付ハッシュ値を計算する方法を用いたが、これに限定されない。【０１６５】
例えば、チャレンジデータをＭＡＣ用共有鍵ＫＨで暗号化して生成したレスポンスデータをやりとりするとしてもよい。
この場合における検証は、レスポンスデータの暗号化を解いた結果と送信元が保持しているチャレンジデータとを比較してもよいし、送信元が保持しているチャレンジデータを同様の方法で暗号化した結果とレスポンスデータとを比較してもよい。【０１６６】
また、認証方法もチャレンジ・レスポンスに限定されるものではない。ＫＥＭにより共有した鍵データが認証結果に影響するような認証方法であれば、どのようなものでも構わない。
また、チャレンジ・レスポンス認証においても、上記実施の形態にて示す認証方法に限定されない。上記にて示す方法とは異なる方法によるチャレンジ・レスポンス認証であってもよい。【０１６７】
以下、その一例について説明する。なお、ここでは、暗号通信装置Ａ１０が暗号通信装置Ｂ２０を認証する場合について、図５にて示すステップＳ６５からＳ１００までの変更点を中心に説明する。
暗号通信装置Ａ１０はステップＳ６５を実行後、生成したチャレンジデータｎＡを暗号通信装置Ａ１０が有するＭＡＣ用共有鍵ＫＨにて暗号化して暗号化データＥｎｃ（ＫＨ，ｎＡ）を生成する。【０１６８】
暗号通信装置Ａ１０は、ステップＳ７０において、生成した暗号化データＥｎｃ（ＫＨ，ｎＡ）を暗号化通信装置Ｂ２０へ送信する。
暗号通信装置Ｂ２０は、ステップＳ７５にて、暗号化データＥｎｃ（ＫＨ，ｎＡ）を受信する。
暗号通信装置Ｂ２０は、ステップＳ８０にて、受信した暗号化データＥｎｃ（ＫＨ，ｎＡ）を自身が有するＭＡＣ用共有鍵ＫＨにて復号し、復号データｎＡ’を生成し、生成した復号データｎＡ’をレスポンスデータｒＢ（＝ｎＡ’）とする。【０１６９】
暗号通信装置Ｂ２０は、ステップＳ８５、Ｓ９０を実行する。
暗号化通信装置Ａ１０は、ステップＳ９５の実行後、受け取ったレスポンスデータと、自身が記憶しているチャレンジデータｎＡを比較して暗号通信装置Ｂ２０の正当性を判断する。
なお、ステップＳ８５において、暗号通信装置Ｂ２０は、生成したチャレンジデータｎＢを暗号通信装置Ｂ２０が有するＭＡＣ用共有鍵ＫＨにて暗号化して暗号化データＥｎｃ（ＫＨ，ｎＢ）を生成してもよい。このとき、暗号通信装置Ａ１０は、ステップＳ１０５にて、受信した暗号化データＥｎｃ（ＫＨ，ｎＢ）を自身が有するＭＡＣ用共有鍵ＫＨにて復号し、復号データｎＢ’を生成し、生成した復号データｎＢ’をレスポンスデータｒＡ（＝ｎＢ’）とする。【０１７０】
（８）上記の実施の形態において、双方向でチャレンジ・レスポンス認証を行っているが、これに限定されない。
片方向のチャレンジ・レスポンス認証であってもよい。その場合においても、被認証者のなりすまし攻撃に対する安全性証明が可能である。
なお、この場合には、ＭＡＣ用共有鍵ＫＨを作成する必要はなく、鍵データＫＡや鍵データＫＢを直接用いて認証を行うとしてもよい。つまり、片方向の認証であるので、ＫＥＭ暗号文の受信先が正しい秘密鍵を持っていれば、鍵データＫＡ若しくは鍵データＫＢを取得できるので、取得した鍵データを用いて認証を行えばよい。【０１７１】
この場合、例えば、鍵データＫＡを共有した場合に、暗号通信装置Ｂ２０から暗号通信装置Ａ１０へ片方向認証を行うことにより、簡易な相互認証を行うこともできる。すなわち、鍵データを共有できていることから、暗号通信装置Ｂ２０は正当な秘密鍵ＫＳＢを持っていることが確認できるので、暗号通信装置Ｂ２０が正当なものであることが確認できる。その後、チャレンジ・レスポンス認証によって、暗号通信装置Ａ１０が鍵データＫＡを共有している装置であるか否かが確認されるので、暗号通信装置Ａ１０の正当性を確認できる。【０１７２】
また、ＭＡＣ用共有鍵ＫＨを生成した上で、これを用いて片方向の認証を行ってもよいし、上記の場合でも暗号通信装置Ａ１０から暗号通信装置Ｂ２０への片方向認証を行ってもよいことは言うまでもない。
（９）上記の実施の形態において、暗号通信装置Ｂ２０はＩＣ機能付のメモリカードであるとしてもよい。【０１７３】
ＩＣ機能付のメモリカードの構成は、暗号通信装置Ｂ２０と同様の構成要素で実現できるので、ここでの説明は省略する。
なお、本発明において、ＩＣ機能付のメモリカードは、暗号通信装置の概念に含めるものとする。つまり、本発明は、２つのＩＣ機能付のメモリカード間における暗号通信に適用してもよいし、上記にて示す暗号通信装置Ａ１０とＩＣ機能付のメモリカード間における暗号通信に適用してもよい。【０１７４】
（１０）上記の実施の形態において、共有鍵生成部１０７及び２０７は、共有鍵データＫに対してＫ＝ＫＳ｜｜ＫＨを満たすように共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを取得するとしたが、これに限定されない。
共有鍵生成部１０７及び２０７は、共有鍵データＫに対してＫ＝ＫＨ｜｜ＫＳを満たすように共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを取得してもよい。【０１７５】
例えば、共有鍵データＫに対して別々の変換を施して得られる２つの値をそれぞれ共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとしてもよい。
つまり、共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨのそれぞれは、共有鍵データＫに依存して決まる値であればよい。
（１１）上記実施の形態において、暗号通信装置Ｂ２０は、レスポンスデータｒＢとチャレンジデータｎＢとを一緒に、暗号通信装置Ａ１０へ送信したが、これに限定されない。【０１７６】
レスポンスデータｒＢとチャレンジデータｎＢとを別々のタイミングで暗号通信装置Ａ１０へ送信してもよい。この場合、暗号通信装置Ａ１０は、レスポンスデータｒＢとチャレンジデータｎＢとを別々のタイミングで受信してもよい。
（１２）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。【０１７７】
（１３）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。【０１７８】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。【０１７９】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
（１４）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。【０１８０】
（１５）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
（１６）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。【０１８１】
（１７）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
（１８）また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。【０１８２】
（１９）また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（２０）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。【０１８３】
１．８  まとめ
（１）本発明は、第１の暗号通信装置と第２の暗号通信装置を備え、前記第１の暗号通信装置と前記第２の暗号通信装置との間で鍵配送を行い、共有した鍵を用いて前記第１の暗号通信装置から前記第２の暗号通信装置へコンテンツデータを送信する暗号通信システムであって、前記第１の暗号通信装置は、前記コンテンツデータの入力を受け付ける入力部と、前記第２の暗号通信装置へデータを送信し、前記第２の暗号通信装置からデータ受信する第１の送受信部と、第１の鍵と第１の鍵を暗号化した第１の鍵暗号文を生成する第１の鍵暗号文生成部と、第２の鍵暗号文を復号化して第１の復号化鍵を生成する第１の鍵暗号文復号化部と、前記第１の鍵と前記第１の復号化鍵に基づき第１の共有鍵を生成する第１の共有鍵生成部と、前記第１の共有鍵を格納する第１の共有鍵格納部と、第１のチャレンジデータを生成する第１のチャレンジデータ生成部と、第２のチャレンジデータに対する第１のレスポンスデータを生成する第１のレスポンスデータ生成部と、第２のレスポンスデータを検証する第１のレスポンスデータ検証部と、前記コンテンツデータを暗号化して暗号化コンテンツデータを生成するデータ暗号文生成部とを備え、前記第２の暗号通信装置は、復号化コンテンツデータを出力する出力部と、前記第１の暗号通信装置へデータを送信し、前記第１の暗号通信装置からデータ受信する第２の送受信部と、第２の鍵と第２の鍵を暗号化した前記第２の鍵暗号文を生成する第２の鍵暗号文生成部と、前記第１の鍵暗号文を復号化して第２の復号化鍵を生成する第２の鍵暗号文復号化部と、前記第２の鍵と前記第２の復号化鍵に基づき第２の共有鍵を生成する第２の共有鍵生成部と、前記第２の共有鍵を格納する第２の共有鍵格納部と、前記第２のチャレンジデータを生成する第２のチャレンジデータ生成部と、前記第１のチャレンジデータに対する前記第２のレスポンスデータを生成する第２のレスポンスデータ生成部と、前記第１のレスポンスデータを検証する第２のレスポンスデータ検証部と、前記暗号化コンテンツデータを復号化して前記復号化コンテンツデータを生成するデータ暗号文復号化部とを備え、前記第１のレスポンスデータ生成部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第１のレスポンスデータとし、前記第１のレスポンスデータ検証部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第２のレスポンスデータの検証に用い、前記データ暗号文生成部は、前記暗号化コンテンツデータを前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値、データ暗号文用鍵付ハッシュ関数を使用して生成し、前記第２のレスポンスデータ生成部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第２のレスポンスデータとし、前記第２のレスポンスデータ検証部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第１のレスポンスデータの検証に用い、前記データ暗号文復号化部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。【０１８４】
（２）上記（１）において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、同一であるとしてもよい。
（３）上記（１）において、前記第１の鍵暗号文及び前記第２の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
（４）上記（１）から（３）の何れかにおいて、前記第１の共有鍵生成部は、前記第１の鍵と前記第１の復号化鍵の排他的論理和を前記第１の共有鍵として出力し、前記第２の共有鍵生成部は、前記第２の鍵と前記第２の復号化鍵の排他的論理和を前記第２の共有鍵として出力するとしてもよい。【０１８５】
（５）上記（１）から（３）の何れかにおいて、前記第１の共有鍵生成部は、前記第１の鍵と前記第１の復号化鍵をビット連結したものに対して、共有鍵を生成するハッシュ関数である共有鍵生成ハッシュ関数を用いて計算したハッシュ値を前記第１の共有鍵として出力し、前記第２の共有鍵生成部は、前記第２の会議と前記第２の復号化鍵をビット連結したものに対して、前記共有鍵生成ハッシュ関数を用いて計算したハッシュ値を前記第２の共有鍵として出力するとしてもよい。【０１８６】
（６）上記（５）において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
（７）上記（１）から（６）の何れかにおいて、前記第１の暗号通信装置は、第１のチャレンジデータ生成部を備えず、前記第１のチャレンジデータを前記第１の鍵とし、前記第２の暗号通信装置は、第２のチャレンジデータ生成部を備えず、前記第２のチャレンジデータを前記第２の鍵とするとしてもよい。【０１８７】
（８）また、本発明は、コンテンツ送信装置とコンテンツ受信装置を備え、前記コンテンツ送信装置と前記コンテンツ受信装置との間で鍵配送を行い、共有した鍵を用いて暗号化通信を行う暗号通信システムにおけるコンテンツ送信装置であって、前記コンテンツデータの入力を受け付ける入力部と、前記コンテンツ受信装置へデータを送信し、前記コンテンツ受信装置からデータを受信する送受信部と、第１の鍵と第１の鍵を暗号化した第１の鍵暗号文を生成する第１の鍵暗号文生成部と、前記コンテンツ受信装置から送信される第２の鍵暗号文を復号化して第１の復号化鍵を生成する第１の鍵暗号文復号化部と、前記第１の鍵と前記第１の復号化鍵に基づき第１の共有鍵を生成する共有鍵生成部と、前記第１の共有鍵を格納する共有鍵格納部と、第１のチャレンジデータを生成するチャレンジデータ生成部と、前記コンテンツ受信装置から送信された第２のチャレンジデータに対する第１のレスポンスデータを生成するレスポンスデータ生成部と、前記コンテンツ受信装置から送信される第２のレスポンスデータを検証するレスポンスデータ検証部と、前記コンテンツデータを暗号化して暗号化コンテンツデータを生成するデータ暗号文生成部とを備え、前記レスポンスデータ生成部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第１のレスポンスデータとし、前記レスポンスデータ検証部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第２のレスポンスデータの検証に用い、  前記データ暗号文生成部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。【０１８８】
（９）上記（８）において、前記第１の鍵暗号文及び前記第２の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
（１０）上記（９）において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数とは、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。【０１８９】
（１１）また、本発明は、コンテンツ送信装置とコンテンツ受信装置を備え、前記コンテンツ送信装置と前記コンテンツ受信装置との間で鍵配送を行い、共有した鍵を用いて暗号化通信を行う暗号通信システムにおけるコンテンツ受信装置であって、復号化コンテンツデータを出力する出力部と、前記コンテンツ送信装置へデータを送信し、前記コンテンツ送信装置からデータ受信する送受信部と、第２の鍵と第２の鍵を暗号化した第２の鍵暗号文を生成する第２の鍵暗号文生成部と、前記コンテンツ送信装置から送信される第１の鍵暗号文を復号化して第２の復号化鍵を生成する第２の鍵暗号文復号化部と、前記第２の鍵と前記第２の復号化鍵に基づき第２の共有鍵を生成する共有鍵生成部と、前記第２の共有鍵を格納する共有鍵格納部と、第２のチャレンジデータを生成するチャレンジデータ生成部と、前記コンテンツ送信装置から送信される第１のチャレンジデータに対する前記第２のレスポンスデータを生成するレスポンスデータ生成部と、前記コンテンツ送信装置から送信される前記第１のレスポンスデータを検証するレスポンスデータ検証部と、前記コンテンツ送信装置から送信される暗号化コンテンツデータを復号化して前記復号化コンテンツデータを生成するデータ暗号文復号化部とを備え、  前記レスポンスデータ生成部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第２のレスポンスデータとし、前記レスポンスデータ検証部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第１のレスポンスデータの検証に用い、前記データ暗号文復号化部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。【０１９０】
（１２）上記（１１）において、前記第１の鍵暗号文及び前記第２の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
（１３）上記（１１）、（１２）の何れかにおいて、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。【０１９１】
（１４）これらの構成によると、鍵カプセル化メカニズムを使用した鍵共有の後に、共有した鍵を用いたチャレンジ・レスポンス認証を追加することにより、なりすまし攻撃の安全性を保証できるため、その価値は大きい。
【産業上の利用可能性】
【０１９２】
本発明を構成する各装置、各方法及びコンピュータプログラムは、情報を安全かつ確実に扱う必要があるあらゆる産業において、経営的に、また継続的及び反復的に使用することができる。
また、本発明を構成する各装置、各方法及び各コンピュータプログラムは、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
【図１】
2007125877.tif 000003
【図２】
2007125877.tif 000004
【図３】
2007125877.tif 000005
【図４】
2007125877.tif 000006
【図５】
2007125877.tif 000007
【図６】
2007125877.tif 000008
【図７】
2007125877.tif 000009
【手続補正書】
【提出日】平成19年8月9日(2007.8.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段と
を備えることを特徴とする通信装置。
【請求項２】
前記鍵生成手段は、
第１の鍵データを生成し、前記第１の鍵データを秘密に前記外部装置へ送信し及び前記外部装置にて生成された第２の鍵データを秘密に受信することにより前記外部装置との間で前記第１の鍵データ及び前記第２の鍵データを共有し、共有した前記第１の鍵データと前記第２の鍵データとを用いて前記共有鍵を生成する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記認証は、チャレンジレスポンス認証であり、
前記判断手段は、
前記外部装置から前記第１の鍵データをチャレンジデータとし、前記チャレンジデータと前記共有鍵とに前記関数を施して生成されたレスポンスデータを受け取り、前記チャレンジレスポンス認証を行う
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記鍵生成手段は、
前記第１鍵データと前記第２鍵データとの排他的論理和演算により共有鍵データを算出し、算出した共有鍵データから前記共有鍵を生成する
ことを特徴とする請求項２に記載の通信装置。
【請求項５】
前記鍵生成手段は、
前記共有鍵データの一部を前記共有鍵とする
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記鍵生成手段は、
前記共有鍵データそのものを前記共有鍵とする
ことを特徴とする請求項４に記載の通信装置。
【請求項７】
前記鍵生成手段は、
前記第１鍵データと前記第２鍵データとに前記鍵依存関数を施して共有鍵データを生成し、生成した共有鍵データから前記共有鍵を生成する
ことを特徴とする請求項２に記載の通信装置。
【請求項８】
前記鍵依存関数は、前記共有鍵に依存する一方向性関数
であることを特徴とする請求項１に記載の通信装置。
【請求項９】
前記共有鍵は、前記判断手段による認証及び前記検証用データの生成に用いる検証用共有鍵であり、
前記鍵生成手段は、さらに、
前記第１の鍵データと前記第２の鍵データとから、前記外部装置との間で共有され、通信対象データの暗号化及び復号に用いる暗号用共有鍵を生成し、
前記通信装置は、さらに、
前記暗号用共有鍵を用いて前記通信対象データを暗号化して、暗号化データを生成し、生成した前記暗号化データを前記検証用データとともに前記外部装置へ送信する送信手段を備える
ことを特徴とする請求項２に記載の通信装置。
【請求項１０】
前記共有鍵は検証用共有鍵であり、
前記鍵生成手段は、さらに、
前記第１の鍵データと前記第２の鍵データとから、前記外部装置との間で共有すべき暗号用共有鍵を生成し、
前記通信装置は、さらに、
前記外部装置から前記暗号用共有鍵にて通信対象データが暗号化された暗号化データを受信する受信手段を備え、
前記データ生成手段は、前記受信手段にて受信した暗号化データを復号して復号データを取得し、取得した復号データを通信対象データとして前記検証用データを生成する
ことを特徴とする請求項２に記載の通信装置。
【請求項１１】
前記鍵生成手段は、
前記鍵配送として鍵カプセル化メカニズムを用いて前記共有鍵を生成する
ことを特徴とする請求項１に記載の通信装置。
【請求項１２】
実行が開始されたプログラムを通信相手とし、前記プログラムと共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記プログラムとの間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記プログラムが正当であるか否かを判断する判断手段と、
前記判断手段にて前記プログラムが正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いた検証用データを生成するデータ生成手段と
を備えることを特徴とする通信装置。
【請求項１３】
コンピュータ装置に実行させ、コンピュータ装置を通信相手とし、前記コンピュータ装置と共有した鍵を用いて通信対象データの秘密通信を行うプログラムであって、
前記コンピュータ装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記コンピュータ装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記コンピュータ装置が正当であるか否かを判断する判断ステップと、
前記判断ステップにて前記コンピュータ装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とするプログラム。
【請求項１４】
第１の領域に格納され、第２の領域に存在する第２プログラムを通信相手とし、前記第２プログラムと共有した鍵を用いて通信対象データの秘密通信を行う第１プログラムであって、
前記第１プログラム及び前記第２プログラムは、コンピュータ装置にて実行され、
前記第１プログラムは、
前記第２プログラムとの間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記第２プログラムとの間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記第２プログラムが正当であるか否かを判断する判断ステップと、
前記判断ステップにて前記第２プログラムが正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする第１プログラム。
【請求項１５】
第１及び第２の通信装置間で共有した鍵を用いて通信対象データの秘密通信を行う通信システムであって、
前記第１の通信装置は、
前記第２の通信装置との間で安全性証明のなされた暗号方式を用いて共有すべき第１の共有鍵を生成する第１の鍵生成手段と、
前記第２の通信装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記第２の通信装置が正当であるか否かを判断する第１の判断手段と、
前記第１の判断手段にて前記第２の通信装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記第１の共有鍵に依存する前記鍵依存関数と同一の関数を用いた第１の検証用データを生成する第１のデータ生成手段とを備え、
前記第２の通信装置は、前記第１の通信装置が認証に用いるデータを送信する
ことを特徴とする通信システム。
【請求項１６】
前記第２の通信装置は、さらに、
前記第１の通信装置との間で安全性証明のなされた暗号方式を用いて共有すべき第２の共有鍵を生成する第２の鍵生成手段と、
前記鍵依存関数を用いた認証を行うことにより、前記第１の通信装置が正当であるか否かを判断する第２の判断手段と、
前記第２の判断手段にて前記第１の通信装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記第２の共有鍵に依存する前記鍵依存関数と同一の関数を用いて第２の検証用データを生成する第２のデータ生成手段とを備え、
前記第１の通信装置は、前記第２の通信装置が認証に用いるデータを送信する
ことを特徴とする請求項１５に記載の暗号通信システム。
【請求項１７】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置で用いられる通信方法であって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断ステップと、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする通信方法。
【請求項１８】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置で用いられる通信プログラムであって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断ステップと、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする通信プログラム。
【請求項１９】
前記通信プログラムは、コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項１８に記載の通信プログラム。
【請求項２０】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置の集積回路であって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段と
を備えることを特徴とする集積回路。
【手続補正書】
【提出日】平成20年10月23日(2008.10.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段と
を備えることを特徴とする通信装置。
【請求項２】
前記鍵生成手段は、
第１の鍵データを生成し、前記第１の鍵データを秘密に前記外部装置へ送信し及び前記外部装置にて生成された第２の鍵データを秘密に受信することにより前記外部装置との間で前記第１の鍵データ及び前記第２の鍵データを共有し、共有した前記第１の鍵データと前記第２の鍵データとを用いて前記共有鍵を生成する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記認証は、チャレンジレスポンス認証であり、
前記判断手段は、
前記外部装置から前記第１の鍵データをチャレンジデータとし、前記チャレンジデータと前記共有鍵とに前記関数を施して生成されたレスポンスデータを受け取り、前記チャレンジレスポンス認証を行う
ことを特徴とする請求項２に記載の通信装置。
【請求項４】
前記鍵生成手段は、
前記第１鍵データと前記第２鍵データとの排他的論理和演算により共有鍵データを算出し、算出した共有鍵データから前記共有鍵を生成する
ことを特徴とする請求項２に記載の通信装置。
【請求項５】
前記鍵生成手段は、
前記共有鍵データの一部を前記共有鍵とする
ことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記鍵生成手段は、
前記共有鍵データそのものを前記共有鍵とする
ことを特徴とする請求項４に記載の通信装置。
【請求項７】
前記鍵生成手段は、
前記第１鍵データと前記第２鍵データとに前記鍵依存関数を施して共有鍵データを生成し、生成した共有鍵データから前記共有鍵を生成する
ことを特徴とする請求項２に記載の通信装置。
【請求項８】
前記鍵依存関数は、前記共有鍵に依存する一方向性関数
であることを特徴とする請求項１に記載の通信装置。
【請求項９】
前記共有鍵は、前記判断手段による認証及び前記検証用データの生成に用いる検証用共有鍵であり、
前記鍵生成手段は、さらに、
前記第１の鍵データと前記第２の鍵データとから、前記外部装置との間で共有され、通信対象データの暗号化及び復号に用いる暗号用共有鍵を生成し、
前記通信装置は、さらに、
前記暗号用共有鍵を用いて前記通信対象データを暗号化して、暗号化データを生成し、生成した前記暗号化データを前記検証用データとともに前記外部装置へ送信する送信手段を備える
ことを特徴とする請求項２に記載の通信装置。
【請求項１０】
前記共有鍵は検証用共有鍵であり、
前記鍵生成手段は、さらに、
前記第１の鍵データと前記第２の鍵データとから、前記外部装置との間で共有すべき暗号用共有鍵を生成し、
前記通信装置は、さらに、
前記外部装置から前記暗号用共有鍵にて通信対象データが暗号化された暗号化データを受信する受信手段を備え、
前記データ生成手段は、前記受信手段にて受信した暗号化データを復号して復号データを取得し、取得した復号データを通信対象データとして前記検証用データを生成する
ことを特徴とする請求項２に記載の通信装置。
【請求項１１】
前記鍵生成手段は、
前記鍵配送として鍵カプセル化メカニズムを用いて前記共有鍵を生成する
ことを特徴とする請求項１に記載の通信装置。
【請求項１２】
実行が開始されたプログラムを通信相手とし、前記プログラムと共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記プログラムとの間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記プログラムが正当であるか否かを判断する判断手段と、
前記判断手段にて前記プログラムが正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いた検証用データを生成するデータ生成手段と
を備えることを特徴とする通信装置。
【請求項１３】
コンピュータ装置に実行させ、コンピュータ装置を通信相手とし、前記コンピュータ装置と共有した鍵を用いて通信対象データの秘密通信を行うプログラムであって、
前記コンピュータ装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記コンピュータ装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記コンピュータ装置が正当であるか否かを判断する判断ステップと、
前記判断ステップにて前記コンピュータ装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とするプログラム。
【請求項１４】
第１の領域に格納され、第２の領域に存在する第２プログラムを通信相手とし、前記第２プログラムと共有した鍵を用いて通信対象データの秘密通信を行う第１プログラムであって、
前記第１プログラム及び前記第２プログラムは、コンピュータ装置にて実行され、
前記第１プログラムは、
前記第２プログラムとの間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記第２プログラムとの間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記第２プログラムが正当であるか否かを判断する判断ステップと、
前記判断ステップにて前記第２プログラムが正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする第１プログラム。
【請求項１５】
第１及び第２の通信装置間で共有した鍵を用いて通信対象データの秘密通信を行う通信システムであって、
前記第１の通信装置は、
前記第２の通信装置との間で安全性証明のなされた暗号方式を用いて共有すべき第１の共有鍵を生成する第１の鍵生成手段と、
前記第２の通信装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記第２の通信装置が正当であるか否かを判断する第１の判断手段と、
前記第１の判断手段にて前記第２の通信装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記第１の共有鍵に依存する前記鍵依存関数と同一の関数を用いた第１の検証用データを生成する第１のデータ生成手段とを備え、
前記第２の通信装置は、前記第１の通信装置が認証に用いるデータを送信する
ことを特徴とする通信システム。
【請求項１６】
前記第２の通信装置は、さらに、
前記第１の通信装置との間で安全性証明のなされた暗号方式を用いて共有すべき第２の共有鍵を生成する第２の鍵生成手段と、
前記鍵依存関数を用いた認証を行うことにより、前記第１の通信装置が正当であるか否かを判断する第２の判断手段と、
前記第２の判断手段にて前記第１の通信装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記第２の共有鍵に依存する前記鍵依存関数と同一の関数を用いて第２の検証用データを生成する第２のデータ生成手段とを備え、
前記第１の通信装置は、前記第２の通信装置が認証に用いるデータを送信する
ことを特徴とする請求項１５に記載の暗号通信システム。
【請求項１７】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置で用いられる通信方法であって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断ステップと、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする通信方法。
【請求項１８】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置で用いられる通信プログラムであって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断ステップと、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
を含むことを特徴とする通信プログラム。
【請求項１９】
前記通信プログラムは、コンピュータ読み取り可能な記録媒体に記録されている
ことを特徴とする請求項１８に記載の通信プログラム。
【請求項２０】
通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置の集積回路であって、
前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、
前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段と
を備えることを特徴とする集積回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報セキュリティ技術としての暗号技術、特に共有鍵を用いて正当な通信相手と秘密通信を行う技術に関する。
【背景技術】
【０００２】
近年、家庭用電化製品、携帯電話機などの間でネットワークを介した通信を行う機会が増加している。例えば、ＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）機器ではコンテンツの著作権保護のために機器同士で、また、携帯電話機では通信内容の漏洩を防ぐために携帯電話機と通信相手である装置とで、認証鍵共有を行った後に、共有した鍵を用いて暗号化した通信を行うことがある。ここで、認証鍵共有とは、機器同士などで、通信相手の機器が正しく作られた機器であるかを、相互認証により確認し、それと同時に鍵を共有するものである（以下、共有する鍵を共有鍵という。）。
【０００３】
例えば、ＡＶ機器同士をＩＥＥＥ１３９４で接続したときに使用される、ＤＴＣＰ（Ｄｉｇｉｔａｌ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｅｎｔ  Ｐｒｏｔｅｃｔｉｏｎ）と呼ばれる著作権保護規格で規定されている認証鍵共有方法がある（非特許文献１参照）。この方法は、認証方式に楕円ＤＳＡ署名を用いたチャレンジ・レスポンス認証を使用し、鍵共有方式に楕円ＤＨ鍵共有を使用している。チャレンジ・レスポンス認証、楕円ＤＳＡ署名及び楕円ＤＨ鍵共有については、非特許文献２が詳しい。
【０００４】
上記に示すＤＴＣＰの認証鍵共有方法では、安全性の問題、すなわち、実効性のある攻撃方法の存在については特に指摘されていない。しかし、未知の攻撃方法を含めた全ての攻撃方法に対する安全性の証明はなされていない。
ここで、「安全性の証明」とは、暗号方式の安全性が経験的なものではなく、数学的に証明できることである。例えば、公開鍵暗号においては、秘密鍵を持たないユーザが暗号文の解読を行う場合、数学的に求解困難であると考えられている問題（例えば、素因数分解問題や楕円離散対数問題）を解く必要があることを証明する。この証明ができる場合、暗号文の解読が、求解困難であると考えられている問題よりも難しいことが示せたこととなる。したがって、このような証明ができる場合には、公開鍵暗号について安全性証明があることになる。
【０００５】
安全性証明ができないと経験的に「たぶん解読困難と思われる」というレベルまでしか暗号方式の安全が保証できないので、その暗号方式を使用することに不安が残ってしまう。そのため、ユーザは、従来の認証鍵共有方法を安心して使用することはできない。
そこで、安全性証明された鍵配送方式である鍵カプセル化メカニズム（Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  Ｍｅｃｈａｎｉｓｍｓ、以降ではＫＥＭと呼ぶ。）を用いた認証鍵共有方式が提案されている（特許文献１参照）。この技術により鍵漏洩がなされないので、ユーザは、安心して認証鍵の共有ができる。
【特許文献１】国際公開第ＷＯ０５／０３９１００号
【非特許文献１】ＤＴＣＰ  ＳｐｅｃｉｆｉｃａｔｉｏｎのＷｈｉｔｅ  ｐａｐｅｒ  ＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｄｔｃｐ．ｃｏｍ／ｄａｔａ／ｓｐｅｃ．ｈｔｍｌ＞
【非特許文献２】岡本龍明、山本博資、”現代暗号”、産業図書（１９９７年）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＫＥＭを用いた認証鍵共有方法では共有鍵の漏洩に対する安全性については証明しているが、なりすまし攻撃に対する安全性については証明できていない。なりすまし攻撃とは、攻撃者が通信相手のユーザ（機器）になりすまして、正当なユーザ（機器）との間で、正当なユーザ（機器）の情報を漏洩させたり、相手の通信をさせないように遮ろうとしたりする攻撃である。
【０００７】
そのため、データを送信する送信元の装置は、正当な装置であるようになりすました不正な装置に対して、データを送信する可能性があるので、システム全体としての安全性に問題が残る。
なぜなら、例えば、仮に共有鍵の漏洩に対する安全性が保証されており、また、共有鍵によって暗号化されたデータ１つ１つから共有鍵を推測することは困難であっても、暗号化されたデータを大量に収集すると共有鍵の推測が容易になることがあるからである。
【０００８】
したがって、認証鍵共有では、なりすまし攻撃に対して安全であることが望ましい。さらに、この場合、共有鍵の漏洩に対してのみならず、なりすまし攻撃に対する防衛策についても安全性証明があることが望ましい。
そこで、本発明は、なりすまし攻撃に対しても安全性証明ができる通信装置、通信システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明は、通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段とを備えることを特徴とする。
【発明の効果】
【００１０】
上記に示した構成によると、通信装置は、共有鍵と鍵依存関数とを用いて認証を行い、さらに、同一の共有鍵と鍵依存関数を用いて検証用データを生成しているので、なりすまし攻撃を防ぐことができる。以下にその理由を示す。
通信装置は、認証時になりすまし攻撃を受けている場合には、その認証により不正な外部装置であると判断することができるので、以降において通信対象データを送信しないことにより、なりすまし攻撃を防ぐことができる。
【００１１】
また、認証後に通信装置がなりすまし攻撃により不正な装置から通信対象データを受信する場合において、通信装置は、不正な装置から通信対象データを受信してしまうが、通信相手が不正な装置であることが分かれば、受信した通信対象データを破棄すればよい。この場合において、通信対象データの正当性検証のために、不正な装置から検証用データをも送信される。しかしながら、不正な装置は、共有鍵及びこれに依存する鍵依存関数を有していないので、正当な検証用データを送信することができない。仮に、通信装置が不正な装置から検証用データを受信したとしても、受信した検証用データは通信装置が有する共有鍵に依存する鍵依存関数により生成されていないため通信装置自身が生成した検証用データとは異なることとなり、通信対象データが不正、つまり、通信対象データを送信した装置が不正であると判断することができる。これにより、通信装置は、通信対象データを送信した装置が不正であると判断した場合には受信した通信対象データを破棄することにより、なりすまし攻撃を防ぐことができる。
【００１２】
さらには、通信装置は、安全性証明のなされた暗号方式により共有すべき共有鍵を生成するので、漏洩に対して安全である。これにより、通信装置は、漏洩に対して安全である共有鍵を用いて外部装置の認証及び秘密通信を行うので、これら処理に対する安全性も保証される。
以下、簡単になりすまし攻撃に対する安全性の証明を行う。
【００１３】
認証時において、通信装置が、外部装置が正当であると確認するためには、外部装置にて正しい検証用データが生成される必要があり、そのためには通信装置と外部装置との間で同一の共有鍵を共有する必要がある。しかしながら、共有鍵は安全性証明がなされた暗号方式を用いて生成されるので、漏洩される、つまり、不正な装置が共有鍵を取得することができる確率が非常に小さく、無視できる程度となることを数学的に証明できる。そのため、不正な装置が正しい検証用データを生成することができないことも数学的に証明できる。したがって、通信装置は、なりすまし攻撃に対しても安全性が証明できる。
【００１４】
ここで、前記鍵生成手段は、前記第１の鍵データを生成し、前記第１の鍵データを秘密に前記外部装置へ送信し及び前記外部装置にて生成された第２の鍵データを秘密に受信することにより前記外部装置との間で前記第１の鍵データ及び前記第２の鍵データを共有し、共有した前記第１の鍵データと前記第２の鍵データとを用いて前記共有鍵を生成するとしてもよい。
【００１５】
この構成によると、通信装置は、秘密に共有した第１の鍵データ及び第２の鍵データを用いて共有鍵を生成するので、共有鍵が外部に漏洩されることはない。
ここで、前記認証は、チャレンジレスポンス認証であり、前記判断手段は、前記外部装置から前記第１の鍵データをチャレンジデータとし、前記チャレンジデータと前記共有鍵とに前記関数を施して生成されたレスポンスデータを受け取り、前記チャレンジレスポンス認証を行うとしてもよい。
【００１６】
この構成によると、通信装置は、チャレンジレスポンス認証時にチャレンジデータを改めて送信する必要がないので、通信量を削減することができる。
ここで、前記鍵生成手段は、前記第１鍵データと前記第２鍵データとの排他的論理和演算により共有鍵データを算出し、算出した共有鍵データから前記共有鍵を生成するとしてもよい。
【００１７】
この構成によると、通信装置は、第１鍵データと第２鍵データとの排他的論理和演算により共有鍵データを算出しているので、共有鍵データから第１鍵データと第２鍵データを導出することを困難にすることができる。
ここで、前記鍵生成手段は、前記共有鍵データの一部を前記共有鍵とするとしてもよい。
【００１８】
この構成によると、通信装置は、共有鍵を、共有鍵データの一部とすることにより生成することができる。
ここで、前記鍵生成手段は、前記共有鍵データそのものを前記共有鍵とするとしてもよい。
この構成によると、通信装置は、共有鍵を、共有鍵データと同一にしているので、改めて共有鍵を生成する必要がない。そのため、通信装置における処理量を削減することができる。
【００１９】
ここで、前記鍵生成手段は、前記第１鍵データと前記第２鍵データとに前記鍵依存関数を施して共有鍵データを生成し、生成した共有鍵データから前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、第１鍵データと第２鍵データとに関数を施して共有鍵データへと変換しているので、第１鍵データ及び第２鍵データの漏洩を防ぐことができる。
【００２０】
ここで、前記鍵依存関数は、前記共有鍵に依存する一方向性関数であるとしてもよい。
この構成によると、通信装置は、一方向性関数を用いて共有鍵データを生成している。これにより、生成された共有鍵データから第１鍵データ及び第２鍵データを生成するのは困難であるので、第１鍵データ及び第２鍵データの漏洩に対する安全性を高めることができる。
【００２１】
ここで、前記共有鍵は、前記判断手段による認証及び前記検証用データの生成に用いる検証用共有鍵であり、前記鍵生成手段は、さらに、前記共有鍵データから前記外部装置との間で共有され、通信対象データの暗号化及び復号に用いる暗号用共有鍵を生成し、前記通信装置は、さらに、前記暗号用共有鍵を用いて前記通信対象データを暗号化して、暗号化データを生成し、生成した前記暗号化データを前記検証用データとともに前記外部装置へ送信する送信手段を備えるとしてもよい。
【００２２】
この構成によると、通信装置は、外部装置と共有すべき暗号用共有鍵を用いて通信対象データを暗号化して暗号化データを生成し、生成した暗号化データを外部装置へ送信するので、通信対象データが漏洩されることはない。
ここで、前記共有鍵は検証用共有鍵であり、前記鍵生成手段は、さらに、前記共有鍵データから前記外部装置との間で共有すべき暗号用共有鍵を生成し、前記通信装置は、さらに、前記外部装置から前記暗号用共有鍵にて通信対象データが暗号化された暗号化データを受信する受信手段を備え、前記データ生成手段は、前記受信手段にて受信した暗号化データを復号して復号データを取得し、取得した復号データを通信対象データとして前記検証用データを生成するとしてもよい。
【００２３】
この構成によると、通信装置は、外部装置と共有すべき暗号用共有鍵を用いて復号された復号データから検証用データを生成するので、外部装置との間で正当な暗号用共有鍵及び正当な検証用共有鍵を共有しない限り、正当な復号データ及び正当な検証用データを取得することができない。つまり、正当な通信装置のみが、復号データ及び検証用データを取得することができる。
【００２４】
ここで、前記鍵生成手段は、前記鍵配送として鍵カプセル化メカニズムを用いて前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、外部装置との間で鍵カプセル化メカニズムを用いて共有鍵を生成するので、共有鍵が漏洩されることはない。
また、鍵カプセル化メカニズムを用いることにより、鍵漏洩に対して安全であるので、認証時において、なりすまし攻撃に対する安全性が証明される。
【発明を実施するための最良の形態】
【００２５】
１．第１の実施の形態
本発明にかかる第１の実施の形態としての暗号通信システム１について説明する。
暗号通信システム１は、図１に示すように、暗号通信装置Ａ１０と暗号通信装置Ｂ２０とから構成され、暗号通信装置Ａ１０と暗号通信装置Ｂ２０とは、通信路３０を介して通信を行う。
【００２６】
暗号通信装置Ａ１０及び暗号通信装置Ｂ２０は、鍵の漏洩及びなりすまし攻撃を防止して、通信相手と共有鍵を用いた暗号通信を行う。
暗号通信装置Ａ１０及び暗号通信装置Ｂ２０における暗号通信は、大きく分けて、３つのフェーズ動作からなる。
１つ目のフェーズは、ＫＥＭを用いて暗号通信装置Ａ１０と暗号通信装置Ｂ２０とが相互認証及び鍵配送を行い、互いの装置にて鍵を共有するフェーズである。
【００２７】
２つ目のフェーズは、共有した鍵を用いてチャレンジ・レスポンス認証を行うことにより、暗号通信装置Ａ１０と暗号通信装置Ｂ２０のそれぞれが、お互いの送信相手がなりすまし攻撃を行っていないことを確認するフェーズである。
３つ目のフェーズは、共有した鍵を用いて暗号通信装置Ａ１０と暗号通信装置Ｂ２０との間で通信路３０を介して暗号したデータの送受信を行うフェーズである。
【００２８】
ここで、データとは、例えば、テキストデータ、音楽データ、画像データ、映画コンテンツデータである。
１．１  準備
ここでは、本実施の形態に用いる鍵配送方式の１つである鍵カプセル化メカニズム（Ｋｅｙ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  Ｍｅｃｈａｎｉｓｍｓ、以降では「ＫＥＭ」と呼ぶ。）について説明する。
【００２９】
鍵カプセル化メカニズムは、簡単に説明すると、公開鍵暗号を用いて送信装置と受信装置の間で共有鍵を配送するアルゴリズムである。先ず、送信側が、公開鍵暗号化アルゴリズムＥに受信者の公開鍵ｐｋを入力して暗号文Ｃと共有鍵Ｋを生成し、暗号文Ｃを受信側に伝送する。そして、受信側が、公開鍵復号アルゴリズムＤに、秘密鍵ｓｋと暗号文Ｃを入力して送信側と同じ共有鍵Ｋを求める。なお、本明細書では、暗号文Ｃを「鍵データＫのＫＥＭ暗号文」等とも呼ぶ。
【００３０】
鍵カプセル化メカニズムの目的は、鍵カプセル化メカニズムで共有鍵Ｋを送信装置と受信装置で共有することにより、その後、送信装置から受信装置へ通信される通信内容データを、共有鍵Ｋを用いて共通鍵暗号で暗号化することにある。ここで、送信装置を持つ送信者から受信装置を持つ受信者に一方的に情報の送信が行われていながら、送信者が作為的に共有鍵を作成できず、送信者による不正が抑制されている点が従来の鍵配送方式にない特徴である。
【００３１】
このような鍵カプセル化メカニズムとして、ＰＳＥＣ−ＫＥＭと呼ばれるアルゴリズムが開示されている。
なお、ＰＳＥＣ−ＫＥＭアルゴリズムの詳細については、著者Ｔａｔｓｕａｋｉ  Ｏｋａｍｏｔｏによる“Ｇｅｎｅｒｉｃ  ｃｏｎｖｅｒｓｉｏｎｓ  ｆｏｒ  ｃｏｎｓｔｒｕｃｔｉｎｇ  ＩＮＤ−ＣＣＡ２  ｐｕｂｌｉｃ−ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ  ｉｎ  ｔｈｅ  ｒａｎｄｏｍ  ｏｒａｃｌｅ  ｍｏｄｅｌ”に記載されているので説明を省力する。以下に、ＰＳＥＣ−ＫＥＭアルゴリズムについて簡単に説明する。
【００３２】
（１）ＰＳＥＣ−ＫＥＭのシステムパラメータ
ＰＳＥＣ−ＫＥＭは、以下のシステムパラメータを持つ。
・楕円曲線：Ｅ
・楕円曲線Ｅ上の位数ｎの点：Ｐ
・ハッシュ関数：Ｇ、Ｈ
なお、楕円曲線、位数及びハッシュ関数については、非特許文献２に詳細が記述されているので、ここでは説明を省略する。
【００３３】
なお、ハッシュ関数Ｇ、Ｈは送信側および受信側の両方で共有している。
（２）ＰＳＥＣ−ＫＥＭの公開鍵と秘密鍵
・ランダムにＺｎの要素ｘを選び、Ｗ＝ｘ＊Ｐを生成する。
ここで、Ｚｎは、｛０，１，．．．，ｎ−１｝からなる集合であり、ｘ＊Ｐは、楕円曲線Ｅ上の点Ｐをｘ回加算することにより得られる楕円曲線上の点を表す。なお、楕円曲線上の点の加算方法については、非特許文献２に記述されている。
【００３４】
・公開鍵ｐｋを（Ｅ，Ｐ，Ｗ，ｎ）とし、秘密鍵ｓｋをｘとする。
（３）ＰＳＥＣ−ＫＥＭの暗号化
暗号化時には、以下に述べる公開鍵暗号化アルゴリズムＫｅｍＥに公開鍵ｐｋを入力して共有鍵Ｋと暗号文Ｃを出力する。
以下に公開鍵暗号化アルゴリズムＫｅｍＥについて説明する。
【００３５】
・Ｚｎの要素ｓをランダムに生成する。
・Ｇ（ｓ）を生成し、Ｇ（ｓ）をＧ（ｓ）＝ａ｜｜Ｋと分割する。ここで、｜｜はビット結合を表し，Ｇ（ｓ）をＧ（ｓ）＝ａ｜｜Ｋと分割するとは、Ｇ（ｓ）の上位複数ビットをａとし、残りのビットをＫとすることを表す。
・Ｒ＝ａ＊Ｐ，Ｑ＝ａ＊Ｗを生成する。
【００３６】
・ｖ＝ｓ  ｘｏｒ  Ｈ（Ｒ｜｜Ｑ）を生成する。ここで、ｘｏｒは排他的論理和演算を表す。
・共有鍵Ｋと暗号文Ｃ＝（Ｒ，ｖ）を出力する。
・送信側の装置は、暗号文Ｃを通信の相手先（受信側の装置）へ送信する。
（４）ＰＳＥＣ−ＫＥＭの復号化
受信側の装置は、送信側の装置から暗号文Ｃを受け取り、以下に述べる公開鍵復号アルゴリズムＫｅｍＤに暗号文Ｃ＝（Ｒ，ｖ）と秘密鍵ｓｋを入力して共有鍵Ｋを出力する。
【００３７】
以下に公開鍵復号アルゴリズムＫｅｍＤについて説明する。
・Ｑ＝ｘ＊Ｒを生成する。ここで、上述したようにｘは秘密鍵ｓｋである。
・ｓ’＝ｖ  ｘｏｒ  Ｈ（Ｒ｜｜Ｑ）を生成する。ここで、ｖとＲは暗号文Ｃから得られる。
・Ｇ（ｓ’）を生成し、Ｇ（ｓ’）をＧ（ｓ’）＝ａ’｜｜Ｋ’と分割する。ここで、分割の仕方は暗号化側と同様である。
【００３８】
・Ｒ＝ａ’＊Ｐが成立するかどうかチェックする。成立すればＫ’を共有鍵Ｋとして出力する。
このＰＳＥＣ−ＫＥＭアルゴリズムを、送信装置と受信装置の間で暗号化通信を行う暗号システムに応用した場合、まず、送信装置は、通信先受信装置の公開鍵ｐｋを取得し、取得した公開鍵ｐｋを前述の公開鍵暗号化アルゴリズムＫｅｍＥに入力して共有鍵Ｋと暗号文Ｃを導出して、暗号文Ｃを受信装置へ送信する。そして、受信装置は、送信装置から暗号文Ｃを受信し、受信した暗号文Ｃと自身が有する秘密鍵ｓｋを前述の公開鍵復号アルゴリズムＫｅｍＤに入力して、送信装置が導出したものと等しい共有鍵Ｋを導出する。
【００３９】
以下に、このことを詳細に説明する。
今、ＰＳＥＣ−ＫＥＭアルゴリズムは、ハッシュ関数Ｈの入力を（ａ＊Ｐ｜｜ａ＊Ｗ）としており、公開鍵暗号化アルゴリズムＫｅｍＥで、ランダムに生成した要素ｓにＨ（ａ＊Ｐ｜｜ａ＊Ｗ）の値を作用させてｖを生成する。そして、公開鍵復号アルゴリズムＫｅｍＤでは、暗号文Ｃに含まれるＲ＝ａ＊Ｐから秘密鍵ｓｋ（＝ｘ）を用いてＱ＝ｘ＊Ｒ＝ｘ＊（ａ＊Ｐ）＝ａ＊（ｘ＊Ｐ）＝ａ＊Ｗを求めることができるので、ｖ  ｘｏｒ  Ｈ（ａ＊Ｐ｜｜ａ＊Ｗ）を計算することにより、公開鍵暗号化アルゴリズムＫｅｍＥにおいて生成されたランダムな要素ｓを求めることができる。ここで、ｖ  ｘｏｒ  Ｈ（ａ＊Ｐ｜｜ａ＊Ｗ）は、公開鍵暗号化アルゴリズムＫｅｍＥがｓからｖを計算する演算の逆演算である。従って、公開鍵暗号化アルゴリズムＫｅｍＥと公開鍵復号アルゴリズムＫｅｍＤは、ハッシュ関数Ｇに同じｓの値を入力することができ、同じ共有鍵Ｋを導出することができる。この結果、秘密鍵ｓｋを有する受信装置は、送信装置が導出したものと同じ共有鍵Ｋを導出できることになる。
【００４０】
一方で、秘密鍵ｓｋを知らない他の受信装置は、たとえ公開鍵ｐｋを取得して暗号文Ｃを受信したとしても、秘密鍵ｓｋ（＝ｘ）を知らないのでＲ＝ａ＊ＰからＱ＝ａ＊Ｗ（＝（ａｘ）＊Ｐ）を計算できず、送信装置が導出したものと同じ共有鍵Ｋを導出できない。なぜならば、秘密鍵ｓｋを知らない他の受信装置は、公開鍵ｐｋしか利用できないので、上記Ｑの計算には秘密鍵ｓｋ（＝ｘ）の代わりに公開鍵ｐｋに含まれるＷ＝ｘ＊Ｐを利用することになるが、一般に、ａ＊ＰとＷ＝ｘ＊Ｐから、Ｑ＝ａ＊Ｗ（＝（ａｘ）＊Ｐ）を求めることは、楕円曲線上のＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ問題と呼ばれ、ａやｘの値を知らない限り計算困難だからである。なお、これについては、著者Ｎｅａｌ  Ｋｏｂｌｉｔｚによる“Ａｌｇｅｂｒａｉｃ  Ａｓｐｅｃｔｓ  ｏｆ  Ｃｒｙｐｔｏｇｒａｐｈｙ”（Ａｌｇｏｒｉｔｈｍｓ  ａｎｄ  Ｃｏｍｐｕｔａｔｉｏｎ  ｉｎ  Ｍａｔｈｅｍａｔｉｃｓ  Ｖｏｌ．３，  ｐｐ．１３２−１３３，  Ｓｐｒｉｎｇｅｒ−Ｖｅｒｌａｇ，  １９９８．）に記載されているので、ここでの説明は省略する。
【００４１】
すなわち、ＰＳＥＣ−ＫＥＭアルゴリズムは、秘密鍵を用いずにａ＊Ｐからａ＊Ｗを計算することが困難なＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ問題を用いて、最終的に共有鍵Ｋを導出することにより、秘密鍵を知らなければその共有鍵Ｋを導出できないようにしている。
よって、以上により、送信装置と受信装置とは、共有鍵Ｋを秘密に共有することができ、この後、秘密鍵暗号を用いて、送信装置から受信装置へ通信される通信内容データを、共有鍵Ｋを用いて共通鍵暗号で暗号化することができる。
【００４２】
上記のＰＳＥＣ−ＫＥＭアルゴリズムは、先に述べた楕円曲線上のＤｉｆｆｉｅ−Ｈｅｌｌｍａｎ問題が困難であれば、秘密鍵を知らない受信装置は共有鍵Ｋを得ることができないことが証明されている。このような証明を方式の安全性を証明していることから、「安全性証明」と呼ぶ。ＰＳＥＣ−ＫＥＭの他のＫＥＭアルゴリズム、例えばＲＳＡ−ＫＥＭやＮＴＲＵ−ＫＥＭ（特開２００４−２０１２９２号公報及び特開２００４−２０１２９３号公報参照）なども同様の困難な数学上の問題を根拠として安全性証明されている。
【００４３】
なお、ＲＳＡ−ＫＥＭの詳細については、著者Ｖｉｃｔｏｒ  Ｓｈｏｕｐにより“Ａ  ｐｒｏｐｏｓａｌ  ｆｏｒ  ａｎ  ＩＳＯ  ｓｔａｎｄａｒｄ  ｆｏｒ  ｐｕｂｌｉｃ  ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ  （ｖｅｒｓｉｏｎ  ２．１）”に記載されているので説明を省略する。
また、ＮＴＲＵ−ＫＥＭの詳細については、特開２００４−２０１２９２号公報及び特開２００４−２０１２９３号公報に記載されているので説明を省略する。
【００４４】
上記にて説明したＫＥＭを用いて、２台の暗号通信装置の双方からＫＥＭ暗号文を送りあうこともある。この場合、一方の暗号通信装置Ａから他の暗号通信装置ＢにＫＥＭ暗号文を送ることで共有される共有鍵（ＫＡと呼ぶ）と、暗号通信装置Ｂから暗号通信装置ＡにＫＥＭ暗号文を送ることで共有される共有鍵（ＫＢと呼ぶ）との両方を用いて共有鍵Ｋを作ることで、より安全な鍵共有ができる。
【００４５】
暗号通信システム１では、このような双方からＫＥＭ暗号文を送りあう構成で鍵共有を行う。
以下に、暗号通信システム１を攻勢する暗号通信装置Ａ１０、Ｂ２０、及びこれらの動作について説明する。
１．２  暗号通信装置Ａ１０の構成
暗号通信装置Ａ１０は、図２に示すように、入出力部１０１、送受信部１０２、公開鍵格納部１０３、秘密鍵格納部１０４、ＫＥＭ暗号文生成部１０５、ＫＥＭ暗号文復号化部１０６、共有鍵生成部１０７、共有鍵格納部１０８、チャレンジデータ生成部１０９、レスポンスデータ生成部１１０、レスポンスデータ検証部１１１、ＭＡＣ（改ざん検出符号、Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）生成部１１２、共通鍵暗号化部１１３、共通鍵復号化部１１４、ＤＥＭ（Ｄａｔａ  Ｅｎｃａｐｓｕｌａｔｉｏｎ  Ｍｅｃｈａｎｉｓｍ）暗号文生成部１１５、及びＤＥＭ暗号文復号化部１１６から構成されている。
【００４６】
（１）公開鍵格納部１０３
公開鍵格納部１０３は、暗号通信装置Ｂ２０の公開鍵ＫＰＢを格納している。
なお、公開鍵ＫＰＢは、秘密鍵ＫＳＢと共に暗号通信装置Ｂ２０に対応付けて、予め与えられている。また、暗号通信装置Ａ１０では、公開鍵ＫＰＢは予め外部から与えられて格納されているか、あるいは、暗号通信装置Ｂ２０から送信され、通信路３０を介して予め受信されて格納されているものとする。
【００４７】
（２）秘密鍵格納部１０４
秘密鍵格納部１０４は、暗号通信装置Ａ１０の秘密鍵ＫＳＡを格納している。
なお、秘密鍵ＫＳＡは、公開鍵ＫＰＡと共に暗号通信装置Ａ１０に対応付けて、予め与えられている。
（３）ＫＥＭ暗号文生成部１０５
ＫＥＭ暗号文生成部１０５は、公開鍵ＫＰＢと、鍵カプセル化メカニズム（ＫＥＭ）の公開鍵暗号化アルゴリズムＫｅｍＥとを用いて、鍵データＫＡ及び鍵データＫＡに対するＫＥＭ暗号文ＫＥＭＡを生成する。鍵データＫＡ及びＫＥＭ暗号文ＫＥＭＡの生成方法については、上記にて示すＰＳＥＣ−ＫＥＭの暗号化と同様の方法であるので、説明は省略する。
【００４８】
ＫＥＭ暗号文生成部１０５は、生成したＫＥＭ暗号文ＫＥＭＡを送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
ＫＥＭ暗号文生成部１０５は、生成した鍵データＫＡを共有鍵生成部１０７へ出力する。
（４）ＫＥＭ暗号文復号化部１０６
ＫＥＭ暗号文復号化部１０６は、暗号通信装置Ｂ２０から送受信部１０２を介して、ＫＥＭにおける公開鍵暗号化アルゴリズムＫｅｍＥにより鍵データＫＢが暗号化された暗号文であるＫＥＭ暗号文ＫＥＭＢを受信する。
【００４９】
ＫＥＭ暗号文復号化部１０６は、公開鍵暗号化アルゴリズムＫｅｍＥに対応する公開鍵復号アルゴリズムＫｅｍＤに対して、秘密鍵ＫＳＡ及びＫＥＭ暗号文ＫＥＭＢを入力値として与えて、受信したＫＥＭ暗号文ＫＥＭＢを復号化して、鍵データＫＢを生成する。鍵データＫＢの復号化方法については、上記にて示すＰＳＥＣ−ＫＥＭの復号化と同様の方法であるので、説明は省略する。
【００５０】
ＫＥＭ暗号文復号化部１０６は、生成した鍵データＫＢを共有鍵生成部１０７へ出力する。
（５）共有鍵生成部１０７
共有鍵生成部１０７は、ＫＥＭ暗号文生成部１０５から鍵データＫＡを、ＫＥＭ暗号文復号化部１０６から鍵データＫＢを、それぞれ受け取る。
【００５１】
共有鍵生成部１０７は、受け取った鍵データＫＡとＫＢを用いて、共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを生成し、生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを共有鍵格納部１０８に格納する。
以下に共通鍵暗号用共有鍵ＫＳ及びＭＡＣ用共有鍵ＫＨの生成の具体例を以下に示す。
共有鍵生成部１０７は、鍵データＫＡとＫＢとの排他的論理和（ｘｏｒ）を取り、共有鍵データＫを生成する。共有鍵生成部１０７は、生成した共有鍵データＫの一部を共通鍵暗号用共有鍵ＫＳとし、それ以外の部分をＭＡＣ用共有鍵ＫＨとする。つまり、共有鍵生成部１０７は、生成した共有鍵データＫに対して、Ｋ＝ＫＳ｜｜ＫＨを満たすように共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを取得すればよい。ここで、｜｜は連結を示す。また、共有データＫから共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを取得するための区切り位置は、暗号通信装置Ｂ２０側と揃っていれば任意の位置でよい。
【００５２】
なお、共有鍵データＫの生成方法は、鍵データＫＡとＫＢの両方の情報が含まれるものであればよい。例えば、鍵データＫＡとＫＢのビットまたはバイト連結したデータＫ’のハッシュ関数値を共有鍵データＫとしてもよい。
（６）共有鍵格納部１０８
共有鍵格納部１０８は、共有鍵生成部１０７で生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを格納するための領域を有している。
【００５３】
（７）チャレンジデータ生成部１０９
チャレンジデータ生成部１０９は、乱数であるチャレンジデータｎＡを生成し、生成したチャレンジデータｎＡを、送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
チャレンジデータ生成部１０９は、生成したチャレンジデータｎＡを一時的に記憶する。
【００５４】
（８）レスポンスデータ生成部１１０
レスポンスデータ生成部１１０は、暗号通信装置Ｂ２０から送受信部１０２を介して、チャレンジデータｎＢと、チャレンジデータ生成部１０９にて送信したチャレンジデータｎＡに対するレスポンスデータｒＢを受け取る、または、チャレンジデータｎＢのみ受け取る。
【００５５】
（チャレンジデータｎＢとレスポンスデータｒＢとを受け取った場合）
レスポンスデータ生成部１１０は、暗号通信装置Ｂ２０からチャレンジデータｎＢとレスポンスデータｒＢとを受け取ると、受け取ったチャレンジデータｎＢを一時的に記憶する。
レスポンスデータ生成部１１０は、レスポンスデータｒＢと、レスポンスデータの検証を指示する旨の検証指示とをレスポンスデータ検証部１１１へ出力する。
【００５６】
レスポンスデータ生成部１１０は、レスポンスデータ検証部１１１からレスポンスデータの生成を指示する旨のレスポンスデータ生成指示を受け取ると、改ざん検出符号（Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ，  ＭＡＣ）の生成を指示する旨のＭＡＣ生成指示と、一時的に記憶しているチャレンジデータｎＢとをＭＡＣ生成部１１２へ出力する。
【００５７】
レスポンスデータ生成部１１０は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＢを受け取ると、受け取ったＭＡＣ値ＨｎＢをレスポンスデータｒＡとして、送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
なお、ＭＡＣ値ＨｎＢについては、ＭＡＣ生成部１１２の説明の箇所で後述する。
（チャレンジデータｎＢのみ受け取った場合）
レスポンスデータ生成部１１０は、暗号通信装置Ｂ２０からチャレンジデータｎＢを受け取ると、ＭＡＣ生成指示と、受け取ったチャレンジデータｎＢとをＭＡＣ生成部１１２へ出力する。
【００５８】
レスポンスデータ生成部１１０は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＢを受け取ると、受け取ったＭＡＣ値ＨｎＢをレスポンスデータｒＡとして、チャレンジデータ生成部１０９にて生成したチャレンジデータｎＡとともに、送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
（９）レスポンスデータ検証部１１１
レスポンスデータ検証部１１１は、レスポンスデータ生成部１１０から検証指示と、レスポンスデータｒＢとを受け取ると、チャレンジデータ生成部１０９にて一時的に記憶されているチャレンジデータｎＡを取得する。
【００５９】
レスポンスデータ検証部１１１は、ＭＡＣ生成指示と、取得したチャレンジデータｎＡとをＭＡＣ生成部１１２へ出力する。
レスポンスデータ検証部１１１は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＡを受け取ると、ＭＡＣ値ＨｎＡとレスポンスデータｒＢとが一致するか否かを判断する。
一致すると判断する場合には、レスポンスデータ検証部１１１は、レスポンスデータ生成指示をレスポンスデータ生成部１１０へ出力する。
【００６０】
一致しないと判断する場合には、レスポンスデータ生成部１１０は、暗号通信に係る処理全体を中止する。
レスポンスデータ検証部１１１は、暗号通信装置Ｂ２０から送受信部１０２を介して、レスポンスデータｒＢを受け取ると、チャレンジデータ生成部１０９にて一時的に記憶されているチャレンジデータｎＡを取得し、上記と同様の動作を行い、レスポンスデータｒＢの検証を行う。
【００６１】
（１０）ＭＡＣ生成部１１２
ＭＡＣ生成部１１２は、鍵付ハッシュ関数Ｈａｓｈを予め記憶している。鍵付ハッシュ関数とは、鍵とデータとが入力として与えられ、鍵に依存する一方向性関数である。本実施の形態で用いる鍵付ハッシュ関数Ｈａｓｈは、ＭＡＣ用共有鍵ＫＨを用い、且つＭＡＣ用共有鍵ＫＨに依存する関数である。鍵付ハッシュ関数の詳細については、非特許文献２の１８９〜１９５ページに記載されているので説明を省略する。
【００６２】
ＭＡＣ生成部１１２は、ＭＡＣ対象データに対して、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを使用して、所定のビット長ｔ（ｔは１以上）からなる改ざん検出符号の値（ＭＡＣ値）を生成（算出）する。
ここで、ＭＡＣ対象データＤＭに対するＭＡＣ値を、ＨＤＭ＝Ｈａｓｈ（ＫＨ，ＤＭ）とする。また、Ｈａｓｈ（ＫＨ，ＤＭ）は、ＭＡＣ用共有鍵ＫＨを用いて鍵付ハッシュ関数Ｈａｓｈで計算したデータＤＭのハッシュ値を意味する。
【００６３】
ＭＡＣ生成部１１２は、レスポンスデータ生成部１１０からＭＡＣ生成指示と、チャレンジデータｎＢとを受け取ると、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部１１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、チャレンジデータｎＢに対するＭＡＣ値ＨｎＢ（＝Ｈａｓｈ（ＫＨ，ｎＢ））を算出し、算出したＭＡＣ値ＨｎＢをレスポンスデータ生成部１１０へ出力する。
【００６４】
ＭＡＣ生成部１１２は、レスポンスデータ検証部１１１からＭＡＣ生成指示と、チャレンジデータｎＡとを受け取ると、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部１１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、チャレンジデータｎＡに対するＭＡＣ値ＨｎＡ（＝Ｈａｓｈ（ＫＨ，ｎＡ））を算出し、算出したＭＡＣ値ＨｎＡをレスポンスデータ検証部１１１へ出力する。
【００６５】
ＭＡＣ生成部１１２は、ＭＡＣ生成指示と、共通鍵暗号により暗号化し暗号通信装置Ｂ２０へ送信するデータ（以下、暗号化対象データという。）ＤＡとを、ＤＥＭ暗号文生成部１１５から受け取ると、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部１１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、暗号化対象データＤＡに対するＭＡＣ値ＨＤＡ（＝Ｈａｓｈ（ＫＨ，ＤＡ））を算出し、算出したＭＡＣ値ＨＤＡをＤＥＭ暗号文生成部１１５へ出力する。
【００６６】
ＭＡＣ生成部１１２は、ＭＡＣ生成指示と、ＤＥＭ暗号文復号化部１１６から復号化データＤＢ’とを受け取ると、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部１１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、復号化データＤＢ’に対するＭＡＣ値ＨＤＢ’（＝Ｈａｓｈ（ＫＨ，ＤＢ’））を算出し、算出したＭＡＣ値ＨＤＢ’をＤＥＭ暗号文生成部１１５へ出力する。
【００６７】
復号化データＤＢ’については、共通鍵復号化部１１４の説明の箇所で後述する。
なお、Ｈａｓｈ（ＫＨ，ＤＭ）は、Ｈａｓｈ（ＫＨ，ＤＭ）＝ＳＨＡ１（ＫＨ｜｜ＤＭ）としてもよい。ここで、ＳＨＡ１（ｘ）は、ｘのＳＨＡ１ハッシュ関数値であり、｜｜は連結を示す。
（１１）共通鍵暗号化部１１３
共通鍵暗号化部１１３は、暗号化対象データＤＡと、暗号化を指示する旨の暗号化指示とを、ＤＥＭ暗号文生成部１１５から受け取ると、共有鍵格納部１０８に格納している共通鍵暗号用共有鍵ＫＳを取得する。
【００６８】
共通鍵暗号化部１１３は、取得した共通鍵暗号用共有鍵ＫＳと、共通鍵暗号アルゴリズムとを用いて、暗号化対象データＤＡを暗号化して、暗号化対象データＤＡに対する暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））を生成する。ここで、Ｅｎｃ（ＫＳ，ＤＡ）は、鍵ＫＳを用いてデータＤＡを共通鍵暗号で暗号化した暗号文を意味する。共通鍵暗号は例えばＤＥＳ暗号やＡＥＳ暗号である。共通鍵暗号の詳細については、非特許文献２の７９〜１０５ページに記載されているので説明を省略する。
【００６９】
共通鍵暗号化部１１３は、生成した暗号化データＥｎｃ（ＫＳ，ＤＡ）をＤＥＭ暗号文生成部１１５へ出力する。
（１２）共通鍵復号化部１１４
共通鍵復号化部１１４は、暗号化対象データＤＢを共通鍵暗号用共有鍵ＫＳで暗号化した暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＢ））と、暗号化データの復号化を指示する旨の復号指示とを、ＤＥＭ暗号文復号化部１１６から受け取ると、共有鍵格納部１０８に格納している共通鍵暗号用共有鍵ＫＳを取得する。
【００７０】
共通鍵復号化部１１４は、取得した共通鍵暗号用共有鍵ＫＳと、共通鍵復号化アルゴリズムとを用いて、暗号化データＥｎｃ（ＫＳ，ＤＢ）を復号化して、復号化データＤＢ’を生成する。
共通鍵復号化部１１４は、生成した復号化データＤＢ’をＤＥＭ暗号文復号化部１１６へ出力する。
【００７１】
（１３）ＤＥＭ暗号文生成部１１５
ＤＥＭ暗号文生成部１１５は、外部から入出力部１０１を介して、暗号化対象データＤＡを受け取ると、暗号化指示と、受け取った暗号化対象データＤＡとを、共通鍵暗号化部１１３へ出力する。
ＤＥＭ暗号文生成部１１５は、ＭＡＣ指示と、受け取った暗号化対象データＤＡとをＭＡＣ生成部１１２へ出力する。
【００７２】
ＤＥＭ暗号文生成部１１５は、暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））を共通鍵暗号化部１１３から受け取り、ＭＡＣ値ＨＤＡ（＝Ｈａｓｈ（ＫＨ，ＤＡ））をＭＡＣ生成部１１２から受け取ると、これらを連結して、ＤＥＭ暗号文ＤＥＭＡ（＝Ｅｎｃ（ＫＳ，ＤＡ）｜｜ＨＤＡ）を生成する。
ＤＥＭ暗号文生成部１１５は、生成したＤＥＭ暗号文ＤＥＭＡを、送受信部１０２を介して暗号通信装置Ｂ２０へ送信する。
【００７３】
（１４）ＤＥＭ暗号文復号化部１１６
ＤＥＭ暗号文復号化部１１６は、暗号通信装置Ｂ２０から送受信部１０２を介して、ＤＥＭ暗号文ＤＥＭＢ（＝ＥＤＢ｜｜ＨＤＢ）を受け取る。ここで、ＥＤＢは暗号化対象データＤＢを暗号通信装置Ｂ２０が有する共通鍵暗号用共有鍵ＫＳにて暗号化した暗号化データ（Ｅｎｃ（ＫＳ，ＤＢ））であり、ＨＤＢは暗号化対象データＤＢに対するＭＡＣ値（Ｈａｓｈ（ＫＨ，ＤＢ））である。
【００７４】
ＤＥＭ暗号文復号化部１１６は、受け取ったＤＥＭ暗号文ＤＥＭＢ（＝ＥＤＢ｜｜ＨＤＢ）を暗号化データＥＤＢとＭＡＣ値ＨＤＢとに分離する。
ここで、分解の一例を示す。ＤＥＭ暗号文ＤＥＭＢのビット長をｕとすると、上述したように、ＭＡＣ値ＨＤＢのビット長はｔであるので、ｕ＞ｔであることが分かる。ＤＥＭ暗号文復号化部１１６は、ｕ−ｔビット長からなるデータをＤＥＭ暗号文ＤＥＭＢの先頭から抽出し、抽出したデータを暗号化データＥＤＢとし、残りｔビット長からなるデータをＭＡＣ値ＨＤＢとする。
【００７５】
ＤＥＭ暗号文復号化部１１６は、復号指示と、暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＢ））とを共通鍵復号化部１１４へ出力する。
ＤＥＭ暗号文復号化部１１６は、復号化データＤＢ’を共通鍵復号化部１１４から受け取ると、ＭＡＣ指示と復号化データＤＢ’とをＭＡＣ生成部１１２へ出力する。
ＤＥＭ暗号文復号化部１１６は、ＭＡＣ値ＨＤＢ’（＝Ｈａｓｈ（ＫＨ、ＤＢ’））を受け取ると、ＤＥＭ暗号文ＤＥＭＢから分離したＨＤＢとを比較し、一致するか否かを判断する。
【００７６】
一致すると判断する場合には、ＤＥＭ暗号文復号化部１１６は、復号化データＤＢ’、つまり暗号化対象データＤＢを、入出力部１０１を介して外部へ出力する。
一致しないと判断する場合には、ＤＥＭ暗号文復号化部１１６は、暗号通信に係る処理全体を中止する。
（１５）入出力部１０１
入出力部１０１は、外部から暗号化対象データＤＡを受け付け、受け付けた暗号化対象データＤＡをＤＥＭ暗号文生成部１１５へ出力する。
【００７７】
入出力部１０１は、ＤＥＭ暗号文復号化部１１６から復号化データＤＢ’を受け取ると、受け取った復号化データＤＢ’を外部へ出力する。
（１６）送受信部１０２
送受信部１０２は、ＫＥＭ暗号文ＫＥＭＡをＫＥＭ暗号文生成部１０５から受け取ると、受け取ったＫＥＭ暗号文ＫＥＭＡを、通信路３０を介して暗号通信装置Ｂ２０へ送信する。
【００７８】
送受信部１０２は、暗号通信装置Ｂ２０から通信路３０を介して、ＫＥＭ暗号文ＫＥＭＢを受け取ると、受け取ったＫＥＭ暗号文ＫＥＭＢをＫＥＭ暗号文復号化部１０６へ出力する。
送受信部１０２は、チャレンジデータｎＡをチャレンジデータ生成部１０９から受け取ると、受け取ったチャレンジデータｎＡを、通信路３０を介して暗号通信装置Ｂ２０へ送信する。
【００７９】
送受信部１０２は、レスポンスデータｒＡをレスポンスデータ生成部１１０から受け取ると、受け取ったレスポンスデータｒＡを、通信路３０を介して暗号通信装置Ｂ２０へ送信する。
送受信部１０２は、暗号通信装置Ｂ２０から通信路３０を介して、チャレンジデータｎＢとレスポンスデータｒＢとを、若しくはチャレンジデータｎＢのみを受け取ると、受け取ったチャレンジデータｎＢ及びレスポンスデータｒＢを、若しくはチャレンジデータｎＢを、レスポンスデータ生成部１１０へ出力する。
【００８０】
送受信部１０２は、暗号通信装置Ｂ２０から通信路３０を介して、レスポンスデータｒＢを受け取ると、受け取ったレスポンスデータｒＢをレスポンスデータ検証部１１１へ出力する。
送受信部１０２は、ＤＥＭ暗号文ＤＥＭＡをＤＥＭ暗号文生成部１１５から受け取ると、受け取ったＤＥＭ暗号文ＤＥＭＡを、通信路３０を介して暗号通信装置Ｂ２０へ送信する。
【００８１】
送受信部１０２は、暗号通信装置Ｂ２０から通信路３０を介して、ＤＥＭ暗号文ＤＥＭＢを受け取ると、受け取ったＤＥＭ暗号文ＤＥＭＢをＤＥＭ暗号文復号化部１１６へ出力する。
１．３  暗号通信装置Ｂ２０の構成
暗号通信装置Ｂ２０は、図３に示すように、入出力部２０１、送受信部２０２、公開鍵格納部２０３、秘密鍵格納部２０４、ＫＥＭ暗号文生成部２０５、ＫＥＭ暗号文復号化部２０６、共有鍵生成部２０７、共有鍵格納部２０８、チャレンジデータ生成部２０９、レスポンスデータ生成部２１０、レスポンスデータ検証部２１１、ＭＡＣ生成部２１２、共通鍵暗号化部２１３、共通鍵復号化部２１４、ＤＥＭ暗号文生成部２１５、及びＤＥＭ暗号文復号化部２１６から構成されている。
【００８２】
（１）公開鍵格納部２０３
公開鍵格納部２０３は、暗号通信装置Ａ１０の公開鍵ＫＰＡを格納している。
なお、公開鍵ＫＰＡは、秘密鍵ＫＳＡと共に暗号通信装置Ａ１０に対応付けて、予め与えられている。また、暗号通信装置Ｂ２０では、公開鍵ＫＰＡは予め外部から与えられて格納されているか、あるいは、暗号通信装置Ａ１０から送信され、通信路３０を介して予め受信されて格納されているものとする。
【００８３】
（２）秘密鍵格納部２０４
秘密鍵格納部２０４は、暗号通信装置Ｂ２０の秘密鍵ＫＳＢを格納している。
なお、秘密鍵ＫＳＢは、公開鍵ＫＰＢと共に暗号通信装置Ｂ２０に対応付けて、予め与えられている。
（３）ＫＥＭ暗号文生成部２０５
ＫＥＭ暗号文生成部２０５は、公開鍵ＫＰＡと、鍵カプセル化メカニズム（ＫＥＭ）の公開鍵暗号化アルゴリズムＫｅｍＥとを用いて、鍵データＫＢ及び鍵データＫＢに対するＫＥＭ暗号文ＫＥＭＢを生成する。鍵データＫＢ及びＫＥＭ暗号文ＫＥＭＢの生成方法については、上記にて示すＰＳＥＣ−ＫＥＭの暗号化と同様の方法であるので、説明は省略する。
【００８４】
ＫＥＭ暗号文生成部２０５は、生成したＫＥＭ暗号文ＫＥＭＢを送受信部２０２を介して暗号通信装置Ａ１０へ送信する。
ＫＥＭ暗号文生成部２０５は、生成した鍵データＫＢを共有鍵生成部２０７へ出力する。
（４）ＫＥＭ暗号文復号化部２０６
ＫＥＭ暗号文復号化部２０６は、暗号通信装置Ａ１０から送受信部２０２を介して、ＫＥＭ暗号文ＫＥＭＡを受信する。
【００８５】
ＫＥＭ暗号文復号化部２０６は、公開鍵暗号化アルゴリズムＫｅｍＥに対応する公開鍵復号アルゴリズムＫｅｍＤに対して、秘密鍵ＫＳＢ及びＫＥＭ暗号文ＫＥＭＡを入力値として与えて、受信したＫＥＭ暗号文ＫＥＭＡを復号化して、鍵データＫＡを生成する。鍵データＫＡの復号化方法については、上記にて示すＰＳＥＣ−ＫＥＭの復号化と同様の方法であるので、説明は省略する。
【００８６】
ＫＥＭ暗号文復号化部２０６は、生成した鍵データＫＡを共有鍵生成部２０７へ出力する。
（５）共有鍵生成部２０７
共有鍵生成部２０７は、ＫＥＭ暗号文生成部２０５から鍵データＫＢを、ＫＥＭ暗号文復号化部２０６から鍵データＫＡを、それぞれ受け取る。
【００８７】
共有鍵生成部２０７は、受け取った鍵データＫＡとＫＢを用いて、共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを生成し、生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを共有鍵格納部２０８に格納する。
共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとの生成には、共有鍵生成部１０７における生成方法と同一の方法が用いられる。
【００８８】
（６）共有鍵格納部２０８
共有鍵格納部２０８は、共有鍵生成部２０７で生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを格納するための領域を有している。
（７）チャレンジデータ生成部２０９
チャレンジデータ生成部２０９は、乱数であるチャレンジデータｎＢを生成し、生成したチャレンジデータｎＢを、送受信部２０２を介して暗号通信装置Ｂ２０へ送信する。
【００８９】
チャレンジデータ生成部２０９は、生成したチャレンジデータｎＢを一時的に記憶する。
（８）レスポンスデータ生成部２１０
レスポンスデータ生成部２１０は、暗号通信装置Ａ１０から送受信部２０２を介して、チャレンジデータｎＡと、チャレンジデータ生成部２０９にて送信したチャレンジデータｎＢに対するレスポンスデータｒＡを受け取る、または、チャレンジデータｎＡのみ受け取る。
【００９０】
（チャレンジデータｎＡとレスポンスデータｒＡとを受け取った場合）
レスポンスデータ生成部２１０は、暗号通信装置Ａ１０からチャレンジデータｎＡとレスポンスデータｒＡとを受け取ると、受け取ったチャレンジデータｎＡを一時的に記憶する。
レスポンスデータ生成部２１０は、レスポンスデータｒＡと、レスポンスデータの検証を指示する旨の検証指示とをレスポンスデータ検証部２１１へ出力する。
【００９１】
レスポンスデータ生成部２１０は、レスポンスデータ検証部２１１からレスポンスデータの生成を指示する旨のレスポンスデータ生成指示を受け取ると、ＭＡＣ生成指示と、一時的に記憶しているチャレンジデータｎＡとをＭＡＣ生成部２１２へ出力する。
レスポンスデータ生成部２１０は、ＭＡＣ生成部２１２からＭＡＣ値ＨｎＡを受け取ると、受け取ったＭＡＣ値ＨｎＡをレスポンスデータｒＢとして、送受信部２０２を介して暗号通信装置Ａ１０へ送信する。
【００９２】
なお、ＭＡＣ値ＨｎＡについては、ＭＡＣ生成部２１２の説明の箇所で後述する。
（チャレンジデータｎＡのみ受け取った場合）
レスポンスデータ生成部２１０は、暗号通信装置Ａ１０からチャレンジデータｎＡを受け取ると、ＭＡＣ生成指示と、受け取ったチャレンジデータｎＡとをＭＡＣ生成部２１２へ出力する。
【００９３】
レスポンスデータ生成部２１０は、ＭＡＣ生成部２１２からＭＡＣ値ＨｎＡを受け取ると、受け取ったＭＡＣ値ＨｎＡをレスポンスデータｒＢとして、チャレンジデータ生成部２０９にて生成したチャレンジデータｎＢとともに、送受信部２０２を介して暗号通信装置Ｂ２０へ送信する。
（９）レスポンスデータ検証部２１１
レスポンスデータ検証部２１１は、レスポンスデータ生成部２１０から検証指示と、レスポンスデータｒＡとを受け取ると、チャレンジデータ生成部２０９にて一時的に記憶されているチャレンジデータｎＢを取得する。
【００９４】
レスポンスデータ検証部２１１は、ＭＡＣ生成指示と、取得したチャレンジデータｎＢとをＭＡＣ生成部２１２へ出力する。
レスポンスデータ検証部２１１は、ＭＡＣ生成部２１２からＭＡＣ値ＨｎＢを受け取ると、ＭＡＣ値ＨｎＢとレスポンスデータｒＡとが一致するか否かを判断する。
一致すると判断する場合には、レスポンスデータ検証部２１１は、レスポンスデータ生成指示をレスポンスデータ生成部２１０へ出力する。
【００９５】
一致しないと判断する場合には、レスポンスデータ生成部２１０は、暗号通信に係る処理全体を中止する。
レスポンスデータ検証部２１１は、暗号通信装置Ａ１０から送受信部２０２を介して、レスポンスデータｒＡを受け取ると、チャレンジデータ生成部２０９にて一時的に記憶されているチャレンジデータｎＢを取得し、上記と同様の動作を行い、レスポンスデータｒＡの検証を行う。
【００９６】
（１０）ＭＡＣ生成部２１２
ＭＡＣ生成部２１２は、鍵付ハッシュ関数Ｈａｓｈを予め記憶している。
ＭＡＣ生成部１１２は、ＭＡＣ対象データＤＭに対して、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを使用して、所定のビット長ｔ（ｔは１以上）からなるＭＡＣ値ＨＤＭを生成（算出）する。なお、ＭＡＣ生成部２１２にて生成されるＭＡＣ値のビット長は、暗号通信装置Ａ１０のＭＡＣ生成部１１２にて生成されるＭＡＣ値のビット長と同一である。
【００９７】
ＭＡＣ生成部２１２は、レスポンスデータ生成部２１０からＭＡＣ生成指示と、チャレンジデータｎＡとを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部２１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＫＨとを用いて、チャレンジデータｎＡに対するＭＡＣ値ＨｎＡ（＝Ｈａｓｈ（ＫＨ，ｎＡ））を算出し、算出したＭＡＣ値ＨｎＡをレスポンスデータ生成部２１０へ出力する。
【００９８】
ＭＡＣ生成部２１２は、レスポンスデータ検証部２１１からＭＡＣ生成指示と、チャレンジデータｎＢとを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部２１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＭＡＣ用共有鍵ＫＨとを用いて、チャレンジデータｎＢに対するＭＡＣ値ＨｎＢ（＝Ｈａｓｈ（ＫＨ，ｎＢ））を算出し、算出したＭＡＣ値ＨｎＢをレスポンスデータ検証部２１１へ出力する。
【００９９】
ＭＡＣ生成部２１２は、ＭＡＣ生成指示と、暗号通信装置Ａ１０へ暗号化し送信するデータである暗号化対象データＤＢとを、ＤＥＭ暗号文生成部２１５から受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部２１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＭＡＣ用共有鍵ＫＨとを用いて、暗号化対象データＤＢに対するＭＡＣ値ＨＤＢ（＝Ｈａｓｈ（ＫＨ，ＤＢ））を算出し、算出したＭＡＣ値ＨＤＢをＤＥＭ暗号文生成部２１５へ出力する。
【０１００】
ＭＡＣ生成部２１２は、ＭＡＣ生成指示と、ＤＥＭ暗号文復号化部２１６から復号化データＤＡ’とを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨを取得する。ＭＡＣ生成部２１２は、予め記憶している鍵付ハッシュ関数Ｈａｓｈと、取得したＭＡＣ用共有鍵ＫＨとを用いて、復号化データＤＡ’に対するＭＡＣ値ＨＤＡ’（＝Ｈａｓｈ（ＫＨ，ＤＡ’））を算出し、算出したＭＡＣ値ＨＤＡ’をＤＥＭ暗号文生成部２１５へ出力する。
【０１０１】
復号化データＤＡ’については、共通鍵復号化部２１４の説明の箇所で後述する。
（１１）共通鍵暗号化部２１３
共通鍵暗号化部２１３は、暗号化対象データＤＢと、暗号化を指示する旨の暗号化指示とを、ＤＥＭ暗号文生成部２１５から受け取ると、共有鍵格納部２０８に格納している共通鍵暗号用共有鍵ＫＳを取得する。
【０１０２】
共通鍵暗号化部２１３は、取得した共通鍵暗号用共有鍵ＫＳと、共通鍵暗号アルゴリズムとを用いて、暗号化対象データＤＢを暗号化して、暗号化対象データＤＢに対する暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＢ））を生成する。ここで、Ｅｎｃ（ＫＳ，ＤＢ）は、鍵ＫＳを用いてデータＤＢを共通鍵暗号で暗号化した暗号文を意味する。共通鍵暗号は例えばＤＥＳ暗号やＡＥＳ暗号である。共通鍵暗号については、非特許文献２の７９〜１０５ページに記載されている。
【０１０３】
共通鍵暗号化部２１３は、生成した暗号化データＥｎｃ（ＫＳ，ＤＢ）をＤＥＭ暗号文生成部２１５へ出力する。
（１２）共通鍵復号化部２１４
共通鍵復号化部２１４は、暗号化対象データＤＡを共通鍵暗号用共有鍵ＫＳで暗号化した暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））と、暗号化データの復号化を指示する旨の復号指示とを、ＤＥＭ暗号文復号化部２１６から受け取ると、共有鍵格納部２０８に格納している共通鍵暗号用共有鍵ＫＳを取得する。
【０１０４】
共通鍵復号化部２１４は、取得した共通鍵暗号用共有鍵ＫＳと、共通鍵復号化アルゴリズムとを用いて、暗号化データＥｎｃ（ＫＳ，ＤＡ）を復号化して、復号化データＤＡ’を生成する。
共通鍵復号化部２１４は、生成した復号化データＤＡ’をＤＥＭ暗号文復号化部２１６へ出力する。
【０１０５】
（１３）ＤＥＭ暗号文生成部２１５
ＤＥＭ暗号文生成部２１５は、外部から入出力部２０１を介して、暗号化対象データＤＢを受け取ると、暗号化指示と、受け取った暗号化対象データＤＢとを、共通鍵暗号化部２１３へ出力する。
ＤＥＭ暗号文生成部２１５は、ＭＡＣ指示と、受け取った暗号化対象データＤＢとをＭＡＣ生成部２１２へ出力する。
【０１０６】
ＤＥＭ暗号文生成部２１５は、暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＢ））を共通鍵暗号化部２１３から受け取り、ＭＡＣ値ＨＤＢ（＝Ｈａｓｈ（ＫＨ，ＤＢ））をＭＡＣ生成部２１２から受け取ると、これらを連結して、ＤＥＭ暗号文ＤＥＭＢ（＝Ｅｎｃ（ＫＳ，ＤＢ）｜｜ＨＤＢ）を生成する。
ＤＥＭ暗号文生成部２１５は、生成したＤＥＭ暗号文ＤＥＭＢを、送受信部２０２を介して暗号通信装置Ａ１０へ送信する。
【０１０７】
（１４）ＤＥＭ暗号文復号化部２１６
ＤＥＭ暗号文復号化部２１６は、暗号通信装置Ａ１０から送受信部２０２を介して、ＤＥＭ暗号文ＤＥＭＡ（＝ＥＤＡ｜｜ＨＤＡ）を受け取る。ここで、ＥＤＡは暗号化対象データＤＡを暗号通信装置Ａ１０が有する共通鍵暗号用共有鍵ＫＳにて暗号化された暗号化データ（Ｅｎｃ（ＫＳ，ＤＡ））であり、ＨＤＡは暗号化対象データＤＡに対するＭＡＣ値（Ｈａｓｈ（ＫＨ，ＤＡ））である。
【０１０８】
ＤＥＭ暗号文復号化部２１６は、受け取ったＤＥＭ暗号文ＤＥＭＡ（＝ＥＤＡ｜｜ＨＤＡ）を暗号化データＥＤＡとＭＡＣ値ＨＤＡとに分離する。なお、ＤＥＭ暗号文復号化部２１６は、上記にて示すＤＥＭ暗号文復号化部１１６の分解の方法と同一の方法でＤＥＭ暗号文ＤＥＭＡの分解を行う。
ＤＥＭ暗号文復号化部２１６は、復号指示と、暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））とを共通鍵復号化部２１４へ出力する。
【０１０９】
ＤＥＭ暗号文復号化部２１６は、復号化データＤＡ’を共通鍵復号化部２１４から受け取ると、ＭＡＣ指示と復号化データＤＡ’とをＭＡＣ生成部２１２へ出力する。
ＤＥＭ暗号文復号化部２１６は、ＭＡＣ値ＨＤＡ’（＝Ｈａｓｈ（ＫＨ、ＤＢ’））を受け取ると、ＤＥＭ暗号文ＤＥＭＡから分離したＨＤＡとを比較し、一致するか否かを判断する。
【０１１０】
一致すると判断する場合には、ＤＥＭ暗号文復号化部２１６は、復号化データＤＡ’、つまり暗号化対象データＤＡを、入出力部２０１を介して外部へ出力する。
一致しないと判断する場合には、ＤＥＭ暗号文復号化部２１６は、暗号通信に係る処理全体を中止する。
（１５）入出力部２０１
入出力部２０１は、外部から暗号化対象データＤＢを受け付け、受け付けた暗号化対象データＤＢをＤＥＭ暗号文生成部２１５へ出力する。
【０１１１】
入出力部２０１は、ＤＥＭ暗号文復号化部２１６から復号化データＤＡ’を受け取ると、受け取った復号化データＤＡ’を外部へ出力する。
（１６）送受信部２０２
送受信部２０２は、ＫＥＭ暗号文ＫＥＭＢをＫＥＭ暗号文生成部２０５から受け取ると、受け取ったＫＥＭ暗号文ＫＥＭＡを、通信路３０を介して暗号通信装置Ａ１０へ送信する。
【０１１２】
送受信部２０２は、暗号通信装置Ａ１０から通信路３０を介して、ＫＥＭ暗号文ＫＥＭＡを受け取ると、受け取ったＫＥＭ暗号文ＫＥＭＡをＫＥＭ暗号文復号化部２０６へ出力する。
送受信部２０２は、チャレンジデータｎＢをチャレンジデータ生成部２０９から受け取ると、受け取ったチャレンジデータｎＢを、通信路３０を介して暗号通信装置Ａ１０へ送信する。
【０１１３】
送受信部２０２は、レスポンスデータｒＢをレスポンスデータ生成部２１０から受け取ると、受け取ったレスポンスデータｒＢを、通信路３０を介して暗号通信装置Ａ１０へ送信する。
送受信部２０２は、暗号通信装置Ａ１０から通信路３０を介して、チャレンジデータｎＡとレスポンスデータｒＡとを、若しくはチャレンジデータｎＡのみを受け取ると、受け取ったチャレンジデータｎＡ及びレスポンスデータｒＡを、若しくはチャレンジデータｎＡを、レスポンスデータ生成部２１０へ出力する。
【０１１４】
送受信部２０２は、暗号通信装置Ａ１０から通信路３０を介して、レスポンスデータｒＡを受け取ると、受け取ったレスポンスデータｒＡをレスポンスデータ検証部２１１へ出力する。
送受信部２０２は、ＤＥＭ暗号文ＤＥＭＢをＤＥＭ暗号文生成部２１５から受け取ると、受け取ったＤＥＭ暗号文ＤＥＭＢを、通信路３０を介して暗号通信装置Ａ１０へ送信する。
【０１１５】
送受信部２０２は、暗号通信装置Ａ１０から通信路３０を介して、ＤＥＭ暗号文ＤＥＭＡを受け取ると、受け取ったＤＥＭ暗号文ＤＥＭＡをＤＥＭ暗号文復号化部２１６へ出力する。
１．４  暗号通信システム１の動作
（１）動作概要
暗号通信システム１の動作は、大きく分けて、暗号通信装置Ａ１０と暗号通信装置Ｂ２０が鍵を共有する鍵共有フェーズ、共有した鍵を使用して相互で認証するチャレンジ・レスポンス認証フェーズ、共有した鍵を使用してデータを送受信するデータ暗号通信フェーズからなる。
【０１１６】
鍵共有フェーズでは、ＫＥＭを用いて暗号通信装置Ａ１０と暗号通信装置Ｂ２０とが相互認証及び鍵配送を行い、互いの装置にて鍵を共有する。
チャレンジ・レスポンス認証フェーズでは、共有した鍵を用いてチャレンジ・レスポンス認証を行うことにより、暗号通信装置Ａ１０と暗号通信装置Ｂ２０のそれぞれが、お互いの送信相手がなりすまし攻撃を行っていないことを確認する。
【０１１７】
データ暗号通信フェーズでは、共有した鍵を用いて暗号通信装置Ａ１０と暗号通信装置Ｂ２０との間で通信路３０を介して暗号したデータの送受信を行う。
ここで、データとは、例えば、テキストデータ、音楽データ、画像データ、映画コンテンツデータである。
（２）動作
以下、暗号通信システム１の動作について、図４から図７にて示す流れ図を用いて説明する。
【０１１８】
暗号通信装置Ａ１０のＫＥＭ暗号文生成部１０５は、公開鍵ＫＰＢと、ＫＥＭの公開鍵暗号化アルゴリズムＫｅｍＥとを用いて、鍵データＫＡ及び鍵データＫＡに対するＫＥＭ暗号文ＫＥＭＡを生成する（ステップＳ５）。
ＫＥＭ暗号文生成部１０５は、生成したＫＥＭ暗号文ＫＥＭＡを暗号通信装置Ｂ２０へ送信する（ステップＳ１０）。
【０１１９】
暗号通信装置Ｂ２０のＫＥＭ暗号文復号化部２０６は、暗号通信装置Ａ１０から送受信部２０２を介して、ＫＥＭ暗号文ＫＥＭＡを受信する（ステップＳ１５）。
ＫＥＭ暗号文復号化部２０６は、公開鍵暗号化アルゴリズムＫｅｍＥに対応する公開鍵復号アルゴリズムＫｅｍＤ、及び秘密鍵ＫＳＢを用いて、受信したＫＥＭ暗号文ＫＥＭＡを復号化して、鍵データＫＡを生成する（ステップＳ２０）。
【０１２０】
暗号通信装置Ｂ２０のＫＥＭ暗号文生成部２０５は、公開鍵ＫＰＡと、ＫＥＭの公開鍵暗号化アルゴリズムＫｅｍＥとを用いて、鍵データＫＢ及び鍵データＫＢに対するＫＥＭ暗号文ＫＥＭＢを生成する（ステップＳ２５）。
ＫＥＭ暗号文生成部２０５は、生成したＫＥＭ暗号文ＫＥＭＢを暗号通信装置Ａ１０へ送信する（ステップＳ３０）。
【０１２１】
暗号通信装置Ｂ２０の共有鍵生成部２０７は、ＫＥＭ暗号文生成部２０５にて生成された鍵データＫＢと、ＫＥＭ暗号文復号化部２０６にて生成された鍵データＫＡとを用いて、共有鍵Ｋ（＝ＫＡ  ｘｏｒ  ＫＢ）を生成する（ステップＳ３５）。
共有鍵生成部２０７は、生成した共有鍵Ｋから共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを生成し（Ｋ＝ＫＳ｜｜ＫＨ）、生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを共有鍵格納部２０８に格納する（ステップＳ４０）。
【０１２２】
暗号通信装置Ａ１０のＫＥＭ暗号文復号化部１０６は、暗号通信装置Ｂ２０から送受信部１０２を介して、ＫＥＭ暗号文ＫＥＭＢを受信する（ステップＳ４５）。
ＫＥＭ暗号文復号化部１０６は、公開鍵復号アルゴリズムＫｅｍＤ、及び秘密鍵ＫＳＡを用いて、受信したＫＥＭ暗号文ＫＥＭＢを復号化して、鍵データＫＢを生成する（ステップＳ５０）。
【０１２３】
暗号通信装置Ａ１０の共有鍵生成部１０７は、ＫＥＭ暗号文生成部１０５にて生成された鍵データＫＡと、ＫＥＭ暗号文復号化部１０６にて生成された鍵データＫＢとを用いて、共有鍵Ｋ（＝ＫＡ  ｘｏｒ  ＫＢ）を生成する（ステップＳ５５）。
共有鍵生成部１０７は、生成した共有鍵Ｋを用いて、共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを生成し（Ｋ＝ＫＳ｜｜ＫＨ）、生成した共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを共有鍵格納部１０８に格納する（ステップＳ６０）。
【０１２４】
暗号通信装置Ａ１０のチャレンジデータ生成部１０９は、チャレンジデータｎＡを生成し（ステップＳ６５）、生成したチャレンジデータｎＡを暗号通信装置Ｂ２０へ送信する（ステップＳ７０）。
暗号通信装置Ｂ２０のレスポンスデータ生成部２１０は、暗号通信装置Ａ１０からチャレンジデータｎＡを受け取る（ステップＳ７５）。
【０１２５】
暗号通信装置Ｂ２０のＭＡＣ生成部２１２は、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、予め記憶している鍵付ハッシュ関数Ｈａｓｈとを用いて、チャレンジデータｎＡに対するＭＡＣ値ＨｎＡ（＝Ｈａｓｈ（ＫＨ，ｎＡ））を算出し、算出したＭＡＣ値ＨｎＡをレスポンスデータｒＢとする（ステップＳ８０）。
暗号通信装置Ｂ２０のチャレンジデータ生成部２０９は、チャレンジデータｎＢを生成する（ステップＳ８５）。
【０１２６】
チャレンジデータ生成部２０９はチャレンジデータｎＢを、レスポンスデータ生成部２１０はレスポンスデータｒＢを、それぞれ暗号通信装置Ａ１０へ送信する（ステップＳ９０）。
暗号通信装置Ａ１０のレスポンスデータ生成部１１０は、暗号通信装置Ｂ２０からチャレンジデータｎＢとレスポンスデータｒＢとを受け取る（ステップＳ９５）。
【０１２７】
レスポンスデータ生成部１１０は、レスポンスデータｒＢと検証指示とをレスポンスデータ検証部１１１へ出力する。レスポンスデータ検証部１１１は、レスポンスデータ生成部１１０から検証指示とレスポンスデータｒＢとを受け取ると、チャレンジデータ生成部１０９にて一時的に記憶されているチャレンジデータｎＡを取得する。レスポンスデータ検証部１１１は、ＭＡＣ生成指示と、取得したチャレンジデータｎＡとをＭＡＣ生成部１１２へ出力する。ＭＡＣ生成部１１２は、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、チャレンジデータｎＡに対するＭＡＣ値ＨｎＡを算出し、算出したＭＡＣ値ＨｎＡをレスポンスデータ検証部１１１へ出力する。レスポンスデータ検証部１１１は、ＭＡＣ生成部１１２からＭＡＣ値ＨｎＡを受け取ると、ＭＡＣ値ＨｎＡとレスポンスデータｒＢとが一致するか否かを判断する（ステップＳ１００）。
【０１２８】
一致しないと判断する場合には（ステップＳ１００における「ＮＧ」）、暗号通信に係る処理は中止される。
一致すると判断する場合には（ステップＳ１００における「ＯＫ」）、レスポンスデータ検証部１１１は、レスポンスデータ生成指示をレスポンスデータ生成部１１０へ出力する。レスポンスデータ生成部１１０は、レスポンスデータ検証部１１１からレスポンスデータ生成指示を受け取ると、ＭＡＣ生成指示と、一時的に記憶しているチャレンジデータｎＢとをＭＡＣ生成部１１２へ出力する。ＭＡＣ生成部１１２は、レスポンスデータ検証部１１１からＭＡＣ生成指示と、チャレンジデータｎＢとを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、チャレンジデータｎＢに対するＭＡＣ値ＨｎＢ（＝Ｈａｓｈ（ＫＨ，ｎＢ））を算出し、算出したＭＡＣ値ＨｎＢをレスポンスデータｒＡとする（ステップＳ１０５）。
【０１２９】
レスポンスデータ生成部１１０は、レスポンスデータｒＡを暗号通信装置Ｂ２０へ送信する（ステップＳ１１０）。
暗号通信装置Ｂ２０のレスポンスデータ検証部２１１は、暗号通信装置Ａ１０からレスポンスデータｒＡを受け取る（ステップＳ１１５）。
レスポンスデータ検証部２１１は、チャレンジデータ生成部２０９にて一時的に記憶されているチャレンジデータｎＢを取得する。レスポンスデータ検証部２１１は、ＭＡＣ生成指示と、取得したチャレンジデータｎＢとをＭＡＣ生成部２１２へ出力する。ＭＡＣ生成部２１２は、レスポンスデータ検証部２１１からＭＡＣ生成指示と、チャレンジデータｎＢとを受け取ると、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、チャレンジデータｎＢに対するＭＡＣ値ＨｎＢを算出し、算出したＭＡＣ値ＨｎＢをレスポンスデータ検証部２１１へ出力する。レスポンスデータ検証部２１１は、ＭＡＣ生成部２１２からＭＡＣ値ＨｎＢを受け取ると、ＭＡＣ値ＨｎＢとレスポンスデータｒＡとが一致するか否かを判断する（ステップＳ１２０）。
【０１３０】
一致しないと判断する場合には（ステップＳ１２０における「ＮＧ」）、暗号通信に係る処理は中止される。
一致すると判断する場合には（ステップＳ１２０における「ＯＫ」）、暗号通信に係る処理は続行される。
暗号通信装置Ａ１０のＤＥＭ暗号文生成部１１５は、外部から入出力部１０１を介して、暗号化対象データＤＡを受け取る（ステップＳ１２５）。
【０１３１】
暗号通信装置Ａ１０の共通鍵暗号化部１１３は、共有鍵格納部１０８に格納している共通鍵暗号用共有鍵ＫＳと、共通鍵暗号アルゴリズムとを用いて、ＤＥＭ暗号文生成部１１５が受け取った暗号化対象データＤＡを暗号化して、暗号化対象データＤＡに対する暗号化データＥＤＡ（＝Ｅｎｃ（ＫＳ，ＤＡ））を生成する（ステップＳ１３０）。
暗号通信装置Ａ１０のＭＡＣ生成部１１２は、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨと鍵付ハッシュ関数Ｈａｓｈとを用いて、ＤＥＭ暗号文生成部１１５が受け取った暗号化対象データＤＡに対するＭＡＣ値ＨＤＡ（＝Ｈａｓｈ（ＫＨ，ＤＡ））を算出する（ステップＳ１３５）。
【０１３２】
ＤＥＭ暗号文生成部１１５は、共通鍵暗号化部１１３にて生成された暗号化データＥＤＡと、ＭＡＣ生成部１１２にて算出されたＭＡＣ値ＨＤＡとを連結して、ＤＥＭ暗号文ＤＥＭＡ（＝Ｅｎｃ（ＫＳ，ＤＡ）｜｜ＨＤＡ）を生成する（ステップＳ１４０）。
ＤＥＭ暗号文生成部１１５は、生成したＤＥＭ暗号文ＤＥＭＡを、暗号通信装置Ｂ２０へ送信する（ステップＳ１４５）。
【０１３３】
暗号通信装置Ｂ２０のＤＥＭ暗号文復号化部２１６は、暗号通信装置Ａ１０からＤＥＭ暗号文ＤＥＭＡを受け取る（ステップＳ１５０）。
ＤＥＭ暗号文復号化部２１６は、受け取ったＤＥＭ暗号文ＤＥＭＡを暗号化データＥＤＡとＭＡＣ値ＨＤＡとに分離する（ステップＳ１５５）。
暗号通信装置Ｂ２０の共通鍵復号化部２１４は、共有鍵格納部２０８に格納している共通鍵暗号用共有鍵ＫＳと、共通鍵復号化アルゴリズムとを用いて、ＤＥＭ暗号文復号化部２１６が取得した暗号化データＥＤＡを復号化して、復号化データＤＡ’を生成する（ステップＳ１６０）。
【０１３４】
暗号通信装置Ｂ２０のＭＡＣ生成部２１２は、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、共通鍵復号化部２１４にて生成された復号化データＤＡ’に対するＭＡＣ値ＨＤＡ’（＝Ｈａｓｈ（ＫＨ，ＤＡ’））を算出する（ステップＳ１６５）。
ＤＥＭ暗号文復号化部２１６は、ＭＡＣ生成部２１２にて算出されたＭＡＣ値ＨＤＡ’（＝Ｈａｓｈ（ＫＨ、ＤＢ’））と、ＤＥＭ暗号文ＤＥＭＡから分離したＨＤＡとを比較し、一致するか否かを判断する（ステップＳ１７０）。
【０１３５】
一致しないと判断する場合には（ステップＳ１７０における「ＮＧ」）、暗号通信に係る処理は中止される。
一致すると判断する場合には（ステップＳ１７０における「ＯＫ」）、ＤＥＭ暗号文復号化部２１６は、復号化データＤＡ’、つまり暗号化対象データＤＡを、入出力部２０１を介して外部へ出力する（ステップＳ１７５）。
【０１３６】
暗号通信装置Ｂ２０のＤＥＭ暗号文生成部２１５は、外部から入出力部２０１を介して、暗号化対象データＤＢを受け取る（ステップＳ１８０）。
暗号通信装置Ｂ２０の共通鍵暗号化部２１３は、共有鍵格納部２０８に格納している共通鍵暗号用共有鍵ＫＳと、共通鍵暗号アルゴリズムとを用いて、ＤＥＭ暗号文生成部２１５が受け取った暗号化対象データＤＢを暗号化して、暗号化対象データＤＢに対する暗号化データＥＤＢ（＝Ｅｎｃ（ＫＳ，ＤＡ））を生成する（ステップＳ１８５）。
【０１３７】
暗号通信装置Ｂ２０のＭＡＣ生成部２１２は、共有鍵格納部２０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、ＤＥＭ暗号文生成部２１５が受け取った暗号化対象データＤＢに対するＭＡＣ値ＨＤＢ（＝Ｈａｓｈ（ＫＨ，ＤＢ））を算出する（ステップＳ１９０）。
ＤＥＭ暗号文生成部２１５は、共通鍵暗号化部２１３にて生成された暗号化データＥＤＢと、ＭＡＣ生成部２１２にて算出されたＭＡＣ値ＨＤＢとを連結して、ＤＥＭ暗号文ＤＥＭＢ（＝Ｅｎｃ（ＫＳ，ＤＢ）｜｜ＨＤＢ）を生成する（ステップＳ１９５）。
【０１３８】
ＤＥＭ暗号文生成部２１５は、生成したＤＥＭ暗号文ＤＥＭＢを暗号通信装置Ａ１０へ送信する（ステップＳ２００）。
暗号通信装置Ａ１０のＤＥＭ暗号文復号化部１１６は、暗号通信装置Ｂ２０からＤＥＭ暗号文ＤＥＭＢを受け取る（ステップＳ２０５）。
ＤＥＭ暗号文復号化部１１６は、受け取ったＤＥＭ暗号文ＤＥＭＢ（＝ＥＤＢ｜｜ＨＤＢ）を暗号化データＥＤＢとＭＡＣ値ＨＤＢとに分離する（ステップＳ２１０）。
【０１３９】
暗号通信装置Ａ１０の共通鍵復号化部１１４は、共有鍵格納部１０８に格納している共通鍵暗号用共有鍵ＫＳと共通鍵復号化アルゴリズムとを用いて、ＤＥＭ暗号文復号化部１１６が取得した暗号化データＥＤＢを復号化して、復号化データＤＢ’を生成する（ステップＳ２１５）。
暗号通信装置Ａ１０のＭＡＣ生成部１１２は、共有鍵格納部１０８に格納しているＭＡＣ用共有鍵ＫＨと、鍵付ハッシュ関数Ｈａｓｈとを用いて、共通鍵復号化部１１４にて生成された復号化データＤＢ’に対するＭＡＣ値ＨＤＢ’（＝Ｈａｓｈ（ＫＨ，ＤＢ’））を算出する（ステップＳ２２０）。
【０１４０】
ＤＥＭ暗号文復号化部１１６は、ＭＡＣ生成部１１２にて算出されたＭＡＣ値ＨＤＢ’と、ＤＥＭ暗号文ＤＥＭＢから分離したＨＤＢとを比較し、一致するか否かを判断する（ステップＳ２２５）。
一致しないと判断する場合には（ステップＳ２２５における「ＮＧ」）、暗号通信に係る処理は中止される。
【０１４１】
一致すると判断する場合には（ステップＳ２３０における「ＯＫ」）、ＤＥＭ暗号文復号化部１１６は、復号化データＤＢ’、つまり暗号化対象データＤＢを、入出力部１０１を介して外部へ出力する（ステップＳ２３０）。
ここで、鍵共有フェーズはステップＳ５からステップＳ６０までの処理に、チャレンジ・レスポンス認証フェーズはステップＳ６５からステップＳ１２０までの処理に、データ暗号通信フェーズはステップＳ１２５からステップＳ２３０までの処理に、それぞれ相当する。
【０１４２】
１．５  第１の実施の形態の効果
第１の実施の形態では、鍵カプセル化メカニズム（ＫＥＭ）と、ＤＥＭ暗号文を送信する処理に、ＭＡＣ用共有鍵を用いたチャレンジ・レスポンス認証を実行する処理を追加することで、共有鍵の漏洩の困難性だけでなく、なりすまし攻撃に対する安全性を保証できる。
【０１４３】
以下に、それを詳細に説明する。
鍵カプセル化メカニズムで共有した鍵を用いて、データに対して、暗号化した暗号化データとそのデータに対する鍵付ハッシュ関数値を送信するような方式であれば、データ暗号化方法として、困難な数学上の問題を根拠にして共有鍵の漏洩や暗号文データに対する平文データの漏洩に関する安全性証明を可能であることが保証されている。
【０１４４】
なお、これについては、著者Ｖｉｃｔｏｒ  Ｓｈｏｕｐにより“Ａ  ｐｒｏｐｏｓａｌ  ｆｏｒ  ａｎ  ＩＳＯ  ｓｔａｎｄａｒｄ  ｆｏｒ  ｐｕｂｌｉｃ  ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ  （ｖｅｒｓｉｏｎ  ２．１）”に記載されているので、ここでの説明は省略する。
本方式は、同様に、鍵カプセル化メカニズムで共有した鍵を用いて、データに対して、暗号化した暗号化データとそのデータに対する鍵付ハッシュ値を送信しているため、同様の安全性が保証できる。
【０１４５】
また、暗号通信装置Ａ１０において、正しい秘密鍵ＫＳＡを保持していなければ、ＫＥＭ暗号文ＫＥＭＢを復号化して鍵データＫＢを取得できないため、暗号通信装置Ｂ２０と共有した共通鍵暗号用共有鍵ＫＳ及びＭＡＣ用共有鍵ＫＨを得られない。そのため、ステップＳ２１５にて暗号データＥＤＢの復号化ができない。また、暗号通信装置Ｂ２０も同様に、正しい秘密鍵ＫＳＢを保持していなければ、ＫＥＭ暗号文ＫＥＭＡを復号化して鍵データＫＡを取得できないため、暗号通信装置Ａ１０と共有した共通鍵暗号用共有鍵ＫＳ及びＭＡＣ用共有鍵ＫＨを得られない。そのため、ステップＳ１６０にて暗号化データＥＤＡの復号化ができない。鍵データＫＡまたは、鍵データＫＢを正しく取得するためには、正しい秘密鍵ＫＳＡまたは、ＫＳＢが必要である。
【０１４６】
したがって、両方の機器からＫＥＭ暗号文ＫＥＭＢ、ＫＥＭＡを送りあうことにより、双方向の認証が実現できている。
さらに、第１の実施の形態では、ＭＡＣ用共有鍵ＫＨを用いたチャレンジ・レスポンス認証を実行している。正しい暗号通信装置であると判定されるためには、正しいレスポンスデータを送信する必要がある。第１の実施の形態では、レスポンスデータを生成するために、ＤＥＭ暗号文生成部で使用するＭＡＣ生成部を使用する。ＤＥＭ暗号文生成部で使用するＭＡＣ生成部では、ＭＡＣ用共有鍵ＫＨを知らない限り、正しいレスポンスデータを生成できる確率は非常に低い。
【０１４７】
したがって、正しいレスポンスデータを生成できる場合、すなわち、認証を通過してなりすまし攻撃が可能である場合、攻撃者はＭＡＣ用共有鍵ＫＨを知っていることになる。しかし、ＭＡＣ用共有鍵ＫＨに限らず、ＫＥＭを用いて生成した各共有鍵の漏洩は困難（共有鍵の漏洩に対して安全）であることが証明可能であるため、なりすまし攻撃が困難であることが証明可能となる。
【０１４８】
以上より、鍵漏洩や平文漏洩の安全性だけでなく、なりすまし攻撃に対する安全性を保証できる認証鍵共有を実現でき、その価値は大きい。
１．６  暗号通信システム１の変形例
上記実施の形態では、暗号通信システム１は２台の暗号通信装置から構成されるとしたが、これに限定されない。
【０１４９】
本発明における暗号通信システムは、１台のコンピュータ装置内において、耐タンパ性を有する領域Ａと他の領域Ｂとにおいてデータを送受信（入出力）する際に暗号通信を行う２つのプログラムからなるとしてもよい。これら２つのプログラムは、コンピュータ装置によって実行され、実行された２つのプログラム間で、本発明の暗号通信が行われる。
ここで、暗号通信を行う２つのプログラムをプログラムＡ及びＢとし、プログラムＡは領域Ａに存在し、プログラムＢは領域Ｂに存在するものとする。
【０１５０】
プログラムＡ及びプログラムＢのそれぞれは、入出力ステップ、送受信部ステップ、ＫＥＭ暗号文生成ステップ、ＫＥＭ暗号文復号化ステップ、共有鍵生成ステップ、チャレンジデータ生成ステップ、レスポンスデータ生成ステップ、レスポンスデータ検証ステップ、ＭＡＣ生成ステップ、共通鍵暗号化ステップ、共有鍵復号化ステップ、ＤＥＭ暗号文生成ステップ、及びＤＥＭ暗号文復号化ステップを含んでいる。
【０１５１】
また、領域Ａ及びＢは、上記にて示す暗号通信装置と同様に、通信相手の公開鍵を格納している公開鍵格納部、自身の秘密鍵を格納している秘密鍵格納部、及び共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを格納する領域を有している共有鍵格納部を有している。ここで、領域Ａにおける各格納部の内容は、領域Ａが耐タンパ性を有しているので外部へは漏洩されないようになっているが、領域Ｂにおける各格納部の内容についても外部へは漏洩されない仕組み（例えば、耐タンパ性）になっているものとする。
【０１５２】
各ステップが上記の実施の形態にて示す各構成要素と同様の動作を行うことで、上記と同様に、鍵共有フェーズ、チャレンジ・レスポンス認証フェーズ及びデータ暗号通信フェーズが実現されるので、各ステップの動作についての説明は省略する。
なお、ここでは、本発明を２つのプログラム間における暗号通信に適用したが、これに限定されない。
【０１５３】
本発明は、暗号通信装置とプログラムとの間における暗号通信に適用してもよい。具体的には、暗号通信装置をＤＶＤ装置とし、プログラムがＤＶＤに記録されているとした場合における暗号通信に適用してもよい。なお、プログラムは、ＤＶＤ装置内における実行手段にて実行され、ＤＶＤ装置に具備された構成要素（例えば、暗号通信装置Ａ１０と同様の構成要素）と、実行されたプログラム間で、本発明の暗号通信が行われる。
【０１５４】
１．７  その他の変形例
上記に説明した実施の形態は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
（１）上記の実施の形態において、暗号通信装置Ａ１０及び暗号通信装置Ｂ２０のそれぞれからデータを送受信したが、これに限定されない。
【０１５５】
１の暗号通信装置（例えば、暗号通信装置Ａ１０）のみがデータを送信し、他の暗号通信装置（例えば、暗号通信装置Ｂ２０）のみがデータを受信としてもよい。
（２）上記の実施の形態において、鍵共有フェーズとチャレンジ・レスポンス認証フェーズの間や、チャレンジ・レスポンス認証フェーズとデータ暗号通信フェーズの間には、その他の何らかの処理、例えば、機器の機能（音楽視聴機能、映画視聴機能や放送受信機能など）の確認処理が途中に含まれてもよい。また、各フェーズの内部の処理ステップの順番は、上記で示したものに限らない。
【０１５６】
（３）上記の実施の形態において、チャレンジ・レスポンス認証フェーズでは、各暗号通信装置は、ランダムに生成したチャレンジデータを通信相手の装置へ送信しているが、これに限定されない。
各暗号通信装置は、通信相手からのＫＥＭ暗号文から求められる鍵データ（暗号通信装置Ａ１０であれば鍵データＫＢ、暗号通信装置Ｂ２０であれば鍵データＫＡ）をチャレンジデータとしてもよい。
【０１５７】
そうすることで、チャレンジデータを送信する処理を削減できる。この時、相手先では、自身が生成した鍵データとチャレンジデータとして送信された鍵データとが一致するか否かを確認することでチャレンジ・レスポンス認証フェーズと同様の認証が行える。
例えば、暗号通信装置Ａ１０は、暗号通信装置Ｂ２０からチャレンジデータｒＢ（＝Ｈａｓｈ（ＫＨ，ＫＡ））を受け取ると、自身が生成したＫＡに対するＭＡＣ値を算出し、算出したＭＡＣ値とチャレンジデータｒＢとが一致するか否かを判断することにより、通信相手の認証を行う。
【０１５８】
また、暗号通信装置Ｂ２０は、暗号通信装置Ａ１０からチャレンジデータｒＡ（＝Ｈａｓｈ（ＫＨ，ＫＢ））を受け取ると、自身が生成したＫＢに対するＭＡＣ値を算出し、算出したＭＡＣ値とチャレンジデータｒＡとが一致するか否かを判断することにより、通信相手の認証を行う。
（４）上記実施の形態において、各暗号通信装置の共有鍵生成部は、共有鍵Ｋを生成し、生成した共有鍵Ｋの一部を共通鍵暗号用共有鍵ＫＳとし、それ以外の部分をＭＡＣ用共有鍵ＫＨとしたが、これに限定されない。
【０１５９】
各暗号通信装置の共有鍵生成部は、生成した共有鍵Ｋそのものを、共通鍵暗号用共有鍵ＫＳ及びＭＡＣ用共有鍵ＫＨとしてもよい。つまり、Ｋ＝ＫＳ＝ＫＨである。
（５）上記の実施の形態において、各暗号通信装置の共有鍵生成部は、共有鍵Ｋを生成する際に鍵ＫＡと鍵ＫＢの排他的論理和を用いて生成したが、これに限定されない。
共有鍵生成部は、ＭＡＣ生成部で使用しているハッシュ関数Ｈａｓｈを使用して、共有鍵Ｋを生成してもよい。
【０１６０】
例えば、各暗号通信装置の共有鍵生成部は、Ｈａｓｈ（ＫＡ，ＫＢ）を共有鍵Ｋとしてもよいし、Ｈａｓｈ（ＫＢ，ＫＡ）を共有鍵Ｋとしてもよい。
また、ハッシュ関数Ｈａｓｈを上記実施の形態にて示すＳＨＡ１とする場合、各暗号通信装置の共有鍵生成部は、ＳＨＡ１（ＫＡ｜｜ＫＢ）を共有鍵Ｋとしてもよいし、ＳＨＡ１（ＫＢ｜｜ＫＡ）を共有鍵Ｋとしてもよい。
【０１６１】
これにより、共有鍵生成における安全性が向上する。
（６）上記の実施の形態において、各暗号通信装置は、通信相手の公開鍵を予め、公開鍵格納部に格納しているが、これに限定されない。
暗号通信装置は、証明書センタが発行した公開鍵証明書（公開鍵に対する証明書センタの署名と、公開鍵そのものとを含む）を、通信相手に送信するとしてもよい。例えば、暗号通信装置Ａ１０は通信相手である暗号通信装置Ｂ２０から公開鍵ＫＰＢに対する公開鍵証明書を受け取り、暗号通信装置Ｂ２０は通信相手である暗号通信装置Ａ１０から公開鍵ＫＰＡに対する公開鍵証明書を受け取る。
【０１６２】
その場合、通信相手である暗号通信装置は、証明書センタの公開鍵を有しており、鍵共有フェーズの前に、互いの公開鍵証明書を証明書センタの公開鍵を用いて検証し、正しい証明書と判定したときに公開鍵格納部に、公開鍵証明書に含まれる公開鍵を格納する。
また、各暗号通信装置は、公開鍵証明書を証明書センタから受け取るとしてもよい。
（７）上記の実施の形態において、チャレンジ・レスポンス認証を行う際に、鍵付ハッシュ値を計算する方法を用いたが、これに限定されない。
【０１６３】
例えば、チャレンジデータをＭＡＣ用共有鍵ＫＨで暗号化して生成したレスポンスデータをやりとりするとしてもよい。
この場合における検証は、レスポンスデータの暗号化を解いた結果と送信元が保持しているチャレンジデータとを比較してもよいし、送信元が保持しているチャレンジデータを同様の方法で暗号化した結果とレスポンスデータとを比較してもよい。
【０１６４】
また、認証方法もチャレンジ・レスポンスに限定されるものではない。ＫＥＭにより共有した鍵データが認証結果に影響するような認証方法であれば、どのようなものでも構わない。
また、チャレンジ・レスポンス認証においても、上記実施の形態にて示す認証方法に限定されない。上記にて示す方法とは異なる方法によるチャレンジ・レスポンス認証であってもよい。
【０１６５】
以下、その一例について説明する。なお、ここでは、暗号通信装置Ａ１０が暗号通信装置Ｂ２０を認証する場合について、図５にて示すステップＳ６５からＳ１００までの変更点を中心に説明する。
暗号通信装置Ａ１０はステップＳ６５を実行後、生成したチャレンジデータｎＡを暗号通信装置Ａ１０が有するＭＡＣ用共有鍵ＫＨにて暗号化して暗号化データＥｎｃ（ＫＨ，ｎＡ）を生成する。
【０１６６】
暗号通信装置Ａ１０は、ステップＳ７０において、生成した暗号化データＥｎｃ（ＫＨ，ｎＡ）を暗号化通信装置Ｂ２０へ送信する。
暗号通信装置Ｂ２０は、ステップＳ７５にて、暗号化データＥｎｃ（ＫＨ，ｎＡ）を受信する。
暗号通信装置Ｂ２０は、ステップＳ８０にて、受信した暗号化データＥｎｃ（ＫＨ，ｎＡ）を自身が有するＭＡＣ用共有鍵ＫＨにて復号し、復号データｎＡ’を生成し、生成した復号データｎＡ’をレスポンスデータｒＢ（＝ｎＡ’）とする。
【０１６７】
暗号通信装置Ｂ２０は、ステップＳ８５、Ｓ９０を実行する。
暗号化通信装置Ａ１０は、ステップＳ９５の実行後、受け取ったレスポンスデータと、自身が記憶しているチャレンジデータｎＡを比較して暗号通信装置Ｂ２０の正当性を判断する。
なお、ステップＳ８５において、暗号通信装置Ｂ２０は、生成したチャレンジデータｎＢを暗号通信装置Ｂ２０が有するＭＡＣ用共有鍵ＫＨにて暗号化して暗号化データＥｎｃ（ＫＨ，ｎＢ）を生成してもよい。このとき、暗号通信装置Ａ１０は、ステップＳ１０５にて、受信した暗号化データＥｎｃ（ＫＨ，ｎＢ）を自身が有するＭＡＣ用共有鍵ＫＨにて復号し、復号データｎＢ’を生成し、生成した復号データｎＢ’をレスポンスデータｒＡ（＝ｎＢ’）とする。
【０１６８】
（８）上記の実施の形態において、双方向でチャレンジ・レスポンス認証を行っているが、これに限定されない。
片方向のチャレンジ・レスポンス認証であってもよい。その場合においても、被認証者のなりすまし攻撃に対する安全性証明が可能である。
なお、この場合には、ＭＡＣ用共有鍵ＫＨを作成する必要はなく、鍵データＫＡや鍵データＫＢを直接用いて認証を行うとしてもよい。つまり、片方向の認証であるので、ＫＥＭ暗号文の受信先が正しい秘密鍵を持っていれば、鍵データＫＡ若しくは鍵データＫＢを取得できるので、取得した鍵データを用いて認証を行えばよい。
【０１６９】
この場合、例えば、鍵データＫＡを共有した場合に、暗号通信装置Ｂ２０から暗号通信装置Ａ１０へ片方向認証を行うことにより、簡易な相互認証を行うこともできる。すなわち、鍵データを共有できていることから、暗号通信装置Ｂ２０は正当な秘密鍵ＫＳＢを持っていることが確認できるので、暗号通信装置Ｂ２０が正当なものであることが確認できる。その後、チャレンジ・レスポンス認証によって、暗号通信装置Ａ１０が鍵データＫＡを共有している装置であるか否かが確認されるので、暗号通信装置Ａ１０の正当性を確認できる。
【０１７０】
また、ＭＡＣ用共有鍵ＫＨを生成した上で、これを用いて片方向の認証を行ってもよいし、上記の場合でも暗号通信装置Ａ１０から暗号通信装置Ｂ２０への片方向認証を行ってもよいことは言うまでもない。
（９）上記の実施の形態において、暗号通信装置Ｂ２０はＩＣ機能付のメモリカードであるとしてもよい。
【０１７１】
ＩＣ機能付のメモリカードの構成は、暗号通信装置Ｂ２０と同様の構成要素で実現できるので、ここでの説明は省略する。
なお、本発明において、ＩＣ機能付のメモリカードは、暗号通信装置の概念に含めるものとする。つまり、本発明は、２つのＩＣ機能付のメモリカード間における暗号通信に適用してもよいし、上記にて示す暗号通信装置Ａ１０とＩＣ機能付のメモリカード間における暗号通信に適用してもよい。
【０１７２】
（１０）上記の実施の形態において、共有鍵生成部１０７及び２０７は、共有鍵データＫに対してＫ＝ＫＳ｜｜ＫＨを満たすように共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを取得するとしたが、これに限定されない。
共有鍵生成部１０７及び２０７は、共有鍵データＫに対してＫ＝ＫＨ｜｜ＫＳを満たすように共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとを取得してもよい。
【０１７３】
例えば、共有鍵データＫに対して別々の変換を施して得られる２つの値をそれぞれ共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨとしてもよい。
つまり、共通鍵暗号用共有鍵ＫＳとＭＡＣ用共有鍵ＫＨのそれぞれは、共有鍵データＫに依存して決まる値であればよい。
（１１）上記実施の形態において、暗号通信装置Ｂ２０は、レスポンスデータｒＢとチャレンジデータｎＢとを一緒に、暗号通信装置Ａ１０へ送信したが、これに限定されない。
【０１７４】
レスポンスデータｒＢとチャレンジデータｎＢとを別々のタイミングで暗号通信装置Ａ１０へ送信してもよい。この場合、暗号通信装置Ａ１０は、レスポンスデータｒＢとチャレンジデータｎＢとを別々のタイミングで受信してもよい。
（１２）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０１７５】
（１３）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０１７６】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１７７】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
（１４）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０１７８】
（１５）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
（１６）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。
【０１７９】
（１７）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
（１８）また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０１８０】
（１９）また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（２０）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【０１８１】
１．８  まとめ
（１）本発明は、第１の暗号通信装置と第２の暗号通信装置を備え、前記第１の暗号通信装置と前記第２の暗号通信装置との間で鍵配送を行い、共有した鍵を用いて前記第１の暗号通信装置から前記第２の暗号通信装置へコンテンツデータを送信する暗号通信システムであって、前記第１の暗号通信装置は、前記コンテンツデータの入力を受け付ける入力部と、前記第２の暗号通信装置へデータを送信し、前記第２の暗号通信装置からデータ受信する第１の送受信部と、第１の鍵と第１の鍵を暗号化した第１の鍵暗号文を生成する第１の鍵暗号文生成部と、第２の鍵暗号文を復号化して第１の復号化鍵を生成する第１の鍵暗号文復号化部と、前記第１の鍵と前記第１の復号化鍵に基づき第１の共有鍵を生成する第１の共有鍵生成部と、前記第１の共有鍵を格納する第１の共有鍵格納部と、第１のチャレンジデータを生成する第１のチャレンジデータ生成部と、第２のチャレンジデータに対する第１のレスポンスデータを生成する第１のレスポンスデータ生成部と、第２のレスポンスデータを検証する第１のレスポンスデータ検証部と、前記コンテンツデータを暗号化して暗号化コンテンツデータを生成するデータ暗号文生成部とを備え、前記第２の暗号通信装置は、復号化コンテンツデータを出力する出力部と、前記第１の暗号通信装置へデータを送信し、前記第１の暗号通信装置からデータ受信する第２の送受信部と、第２の鍵と第２の鍵を暗号化した前記第２の鍵暗号文を生成する第２の鍵暗号文生成部と、前記第１の鍵暗号文を復号化して第２の復号化鍵を生成する第２の鍵暗号文復号化部と、前記第２の鍵と前記第２の復号化鍵に基づき第２の共有鍵を生成する第２の共有鍵生成部と、前記第２の共有鍵を格納する第２の共有鍵格納部と、前記第２のチャレンジデータを生成する第２のチャレンジデータ生成部と、前記第１のチャレンジデータに対する前記第２のレスポンスデータを生成する第２のレスポンスデータ生成部と、前記第１のレスポンスデータを検証する第２のレスポンスデータ検証部と、前記暗号化コンテンツデータを復号化して前記復号化コンテンツデータを生成するデータ暗号文復号化部とを備え、前記第１のレスポンスデータ生成部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第１のレスポンスデータとし、前記第１のレスポンスデータ検証部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第２のレスポンスデータの検証に用い、前記データ暗号文生成部は、前記暗号化コンテンツデータを前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値、データ暗号文用鍵付ハッシュ関数を使用して生成し、前記第２のレスポンスデータ生成部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第２のレスポンスデータとし、前記第２のレスポンスデータ検証部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第１のレスポンスデータの検証に用い、前記データ暗号文復号化部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
【０１８２】
（２）上記（１）において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、同一であるとしてもよい。
（３）上記（１）において、前記第１の鍵暗号文及び前記第２の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
（４）上記（１）から（３）の何れかにおいて、前記第１の共有鍵生成部は、前記第１の鍵と前記第１の復号化鍵の排他的論理和を前記第１の共有鍵として出力し、前記第２の共有鍵生成部は、前記第２の鍵と前記第２の復号化鍵の排他的論理和を前記第２の共有鍵として出力するとしてもよい。
【０１８３】
（５）上記（１）から（３）の何れかにおいて、前記第１の共有鍵生成部は、前記第１の鍵と前記第１の復号化鍵をビット連結したものに対して、共有鍵を生成するハッシュ関数である共有鍵生成ハッシュ関数を用いて計算したハッシュ値を前記第１の共有鍵として出力し、前記第２の共有鍵生成部は、前記第２の会議と前記第２の復号化鍵をビット連結したものに対して、前記共有鍵生成ハッシュ関数を用いて計算したハッシュ値を前記第２の共有鍵として出力するとしてもよい。
【０１８４】
（６）上記（５）において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
（７）上記（１）から（６）の何れかにおいて、前記第１の暗号通信装置は、第１のチャレンジデータ生成部を備えず、前記第１のチャレンジデータを前記第１の鍵とし、前記第２の暗号通信装置は、第２のチャレンジデータ生成部を備えず、前記第２のチャレンジデータを前記第２の鍵とするとしてもよい。
【０１８５】
（８）また、本発明は、コンテンツ送信装置とコンテンツ受信装置を備え、前記コンテンツ送信装置と前記コンテンツ受信装置との間で鍵配送を行い、共有した鍵を用いて暗号化通信を行う暗号通信システムにおけるコンテンツ送信装置であって、前記コンテンツデータの入力を受け付ける入力部と、前記コンテンツ受信装置へデータを送信し、前記コンテンツ受信装置からデータを受信する送受信部と、第１の鍵と第１の鍵を暗号化した第１の鍵暗号文を生成する第１の鍵暗号文生成部と、前記コンテンツ受信装置から送信される第２の鍵暗号文を復号化して第１の復号化鍵を生成する第１の鍵暗号文復号化部と、前記第１の鍵と前記第１の復号化鍵に基づき第１の共有鍵を生成する共有鍵生成部と、前記第１の共有鍵を格納する共有鍵格納部と、第１のチャレンジデータを生成するチャレンジデータ生成部と、前記コンテンツ受信装置から送信された第２のチャレンジデータに対する第１のレスポンスデータを生成するレスポンスデータ生成部と、前記コンテンツ受信装置から送信される第２のレスポンスデータを検証するレスポンスデータ検証部と、前記コンテンツデータを暗号化して暗号化コンテンツデータを生成するデータ暗号文生成部とを備え、前記レスポンスデータ生成部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第１のレスポンスデータとし、前記レスポンスデータ検証部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第２のレスポンスデータの検証に用い、  前記データ暗号文生成部は、前記第１の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
【０１８６】
（９）上記（８）において、前記第１の鍵暗号文及び前記第２の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
（１０）上記（９）において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数とは、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
【０１８７】
（１１）また、本発明は、コンテンツ送信装置とコンテンツ受信装置を備え、前記コンテンツ送信装置と前記コンテンツ受信装置との間で鍵配送を行い、共有した鍵を用いて暗号化通信を行う暗号通信システムにおけるコンテンツ受信装置であって、復号化コンテンツデータを出力する出力部と、前記コンテンツ送信装置へデータを送信し、前記コンテンツ送信装置からデータ受信する送受信部と、第２の鍵と第２の鍵を暗号化した第２の鍵暗号文を生成する第２の鍵暗号文生成部と、前記コンテンツ送信装置から送信される第１の鍵暗号文を復号化して第２の復号化鍵を生成する第２の鍵暗号文復号化部と、前記第２の鍵と前記第２の復号化鍵に基づき第２の共有鍵を生成する共有鍵生成部と、前記第２の共有鍵を格納する共有鍵格納部と、第２のチャレンジデータを生成するチャレンジデータ生成部と、前記コンテンツ送信装置から送信される第１のチャレンジデータに対する前記第２のレスポンスデータを生成するレスポンスデータ生成部と、前記コンテンツ送信装置から送信される前記第１のレスポンスデータを検証するレスポンスデータ検証部と、前記コンテンツ送信装置から送信される暗号化コンテンツデータを復号化して前記復号化コンテンツデータを生成するデータ暗号文復号化部とを備え、  前記レスポンスデータ生成部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第２のレスポンスデータとし、前記レスポンスデータ検証部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第１のレスポンスデータの検証に用い、前記データ暗号文復号化部は、前記第２の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
【０１８８】
（１２）上記（１１）において、前記第１の鍵暗号文及び前記第２の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
（１３）上記（１１）、（１２）の何れかにおいて、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
【０１８９】
（１４）これらの構成によると、鍵カプセル化メカニズムを使用した鍵共有の後に、共有した鍵を用いたチャレンジ・レスポンス認証を追加することにより、なりすまし攻撃の安全性を保証できるため、その価値は大きい。
【産業上の利用可能性】
【０１９０】
本発明を構成する各装置、各方法及びコンピュータプログラムは、情報を安全かつ確実に扱う必要があるあらゆる産業において、経営的に、また継続的及び反復的に使用することができる。
また、本発明を構成する各装置、各方法及び各コンピュータプログラムは、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
【図面の簡単な説明】
【０１９１】
【図１】暗号通信システム１の概要を示す図である。
【図２】暗号通信装置Ａ１０の構成を示すブロック図である。
【図３】暗号通信装置Ｂ２０の構成を示すブロック図である。
【図４】暗号通信システム１の動作を示す流れ図である。図５へ続く。
【図５】暗号通信システム１の動作を示す流れ図である。図４から続き、図６へ続く。
【図６】暗号通信システム１の動作を示す流れ図である。図５から続き、図７へ続く。
【図７】暗号通信システム１の動作を示す流れ図である。図６から続く。
【符号の説明】
【０１９２】
１    暗号通信システム
１０    暗号通信装置Ａ
２０    暗号通信装置Ｂ
３０    通信路
１０１、２０１    入出力部
１０２、２０２    送受信部
１０３、２０３    公開鍵格納部
１０４、２０４    秘密鍵格納部
１０５、２０５    ＫＥＭ暗号文生成部
１０６、２０６    ＫＥＭ暗号文復号化部
１０７、２０７    共有鍵生成部
１０８、２０８    共有鍵格納部
１０９、２０９    チャレンジデータ生成部
１１０、２１０    レスポンスデータ生成部
１１１、２１１    レスポンスデータ検証部
１１２、２１２    ＭＡＣ生成部
１１３、２１３    共通鍵暗号化部
１１４、２１４    共通鍵復号化部
１１５、２１５    ＤＥＭ暗号文生成部
１１６、２１６    ＤＥＭ暗号文復号化部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2007125877.tif 000010
【図２】
2007125877.tif 000011
【図３】
2007125877.tif 000012
【図４】
2007125877.tif 000013
【図５】
2007125877.tif 000014
【図６】
2007125877.tif 000015
【図７】
2007125877.tif 000016
【国際調査報告】
2007125877.tif 000017
2007125877.tif 000018
2007125877.tif 000019
2007125877.tif 000020