JPWO2007125877A1 - 通信装置、及び通信システム - Google Patents

通信装置、及び通信システム Download PDF

Info

Publication number
JPWO2007125877A1
JPWO2007125877A1 JP2008513198A JP2008513198A JPWO2007125877A1 JP WO2007125877 A1 JPWO2007125877 A1 JP WO2007125877A1 JP 2008513198 A JP2008513198 A JP 2008513198A JP 2008513198 A JP2008513198 A JP 2008513198A JP WO2007125877 A1 JPWO2007125877 A1 JP WO2007125877A1
Authority
JP
Japan
Prior art keywords
key
data
shared
communication
shared key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008513198A
Other languages
English (en)
Inventor
布田 裕一
裕一 布田
大森 基司
基司 大森
真吾 長谷川
真吾 長谷川
秀司 磯辺
秀司 磯辺
啓樹 静谷
啓樹 静谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2007125877A1 publication Critical patent/JPWO2007125877A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • H04L9/0844Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • H04L9/3273Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response for mutual authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)

Abstract

なりすまし攻撃に対しても安全性である通信装置を提供する。通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置は、第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成し、前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断し、前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成する。

Description

本発明は、情報セキュリティ技術としての暗号技術、特に共有鍵を用いて正当な通信相手と秘密通信を行う技術に関する。
近年、家庭用電化製品、携帯電話機などの間でネットワークを介した通信を行う機会が増加している。例えば、AV(Audio Visual)機器ではコンテンツの著作権保護のために機器同士で、また、携帯電話機では通信内容の漏洩を防ぐために携帯電話機と通信相手である装置とで、認証鍵共有を行った後に、共有した鍵を用いて暗号化した通信を行うことがある。ここで、認証鍵共有とは、機器同士などで、通信相手の機器が正しく作られた機器であるかを、相互認証により確認し、それと同時に鍵を共有するものである(以下、共有する鍵を共有鍵という。)。
例えば、AV機器同士をIEEE1394で接続したときに使用される、DTCP(Digital Transmission Content Protection)と呼ばれる著作権保護規格で規定されている認証鍵共有方法がある(非特許文献1参照)。この方法は、認証方式に楕円DSA署名を用いたチャレンジ・レスポンス認証を使用し、鍵共有方式に楕円DH鍵共有を使用している。チャレンジ・レスポンス認証、楕円DSA署名及び楕円DH鍵共有については、非特許文献2が詳しい。
上記に示すDTCPの認証鍵共有方法では、安全性の問題、すなわち、実効性のある攻撃方法の存在については特に指摘されていない。しかし、未知の攻撃方法を含めた全ての攻撃方法に対する安全性の証明はなされていない。
ここで、「安全性の証明」とは、暗号方式の安全性が経験的なものではなく、数学的に証明できることである。例えば、公開鍵暗号においては、秘密鍵を持たないユーザが暗号文の解読を行う場合、数学的に求解困難であると考えられている問題(例えば、素因数分解問題や楕円離散対数問題)を解く必要があることを証明する。この証明ができる場合、暗号文の解読が、求解困難であると考えられている問題よりも難しいことが示せたこととなる。したがって、このような証明ができる場合には、公開鍵暗号について安全性証明があることになる。
安全性証明ができないと経験的に「たぶん解読困難と思われる」というレベルまでしか暗号方式の安全が保証できないので、その暗号方式を使用することに不安が残ってしまう。そのため、ユーザは、従来の認証鍵共有方法を安心して使用することはできない。
そこで、安全性証明された鍵配送方式である鍵カプセル化メカニズム(Key Encapsulation Mechanisms、以降ではKEMと呼ぶ。)を用いた認証鍵共有方式が提案されている(特許文献1参照)。この技術により鍵漏洩がなされないので、ユーザは、安心して認証鍵の共有ができる。
国際公開第WO05/039100号 DTCP SpecificationのWhite paper <URL:http://www.dtcp.com/data/spec.html> 岡本龍明、山本博資、"現代暗号"、産業図書(1997年)
しかしながら、KEMを用いた認証鍵共有方法では共有鍵の漏洩に対する安全性については証明しているが、なりすまし攻撃に対する安全性については証明できていない。なりすまし攻撃とは、攻撃者が通信相手のユーザ(機器)になりすまして、正当なユーザ(機器)との間で、正当なユーザ(機器)の情報を漏洩させたり、相手の通信をさせないように遮ろうとしたりする攻撃である。
そのため、データを送信する送信元の装置は、正当な装置であるようになりすました不正な装置に対して、データを送信する可能性があるので、システム全体としての安全性に問題が残る。
なぜなら、例えば、仮に共有鍵の漏洩に対する安全性が保証されており、また、共有鍵によって暗号化されたデータ1つ1つから共有鍵を推測することは困難であっても、暗号化されたデータを大量に収集すると共有鍵の推測が容易になることがあるからである。
したがって、認証鍵共有では、なりすまし攻撃に対して安全であることが望ましい。さらに、この場合、共有鍵の漏洩に対してのみならず、なりすまし攻撃に対する防衛策についても安全性証明があることが望ましい。
そこで、本発明は、なりすまし攻撃に対しても安全性証明ができる通信装置、通信システムを提供することを目的とする。
上記目的を達成するために、本発明は、通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段とを備えることを特徴とする。
上記に示した構成によると、通信装置は、共有鍵と鍵依存関数とを用いて認証を行い、さらに、同一の共有鍵と鍵依存関数を用いて検証用データを生成しているので、なりすまし攻撃を防ぐことができる。以下にその理由を示す。
通信装置は、認証時になりすまし攻撃を受けている場合には、その認証により不正な外部装置であると判断することができるので、以降において通信対象データを送信しないことにより、なりすまし攻撃を防ぐことができる。
また、認証後に通信装置がなりすまし攻撃により不正な装置から通信対象データを受信する場合において、通信装置は、不正な装置から通信対象データを受信してしまうが、通信相手が不正な装置であることが分かれば、受信した通信対象データを破棄すればよい。この場合において、通信対象データの正当性検証のために、不正な装置から検証データをも送信される。しかしながら、不正な装置は、共有鍵及びこれに依存する鍵依存関数を有していないので、正当な検証データを送信することができない。仮に、通信装置が不正な装置から検証データを受信したとしても、受信した検証データは通信装置が有する共有鍵に依存する鍵依存関数により生成されていないため通信装置自身が生成した検証データとは異なることとなり、通信対象データが不正、つまり、通信対象データを送信した装置が不正であると判断することができる。これにより、通信装置は、通信対象データを送信した装置が不正であると判断した場合には受信した通信対象データを破棄することにより、なりすまし攻撃を防ぐことができる。
さらには、通信装置は、安全性証明のなされた暗号方式により共有すべき共有鍵を生成するので、漏洩に対して安全である。これにより、通信装置は、漏洩に対して安全である共有鍵を用いて外部装置の認証及び秘密通信を行うので、これら処理に対する安全性も保証される。
以下、簡単になりすまし攻撃に対する安全性の証明を行う。
認証時において、通信装置が、外部装置が正当であると確認するためには、外部装置にて正しい検証用データが生成される必要があり、そのためには通信装置と外部装置との間で同一の共有鍵を共有する必要がある。しかしながら、共有鍵は安全性証明がなされた暗号方式を用いて生成されるので、漏洩される、つまり、不正な装置が共有鍵を取得することができる確率が非常に小さく、無視できる程度となることを数学的に証明できる。そのため、不正な装置が正しい検証用データを生成することができないことも数学的に証明できる。したがって、通信装置は、なりすまし攻撃に対しても安全性が証明できる。
ここで、前記鍵生成手段は、前記第1の鍵データを生成し、前記第1の鍵データを秘密に前記外部装置へ送信し及び前記外部装置にて生成された第2の鍵データを秘密に受信することにより前記外部装置との間で前記第1の鍵データ及び前記第2の鍵データを共有し、共有した前記第1の鍵データと前記第2の鍵データとを用いて前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、秘密に共有した第1の鍵データ及び第2の鍵データを用いて共有鍵を生成するので、共有鍵が外部に漏洩されることはない。
ここで、前記認証は、チャレンジレスポンス認証であり、前記判断手段は、前記外部装置から前記第1の鍵データをチャレンジデータとし、前記チャレンジデータと前記共有鍵とに前記関数を施して生成されたレスポンスデータを受け取り、前記チャレンジレスポンス認証を行うとしてもよい。
この構成によると、通信装置は、チャレンジレスポンス認証時にチャレンジデータを改めて送信する必要がないので、通信量を削減することができる。
ここで、前記鍵生成手段は、前記第1鍵データと前記第2鍵データとの排他的論理和演算により共有鍵データを算出し、算出した共有鍵データから前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、第1鍵データと第2鍵データとの排他的論理和演算により共有鍵データを算出しているので、共有鍵データから第1鍵データと第2鍵データを導出することを困難にすることができる。
ここで、前記鍵生成手段は、前記共有鍵データの一部を前記共有鍵とするとしてもよい。
この構成によると、通信装置は、共有鍵を、共有鍵データの一部とすることにより生成することができる。
ここで、前記鍵生成手段は、前記共有鍵データそのものを前記共有鍵とするとしてもよい。
この構成によると、通信装置は、共有鍵を、共有鍵データと同一にしているので、改めて共有鍵を生成する必要がない。そのため、通信装置における処理量を削減することができる。
ここで、前記鍵生成手段は、前記第1鍵データと前記第2鍵データとに前記鍵依存関数を施して共有鍵データを生成し、生成した共有鍵データから前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、第1鍵データと第2鍵データとに関数を施して共有鍵データへと変換しているので、第1鍵データ及び第2鍵データの漏洩を防ぐことができる。
ここで、前記鍵依存関数は、前記共有鍵に依存する一方向性関数であるとしてもよい。
この構成によると、通信装置は、一方向性関数を用いて共有鍵データを生成している。これにより、生成された共有鍵データから第1鍵データ及び第2鍵データを生成するのは困難であるので、第1鍵データ及び第2鍵データの漏洩に対する安全性を高めることができる。
ここで、前記共有鍵は、前記判断手段による認証及び前記検証用データの生成に用いる検証用共有鍵であり、前記鍵生成手段は、さらに、前記共有鍵データから前記外部装置との間で共有され、通信対象データの暗号化及び復号に用いる暗号用共有鍵を生成し、前記通信装置は、さらに、前記暗号用共有鍵を用いて前記通信対象データを暗号化して、暗号化データを生成し、生成した前記暗号化データを前記検証用データとともに前記外部装置へ送信する送信手段を備えるとしてもよい。
この構成によると、通信装置は、外部装置と共有すべき暗号用共有鍵を用いて通信対象データを暗号化して暗号化データを生成し、生成した暗号化データを外部装置へ送信するので、通信対象データが漏洩されることはない。
ここで、前記共有鍵は検証用共有鍵であり、前記鍵生成手段は、さらに、前記共有鍵データから前記外部装置との間で共有すべき暗号用共有鍵を生成し、前記通信装置は、さらに、前記外部装置から前記暗号用共有鍵にて通信対象データが暗号化された暗号化データを受信する受信手段を備え、前記データ生成手段は、前記受信手段にて受信した暗号化データを復号して復号データを取得し、取得した復号データを通信対象データとして前記検証用データを生成するとしてもよい。
この構成によると、通信装置は、外部装置と共有すべき暗号用共有鍵を用いて復号された復号データから検証データを生成するので、外部装置との間で正当な暗号用共有鍵及び正当な検証用共有鍵を共有しない限り、正当な復号データ及び正当な検証用データを取得することができない。つまり、正当な通信装置のみが、復号データ及び検証データを取得することができる。
ここで、前記鍵生成手段は、前記鍵配送として鍵カプセル化メカニズムを用いて前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、外部装置との間で鍵カプセル化メカニズムを用いて共有鍵を生成するので、共有鍵が漏洩されることはない。
また、鍵カプセル化メカニズムを用いることにより、鍵漏洩に対して安全であるので、認証時において、なりすまし攻撃に対する安全性が証明される。
暗号通信システム1の概要を示す図である。 暗号通信装置A10の構成を示すブロック図である。 暗号通信装置B20の構成を示すブロック図である。 暗号通信システム1の動作を示す流れ図である。図5へ続く。 暗号通信システム1の動作を示す流れ図である。図4から続き、図6へ続く。 暗号通信システム1の動作を示す流れ図である。図5から続き、図7へ続く。 暗号通信システム1の動作を示す流れ図である。図6から続く。
符号の説明
1 暗号通信システム
10 暗号通信装置A
20 暗号通信装置B
30 通信路
101、201 入出力部
102、202 送受信部
103、203 公開鍵格納部
104、204 秘密鍵格納部
105、205 KEM暗号文生成部
106、206 KEM暗号文復号化部
107、207 共有鍵生成部
108、208 共有鍵格納部
109、209 チャレンジデータ生成部
110、210 レスポンスデータ生成部
111、211 レスポンスデータ検証部
112、212 MAC生成部
113、213 共通鍵暗号化部
114、214 共通鍵復号化部
115、215 DEM暗号文生成部
116、216 DEM暗号文復号化部
1.第1の実施の形態
本発明にかかる第1の実施の形態としての暗号通信システム1について説明する。
暗号通信システム1は、図1に示すように、暗号通信装置A10と暗号通信装置B20とから構成され、暗号通信装置A10と暗号通信装置B20とは、通信路30を介して通信を行う。
暗号通信装置A10及び暗号通信装置B20は、鍵の漏洩及びなりすまし攻撃を防止して、通信相手と共有鍵を用いた暗号通信を行う。
暗号通信装置A10及び暗号通信装置B20における暗号通信は、大きく分けて、3つのフェーズ動作からなる。
1つ目のフェーズは、KEMを用いて暗号通信装置A10と暗号通信装置B20とが相互認証及び鍵配送を行い、互いの装置にて鍵を共有するフェーズである。
2つ目のフェーズは、共有した鍵を用いてチャレンジ・レスポンス認証を行うことにより、暗号通信装置A10と暗号通信装置B20のそれぞれが、お互いの送信相手がなりすまし攻撃を行っていないことを確認するフェーズである。
3つ目のフェーズは、共有した鍵を用いて暗号通信装置A10と暗号通信装置B20との間で通信路30を介して暗号したデータの送受信を行うフェーズである。
ここで、データとは、例えば、テキストデータ、音楽データ、画像データ、映画コンテンツデータである。
1.1 準備
ここでは、本実施の形態に用いる鍵配送方式の1つである鍵カプセル化メカニズム(Key Encapsulation Mechanisms、以降では「KEM」と呼ぶ。)について説明する。
鍵カプセル化メカニズムは、簡単に説明すると、公開鍵暗号を用いて送信装置と受信装置の間で共有鍵を配送するアルゴリズムである。先ず、送信側が、公開鍵暗号化アルゴリズムEに受信者の公開鍵pkを入力して暗号文Cと共有鍵Kを生成し、暗号文Cを受信側に伝送する。そして、受信側が、公開鍵復号アルゴリズムDに、秘密鍵skと暗号文Cを入力して送信側と同じ共有鍵Kを求める。なお、本明細書では、暗号文Cを「鍵データKのKEM暗号文」等とも呼ぶ。
鍵カプセル化メカニズムの目的は、鍵カプセル化メカニズムで共有鍵Kを送信装置と受信装置で共有することにより、その後、送信装置から受信装置へ通信される通信内容データを、共有鍵Kを用いて共通鍵暗号で暗号化することにある。ここで、送信装置を持つ送信者から受信装置を持つ受信者に一方的に情報の送信が行われていながら、送信者が作為的に共有鍵を作成できず、送信者による不正が抑制されている点が従来の鍵配送方式にない特徴である。
このような鍵カプセル化メカニズムとして、PSEC−KEMと呼ばれるアルゴリズムが開示されている。
なお、PSEC−KEMアルゴリズムの詳細については、著者Tatsuaki Okamotoによる“Generic conversions for constructing IND−CCA2 public−key encryption in the random oracle model”に記載されているので説明を省力する。以下に、PSEC−KEMアルゴリズムについて簡単に説明する。
(1)PSEC−KEMのシステムパラメータ
PSEC−KEMは、以下のシステムパラメータを持つ。
・楕円曲線:E
・楕円曲線E上の位数nの点:P
・ハッシュ関数:G、H
なお、楕円曲線、位数及びハッシュ関数については、非特許文献2に詳細が記述されているので、ここでは説明を省略する。
なお、ハッシュ関数G、Hは送信側および受信側の両方で共有している。
(2)PSEC−KEMの公開鍵と秘密鍵
・ランダムにZnの要素xを選び、W=x*Pを生成する。
ここで、Znは、{0,1,...,n−1}からなる集合であり、x*Pは、楕円曲線E上の点Pをx回加算することにより得られる楕円曲線上の点を表す。なお、楕円曲線上の点の加算方法については、非特許文献2に記述されている。
・公開鍵pkを(E,P,W,n)とし、秘密鍵skをxとする。
(3)PSEC−KEMの暗号化
暗号化時には、以下に述べる公開鍵暗号化アルゴリズムKemEに公開鍵pkを入力して共有鍵Kと暗号文Cを出力する。
以下に公開鍵暗号化アルゴリズムKemEについて説明する。
・Znの要素sをランダムに生成する。
・G(s)を生成し、G(s)をG(s)=a||Kと分割する。ここで、||はビット結合を表し,G(s)をG(s)=a||Kと分割するとは、G(s)の上位複数ビットをaとし、残りのビットをKとすることを表す。
・R=a*P,Q=a*Wを生成する。
・v=s xor H(R||Q)を生成する。ここで、xorは排他的論理和演算を表す。
・共有鍵Kと暗号文C=(R,v)を出力する。
・送信側の装置は、暗号文Cを通信の相手先(受信側の装置)へ送信する。
(4)PSEC−KEMの復号化
受信側の装置は、送信側の装置から暗号文Cを受け取り、以下に述べる公開鍵復号アルゴリズムKemDに暗号文C=(R,v)と秘密鍵skを入力して共有鍵Kを出力する。
以下に公開鍵復号アルゴリズムKemDについて説明する。
・Q=x*Rを生成する。ここで、上述したようにxは秘密鍵skである。
・s’=v xor H(R||Q)を生成する。ここで、vとRは暗号文Cから得られる。
・G(s’)を生成し、G(s’)をG(s’)=a’||K’と分割する。ここで、分割の仕方は暗号化側と同様である。
・R=a’*Pが成立するかどうかチェックする。成立すればK’を共有鍵Kとして出力する。
このPSEC−KEMアルゴリズムを、送信装置と受信装置の間で暗号化通信を行う暗号システムに応用した場合、まず、送信装置は、通信先受信装置の公開鍵pkを取得し、取得した公開鍵pkを前述の公開鍵暗号化アルゴリズムKemEに入力して共有鍵Kと暗号文Cを導出して、暗号文Cを受信装置へ送信する。そして、受信装置は、送信装置から暗号文Cを受信し、受信した暗号文Cと自身が有する秘密鍵skを前述の公開鍵復号アルゴリズムKemDに入力して、送信装置が導出したものと等しい共有鍵Kを導出する。
以下に、このことを詳細に説明する。
今、PSEC−KEMアルゴリズムは、ハッシュ関数Hの入力を(a*P||a*W)としており、公開鍵暗号化アルゴリズムKemEで、ランダムに生成した要素sにH(a*P||a*W)の値を作用させてvを生成する。そして、公開鍵復号アルゴリズムKemDでは、暗号文Cに含まれるR=a*Pから秘密鍵sk(=x)を用いてQ=x*R=x*(a*P)=a*(x*P)=a*Wを求めることができるので、v xor H(a*P||a*W)を計算することにより、公開鍵暗号化アルゴリズムKemEにおいて生成されたランダムな要素sを求めることができる。ここで、v xor H(a*P||a*W)は、公開鍵暗号化アルゴリズムKemEがsからvを計算する演算の逆演算である。従って、公開鍵暗号化アルゴリズムKemEと公開鍵復号アルゴリズムKemDは、ハッシュ関数Gに同じsの値を入力することができ、同じ共有鍵Kを導出することができる。この結果、秘密鍵skを有する受信装置は、送信装置が導出したものと同じ共有鍵Kを導出できることになる。
一方で、秘密鍵skを知らない他の受信装置は、たとえ公開鍵pkを取得して暗号文Cを受信したとしても、秘密鍵sk(=x)を知らないのでR=a*PからQ=a*W(=(ax)*P)を計算できず、送信装置が導出したものと同じ共有鍵Kを導出できない。なぜならば、秘密鍵skを知らない他の受信装置は、公開鍵pkしか利用できないので、上記Qの計算には秘密鍵sk(=x)の代わりに公開鍵pkに含まれるW=x*Pを利用することになるが、一般に、a*PとW=x*Pから、Q=a*W(=(ax)*P)を求めることは、楕円曲線上のDiffie−Hellman問題と呼ばれ、aやxの値を知らない限り計算困難だからである。なお、これについては、著者Neal Koblitzによる“Algebraic Aspects of Cryptography”(Algorithms and Computation in Mathematics Vol.3, pp.132−133, Springer−Verlag, 1998.)に記載されているので、ここでの説明は省略する。
すなわち、PSEC−KEMアルゴリズムは、秘密鍵を用いずにa*Pからa*Wを計算することが困難なDiffie−Hellman問題を用いて、最終的に共有鍵Kを導出することにより、秘密鍵を知らなければその共有鍵Kを導出できないようにしている。
よって、以上により、送信装置と受信装置とは、共有鍵Kを秘密に共有することができ、この後、秘密鍵暗号を用いて、送信装置から受信装置へ通信される通信内容データを、共有鍵Kを用いて共通鍵暗号で暗号化することができる。
上記のPSEC−KEMアルゴリズムは、先に述べた楕円曲線上のDiffie−Hellman問題が困難であれば、秘密鍵を知らない受信装置は共有鍵Kを得ることができないことが証明されている。このような証明を方式の安全性を証明していることから、「安全性証明」と呼ぶ。PSEC−KEMの他のKEMアルゴリズム、例えばRSA−KEMやNTRU−KEM(特開2004−201292号公報及び特開2004−201293号公報参照)なども同様の困難な数学上の問題を根拠として安全性証明されている。
なお、RSA−KEMの詳細については、著者Victor Shoupにより“A proposal for an ISO standard for public key encryption (version 2.1)”に記載されているので説明を省略する。
また、NTRU−KEMの詳細については、特開2004−201292号公報及び特開2004−201293号公報に記載されているので説明を省略する。
上記にて説明したKEMを用いて、2台の暗号通信装置の双方からKEM暗号文を送りあうこともある。この場合、一方の暗号通信装置Aから他の暗号通信装置BにKEM暗号文を送ることで共有される共有鍵(KAと呼ぶ)と、暗号通信装置Bから暗号通信装置AにKEM暗号文を送ることで共有される共有鍵(KBと呼ぶ)との両方を用いて共有鍵Kを作ることで、より安全な鍵共有ができる。
暗号通信システム1では、このような双方からKEM暗号部を送りあう構成で鍵共有を行う。
以下に、暗号通信システム1を攻勢する暗号通信装置A10、B20、及びこれらの動作について説明する。
1.2 暗号通信装置A10の構成
暗号通信装置A10は、図2に示すように、入出力部101、送受信部102、公開鍵格納部103、秘密鍵格納部104、KEM暗号文生成部105、KEM暗号文復号化部106、共有鍵生成部107、共有鍵格納部108、チャレンジデータ生成部109、レスポンスデータ生成部110、レスポンスデータ検証部111、MAC(改ざん検出符号、Message Authentication Code)生成部112、共通鍵暗号化部113、共通鍵復号化部114、DEM(Data Encapsulation Mechanism)暗号文生成部115、及びDEM暗号文復号化部116から構成されている。
(1)公開鍵格納部103
公開鍵格納部103は、暗号通信装置B20の公開鍵KPBを格納している。
なお、公開鍵KPBは、秘密鍵KSBと共に暗号通信装置B20に対応付けて、予め与えられている。また、暗号通信装置A10では、公開鍵KPBは予め外部から与えられて格納されているか、あるいは、暗号通信装置B20から送信され、通信路30を介して予め受信されて格納されているものとする。
(2)秘密鍵格納部104
秘密鍵格納部104は、暗号通信装置A10の秘密鍵KSAを格納している。
なお、秘密鍵KSAは、公開鍵KPAと共に暗号通信装置A10に対応付けて、予め与えられている。
(3)KEM暗号文生成部105
KEM暗号文生成部105は、公開鍵KPBと、鍵カプセル化メカニズム(KEM)の公開鍵暗号化アルゴリズムKemEとを用いて、鍵データKA及び鍵データKAに対するKEM暗号文KEMAを生成する。鍵データKA及びKEM暗号文KEMAの生成方法については、上記にて示すPSEC−KEMの暗号化と同様の方法であるので、説明は省略する。
KEM暗号文生成部105は、生成したKEM暗号文KEMAを送受信部102を介して暗号通信装置B20へ送信する。
KEM暗号文生成部105は、生成した鍵データKAを共有鍵生成部107へ出力する。
(4)KEM暗号文復号化部106
KEM暗号文復号化部106は、暗号通信装置B20から送受信部102を介して、KEMにおける公開鍵暗号化アルゴリズムKemEにより鍵データKBが暗号化された暗号文であるKEM暗号文KEMBを受信する。
KEM暗号文復号化部106は、公開鍵暗号化アルゴリズムKemEに対応する公開鍵復号アルゴリズムKemDに対して、秘密鍵KSA及びKEM暗号文KEMBを入力値として与えて、受信したKEM暗号文KEMBを復号化して、鍵データKBを生成する。鍵データKBの復号化方法については、上記にて示すPSEC−KEMの復号化と同様の方法であるので、説明は省略する。
KEM暗号文復号化部106は、生成した鍵データKBを共有鍵生成部107へ出力する。
(5)共有鍵生成部107
共有鍵生成部107は、KEM暗号文生成部105から鍵データKAを、KEM暗号文復号化部106から鍵データKBを、それぞれ受け取る。
共有鍵生成部107は、受け取った鍵データKAとKBを用いて、共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを生成し、生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを共有鍵格納部108に格納する。
以下に共通鍵暗号用共有鍵KS及びMAC用共有鍵KHの生成の具体例を以下に示す。
共有鍵生成部107は、鍵データKAとKBとの排他的論理和(xor)を取り、共有鍵データKを生成する。共有鍵生成部107は、生成した共有鍵データKの一部を共通鍵暗号用共有鍵KSとし、それ以外の部分をMAC用共有鍵KHとする。つまり、共有鍵生成部107は、生成した共有鍵データKに対して、K=KS||KHを満たすように共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを取得すればよい。ここで、||は連結を示す。また、共有データKから共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを取得するための区切り位置は、暗号通信装置B20側と揃っていれば任意の位置でよい。
なお、共有鍵データKの生成方法は、鍵データKAとKBの両方の情報が含まれるものであればよい。例えば、鍵データKAとKBのビットまたはバイト連結したデータK’のハッシュ関数値を共有鍵データKとしてもよい。
(6)共有鍵格納部108
共有鍵格納部108は、共有鍵生成部107で生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを格納するための領域を有している。
(7)チャレンジデータ生成部109
チャレンジデータ生成部109は、乱数であるチャレンジデータnAを生成し、生成したチャレンジデータnAを、送受信部102を介して暗号通信装置B20へ送信する。
チャレンジデータ生成部109は、生成したチャレンジデータnAを一時的に記憶する。
(8)レスポンスデータ生成部110
レスポンスデータ生成部110は、暗号通信装置B20から送受信部102を介して、チャレンジデータnBと、チャレンジデータ生成部109にて送信したチャレンジデータnAに対するレスポンスデータrBを受け取る、または、チャレンジデータnBのみ受け取る。
(チャレンジデータnBとレスポンスデータrBとを受け取った場合)
レスポンスデータ生成部110は、暗号通信装置B20からチャレンジデータnBとレスポンスデータrBとを受け取ると、受け取ったチャレンジデータnBを一時的に記憶する。
レスポンスデータ生成部110は、レスポンスデータrBと、レスポンスデータの検証を指示する旨の検証指示とをレスポンスデータ検証部111へ出力する。
レスポンスデータ生成部110は、レスポンスデータ検証部111からレスポンスデータの生成を指示する旨のレスポンスデータ生成指示を受け取ると、改ざん検出符号(Message Authentication Code, MAC)の生成を指示する旨のMAC生成指示と、一時的に記憶しているチャレンジデータnBとをMAC生成部112へ出力する。
レスポンスデータ生成部110は、MAC生成部112からMAC値HnBを受け取ると、受け取ったMAC値HnBをレスポンスデータrAとして、送受信部102を介して暗号通信装置B20へ送信する。
なお、MAC値HnBについては、MAC生成部112の説明の箇所で後述する。
(チャレンジデータnBのみ受け取った場合)
レスポンスデータ生成部110は、暗号通信装置B20からチャレンジデータnBを受け取ると、MAC生成指示と、受け取ったチャレンジデータnBとをMAC生成部112へ出力する。
レスポンスデータ生成部110は、MAC生成部112からMAC値HnBを受け取ると、受け取ったMAC値HnBをレスポンスデータrAとして、チャレンジデータ生成部109にて生成したチャレンジデータnAとともに、送受信部102を介して暗号通信装置B20へ送信する。
(9)レスポンスデータ検証部111
レスポンスデータ検証部111は、レスポンスデータ生成部110から検証指示と、レスポンスデータrBとを受け取ると、チャレンジデータ生成部109にて一時的に記憶されているチャレンジデータnAを取得する。
レスポンスデータ検証部111は、MAC生成指示と、取得したチャレンジデータnAとをMAC生成部112へ出力する。
レスポンスデータ検証部111は、MAC生成部112からMAC値HnAを受け取ると、MAC値HnAとレスポンスデータrBとが一致するか否かを判断する。
一致すると判断する場合には、レスポンスデータ生成部110は、レスポンスデータ生成指示をレスポンスデータ生成部110へ出力する。
一致しないと判断する場合には、レスポンスデータ生成部110は、暗号通信に係る処理全体を中止する。
レスポンスデータ検証部111は、暗号通信装置B20から送受信部102を介して、レスポンスデータrBを受け取ると、チャレンジデータ生成部109にて一時的に記憶されているチャレンジデータnAを取得し、上記と同様の動作を行い、レスポンスデータrBの検証を行う。
(10)MAC生成部112
MAC生成部112は、鍵付ハッシュ関数Hashを予め記憶している。鍵付ハッシュ関数とは、鍵とデータとが入力として与えられ、鍵に依存する一方向性関数である。本実施の形態で用いる鍵付ハッシュ関数Hashは、MAC用共有鍵KHを用い、且つMAC用共有鍵KHに依存する関数である。鍵付ハッシュ関数の詳細については、非特許文献2の189〜195ページに記載されているので説明を省略する。
MAC生成部112は、MAC対象データに対して、共有鍵格納部108に格納しているMAC用共有鍵KHを使用して、所定のビット長t(tは1以上)からなる改ざん検出符号の値(MAC値)を生成(算出)する。
ここで、MAC対象データDMに対するMAC値を、HDM=Hash(KH,DM)とする。また、Hash(KH,DM)は、MAC用共有鍵KHを用いて鍵付ハッシュ関数Hashで計算したデータDMのハッシュ値を意味する。
MAC生成部112は、レスポンスデータ生成部110からMAC生成指示と、チャレンジデータnBとを受け取ると、共有鍵格納部108に格納しているMAC用共有鍵KHを取得する。MAC生成部112は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、チャレンジデータnBに対するMAC値HnB(=Hash(KH,nB))を算出し、算出したMAC値HnBをレスポンスデータ生成部110へ出力する。
MAC生成部112は、レスポンスデータ検証部111からMAC生成指示と、チャレンジデータnAとを受け取ると、共有鍵格納部108に格納しているMAC用共有鍵KHを取得する。MAC生成部112は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、チャレンジデータnAに対するMAC値HnA(=Hash(KH,nA))を算出し、算出したMAC値HnAをレスポンスデータ検証部111へ出力する。
MAC生成部112は、MAC生成指示と、共通鍵暗号により暗号化し暗号通信装置B20へ送信するデータ(以下、暗号化対象データという。)DAとを、DEM暗号文生成部115から受け取ると、共有鍵格納部108に格納しているMAC用共有鍵KHを取得する。MAC生成部112は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、暗号化対象データDAに対するMAC値HDA(=Hash(KH,DA))を算出し、算出したMAC値HDAをDEM暗号文生成部115へ出力する。
MAC生成部112は、MAC生成指示と、DEM暗号文復号化部116から復号化データDB’とを受け取ると、共有鍵格納部108に格納しているMAC用共有鍵KHを取得する。MAC生成部112は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、復号化データDB’に対するMAC値HDB’(=Hash(KH,DB’))を算出し、算出したMAC値HDB’をDEM暗号文生成部115へ出力する。
復号化データDB’については、共通鍵復号化部114の説明の箇所で後述する。
なお、Hash(KH,DM)は、Hash(KH,DM)=SHA1(KH||DM)としてもよい。ここで、SHA1(x)は、xのSHA1ハッシュ関数値であり、||は連結を示す。
(11)共通鍵暗号化部113
共通鍵暗号化部113は、暗号化対象データDAと、暗号化を指示する旨の暗号化指示とを、DEM暗号文生成部115から受け取ると、共有鍵格納部108に格納している共通鍵暗号用共有鍵KSを取得する。
共通鍵暗号化部113は、取得した共通鍵暗号用共有鍵KSと、共通鍵暗号アルゴリズムとを用いて、暗号化対象データDAを暗号化して、暗号化対象データDAに対する暗号化データEDA(=Enc(KS,DA))を生成する。ここで、Enc(KS,DA)は、鍵KSを用いてデータDAを共通鍵暗号で暗号化した暗号文を意味する。共通鍵暗号は例えばDES暗号やAES暗号である。共通鍵暗号の詳細については、非特許文献2の79〜105ページに記載されているので説明を省略する。
共通鍵暗号化部113は、生成した暗号化データEnc(KS,DA)をDEM暗号文生成部115へ出力する。
(12)共通鍵復号化部114
共通鍵復号化部114は、暗号化対象データDBを共通鍵暗号用共有鍵KSで暗号化した暗号化データEDB(=Enc(KS,DB))と、暗号化データの復号化を指示する旨の復号指示とを、DEM暗号文復号化部116から受け取ると、共有鍵格納部108に格納している共通鍵暗号用共有鍵KSを取得する。
共通鍵復号化部114は、取得した共通鍵暗号用共有鍵KSと、共通鍵復号化アルゴリズムとを用いて、暗号化データEnc(KS,DB)を復号化して、復号化データDB’を生成する。
共通鍵復号化部114は、生成した復号化データDB’をDEM暗号文復号化部116へ出力する。
(13)DEM暗号文生成部115
DEM暗号文生成部115は、外部から入出力部101を介して、暗号化対象データDAを受け取ると、暗号化指示と、受け取った暗号化対象データDAとを、共通鍵暗号化部113へ出力する。
DEM暗号文生成部115は、MAC指示と、受け取った暗号化対象データDAとをMAC生成部112へ出力する。
DEM暗号文生成部115は、暗号化データEDA(=Enc(KS,DA))を共通鍵暗号化部113から受け取り、MAC値HDA(=Hash(KH,DA))をMAC生成部112から受け取ると、これらを連結して、DEM暗号文DEMA(=Enc(KS,DA)||HDA)を生成する。
DEM暗号文生成部115は、生成したDEM暗号文DEMAを、送受信部102を介して暗号通信装置B20へ送信する。
(14)DEM暗号文復号化部116
DEM暗号文復号化部116は、暗号通信装置B20から送受信部102を介して、DEM暗号文DEMB(=EDB||HDB)を受け取る。ここで、EDBは暗号化対象データDBを暗号通信装置B20が有する共通鍵暗号用共有鍵KSにて暗号化した暗号化データ(Enc(KS,DB))であり、HDBは暗号化対象データDBに対するMAC値(Hash(KH,DB))である。
DEM暗号文復号化部116は、受け取ったDEM暗号文DEMB(=EDB||HDB)を暗号化データEDBとMAC値HDBとに分離する。
ここで、分解の一例を示す。DEM暗号文DEMBのビット長をuとすると、上述したように、MAC値HDBのビット長はtであるので、u>tであることが分かる。DEM暗号文復号化部116は、u−tビット長からなるデータをDEM暗号文DEMBの先頭から抽出し、抽出したデータを暗号化データEDBとし、残りtビット長からなるデータをMAC値HDBとする。
DEM暗号文復号化部116は、復号指示と、暗号化データEDB(=Enc(KS,DB))とを共通鍵復号化部114へ出力する。
DEM暗号文復号化部116は、復号化データDB’を共通鍵復号化部114から受け取ると、MAC指示と復号化データDB’とをMAC生成部112へ出力する。
DEM暗号文復号化部116は、MAC値HDB’(=Hash(KH、DB’))を受け取ると、DEM暗号文DEMBから分離したHDBとを比較し、一致するか否かを判断する。
一致すると判断する場合には、DEM暗号文復号化部116は、復号化データDB’、つまり暗号化対象データDBを、入出力部101を介して外部へ出力する。
一致しないと判断する場合には、DEM暗号文復号化部116は、暗号通信に係る処理全体を中止する。
(15)入出力部101
入出力部101は、外部から暗号化対象データDAを受け付け、受け付けた暗号化対象データDAをDEM暗号文生成部115へ出力する。
入出力部101は、DEM暗号文復号化部116から復号化データDB’を受け取ると、受け取った復号化データDB’を外部へ出力する。
(16)送受信部102
送受信部102は、KEM暗号文KEMAをKEM暗号文生成部105から受け取ると、受け取ったKEM暗号文KEMAを、通信路30を介して暗号通信装置B20へ送信する。
送受信部102は、暗号通信装置B20から通信路30を介して、KEM暗号文KEMBを受け取ると、受け取ったKEM暗号文KEMBをKEM暗号文復号化部106へ出力する。
送受信部102は、チャレンジデータnAをチャレンジデータ生成部109から受け取ると、受け取ったチャレンジデータnAを、通信路30を介して暗号通信装置B20へ送信する。
送受信部102は、レスポンスデータrAをレスポンスデータ生成部110から受け取ると、受け取ったレスポンスデータrAを、通信路30を介して暗号通信装置B20へ送信する。
送受信部102は、暗号通信装置B20から通信路30を介して、チャレンジデータnBとレスポンスデータrBとを、若しくはチャレンジデータnBのみを受け取ると、受け取ったチャレンジデータnB及びレスポンスデータrBを、若しくはチャレンジデータnBを、レスポンスデータ生成部110へ出力する。
送受信部102は、暗号通信装置B20から通信路30を介して、レスポンスデータrBを受け取ると、受け取ったレスポンスデータrBをレスポンスデータ検証部111へ出力する。
送受信部102は、DEM暗号文DEMAをDEM暗号文生成部115から受け取ると、受け取ったDEM暗号文DEMAを、通信路30を介して暗号通信装置B20へ送信する。
送受信部102は、暗号通信装置B20から通信路30を介して、DEM暗号文DEMBを受け取ると、受け取ったDEM暗号文DEMBをDEM暗号文復号化部116へ出力する。
1.3 暗号通信装置B20の構成
暗号通信装置B20は、図3に示すように、入出力部201、送受信部202、公開鍵格納部203、秘密鍵格納部204、KEM暗号文生成部205、KEM暗号文復号化部206、共有鍵生成部207、共有鍵格納部208、チャレンジデータ生成部209、レスポンスデータ生成部210、レスポンスデータ検証部211、MAC生成部212、共通鍵暗号化部213、共通鍵復号化部214、DEM暗号文生成部215、及びDEM暗号文復号化部216から構成されている。
(1)公開鍵格納部203
公開鍵格納部203は、暗号通信装置A10の公開鍵KPAを格納している。
なお、公開鍵KPAは、秘密鍵KSAと共に暗号通信装置A10に対応付けて、予め与えられている。また、暗号通信装置B20では、公開鍵KPAは予め外部から与えられて格納されているか、あるいは、暗号通信装置A10から送信され、通信路30を介して予め受信されて格納されているものとする。
(2)秘密鍵格納部204
秘密鍵格納部204は、暗号通信装置B20の秘密鍵KSBを格納している。
なお、秘密鍵KSBは、公開鍵KPBと共に暗号通信装置B20に対応付けて、予め与えられている。
(3)KEM暗号文生成部205
KEM暗号文生成部205は、公開鍵KPAと、鍵カプセル化メカニズム(KEM)の公開鍵暗号化アルゴリズムKemEとを用いて、鍵データKB及び鍵データKBに対するKEM暗号文KEMBを生成する。鍵データKB及びKEM暗号文KEMBの生成方法については、上記にて示すPSEC−KEMの暗号化と同様の方法であるので、説明は省略する。
KEM暗号文生成部205は、生成したKEM暗号文KEMBを送受信部202を介して暗号通信装置A10へ送信する。
KEM暗号文生成部205は、生成した鍵データKBを共有鍵生成部207へ出力する。
(4)KEM暗号文復号化部206
KEM暗号文復号化部206は、暗号通信装置A10から送受信部202を介して、KEM暗号文KEMAを受信する。
KEM暗号文復号化部206は、公開鍵暗号化アルゴリズムKemEに対応する公開鍵復号アルゴリズムKemDに対して、秘密鍵KSB及びKEM暗号文KEMAを入力値として与えて、受信したKEM暗号文KEMAを復号化して、鍵データKAを生成する。鍵データKAの復号化方法については、上記にて示すPSEC−KEMの復号化と同様の方法であるので、説明は省略する。
KEM暗号文復号化部206は、生成した鍵データKAを共有鍵生成部207へ出力する。
(5)共有鍵生成部207
共有鍵生成部207は、KEM暗号文生成部205から鍵データKBを、KEM暗号文復号化部206から鍵データKAを、それぞれ受け取る。
共有鍵生成部207は、受け取った鍵データKAとKBを用いて、共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを生成し、生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを共有鍵格納部208に格納する。
共通鍵暗号用共有鍵KSとMAC用共有鍵KHとの生成には、共有鍵生成部107における生成方法と同一の方法が用いられる。
(6)共有鍵格納部208
共有鍵格納部208は、共有鍵生成部207で生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを格納するための領域を有している。
(7)チャレンジデータ生成部209
チャレンジデータ生成部209は、乱数であるチャレンジデータnBを生成し、生成したチャレンジデータnBを、送受信部202を介して暗号通信装置B20へ送信する。
チャレンジデータ生成部209は、生成したチャレンジデータnBを一時的に記憶する。
(8)レスポンスデータ生成部210
レスポンスデータ生成部210は、暗号通信装置A10から送受信部202を介して、チャレンジデータnAと、チャレンジデータ生成部209にて送信したチャレンジデータnBに対するレスポンスデータrAを受け取る、または、チャレンジデータnAのみ受け取る。
(チャレンジデータnAとレスポンスデータrAとを受け取った場合)
レスポンスデータ生成部210は、暗号通信装置A10からチャレンジデータnAとレスポンスデータrAとを受け取ると、受け取ったチャレンジデータnAを一時的に記憶する。
レスポンスデータ生成部210は、レスポンスデータrAと、レスポンスデータの検証を指示する旨の検証指示とをレスポンスデータ検証部211へ出力する。
レスポンスデータ生成部210は、レスポンスデータ検証部211からレスポンスデータの生成を指示する旨のレスポンスデータ生成指示を受け取ると、MAC生成指示と、一時的に記憶しているチャレンジデータnAとをMAC生成部212へ出力する。
レスポンスデータ生成部210は、MAC生成部212からMAC値HnAを受け取ると、受け取ったMAC値HnAをレスポンスデータrBとして、送受信部202を介して暗号通信装置A10へ送信する。
なお、MAC値HnAについては、MAC生成部212の説明の箇所で後述する。
(チャレンジデータnAのみ受け取った場合)
レスポンスデータ生成部210は、暗号通信装置A10からチャレンジデータnAを受け取ると、MAC生成指示と、受け取ったチャレンジデータnAとをMAC生成部212へ出力する。
レスポンスデータ生成部210は、MAC生成部112からMAC値HnAを受け取ると、受け取ったMAC値HnAをレスポンスデータrBとして、チャレンジデータ生成部209にて生成したチャレンジデータnBとともに、送受信部202を介して暗号通信装置B20へ送信する。
(9)レスポンスデータ検証部211
レスポンスデータ検証部211は、レスポンスデータ生成部210から検証指示と、レスポンスデータrAとを受け取ると、チャレンジデータ生成部209にて一時的に記憶されているチャレンジデータnBを取得する。
レスポンスデータ検証部211は、MAC生成指示と、取得したチャレンジデータnBとをMAC生成部212へ出力する。
レスポンスデータ検証部211は、MAC生成部212からMAC値HnBを受け取ると、MAC値HnBとレスポンスデータrAとが一致するか否かを判断する。
一致すると判断する場合には、レスポンスデータ生成部210は、レスポンスデータ生成指示をレスポンスデータ生成部210へ出力する。
一致しないと判断する場合には、レスポンスデータ生成部210は、暗号通信に係る処理全体を中止する。
レスポンスデータ検証部211は、暗号通信装置A10から送受信部202を介して、レスポンスデータrAを受け取ると、チャレンジデータ生成部209にて一時的に記憶されているチャレンジデータnBを取得し、上記と同様の動作を行い、レスポンスデータrAの検証を行う。
(10)MAC生成部212
MAC生成部212は、鍵付ハッシュ関数Hashを予め記憶している。
MAC生成部112は、MAC対象データDMに対して、共有鍵格納部208に格納しているMAC用共有鍵KHを使用して、所定のビット長t(tは1以上)からなるMAC値HDMを生成(算出)する。なお、MAC生成部212にて生成されるMAC値のビット長は、暗号通信装置A20のMAC生成部112にて生成されるMAC値のビット長と同一である。
MAC生成部212は、レスポンスデータ生成部210からMAC生成指示と、チャレンジデータnAとを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHを取得する。MAC生成部212は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、チャレンジデータnAに対するMAC値HnA(=Hash(KH,nA))を算出し、算出したMAC値HnAをレスポンスデータ生成部210へ出力する。
MAC生成部212は、レスポンスデータ検証部211からMAC生成指示と、チャレンジデータnBとを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHを取得する。MAC生成部212は、予め記憶している鍵付ハッシュ関数Hashと、取得したMAC用共有鍵KHとを用いて、チャレンジデータnBに対するMAC値HnB(=Hash(KH,nB))を算出し、算出したMAC値HnBをレスポンスデータ検証部211へ出力する。
MAC生成部212は、MAC生成指示と、暗号通信装置A10へ暗号化し送信するデータである暗号化対象データDBとを、DEM暗号文生成部215から受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHを取得する。MAC生成部212は、予め記憶している鍵付ハッシュ関数Hashと、取得したMAC用共有鍵KHとを用いて、暗号化対象データDBに対するMAC値HDB(=Hash(KH,DB))を算出し、算出したMAC値HDBをDEM暗号文生成部215へ出力する。
MAC生成部212は、MAC生成指示と、DEM暗号文復号化部216から復号化データDA’とを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHを取得する。MAC生成部212は、予め記憶している鍵付ハッシュ関数Hashと、取得したMAC用共有鍵KHとを用いて、復号化データDA’に対するMAC値HDA’(=Hash(KH,DA’))を算出し、算出したMAC値HDA’をDEM暗号文生成部215へ出力する。
復号化データDA’については、共通鍵復号化部214の説明の箇所で後述する。
(11)共通鍵暗号化部213
共通鍵暗号化部213は、暗号化対象データDBと、暗号化を指示する旨の暗号化指示とを、DEM暗号文生成部215から受け取ると、共有鍵格納部208に格納している共通鍵暗号用共有鍵KSを取得する。
共通鍵暗号化部213は、取得した共通鍵暗号用共有鍵KSと、共通鍵暗号アルゴリズムとを用いて、暗号化対象データDBを暗号化して、暗号化対象データDBに対する暗号化データEDB(=Enc(KS,DB))を生成する。ここで、Enc(KS,DB)は、鍵KSを用いてデータDBを共通鍵暗号で暗号化した暗号文を意味する。共通鍵暗号は例えばDES暗号やAES暗号である。共通鍵暗号については、非特許文献2の79〜105ページに記載されている。
共通鍵暗号化部213は、生成した暗号化データEnc(KS,DB)をDEM暗号文生成部215へ出力する。
(12)共通鍵復号化部214
共通鍵復号化部214は、暗号化対象データDAを共通鍵暗号用共有鍵KSで暗号化した暗号化データEDA(=Enc(KS,DA))と、暗号化データの復号化を指示する旨の復号指示とを、DEM暗号文復号化部216から受け取ると、共有鍵格納部208に格納している共通鍵暗号用共有鍵KSを取得する。
共通鍵復号化部214は、取得した共通鍵暗号用共有鍵KSと、共通鍵復号化アルゴリズムとを用いて、暗号化データEnc(KS,DA)を復号化して、復号化データDA’を生成する。
共通鍵復号化部214は、生成した復号化データDA’をDEM暗号文復号化部216へ出力する。
(13)DEM暗号文生成部215
DEM暗号文生成部215は、外部から入出力部201を介して、暗号化対象データDBを受け取ると、暗号化指示と、受け取った暗号化対象データDBとを、共通鍵暗号化部213へ出力する。
DEM暗号文生成部215は、MAC指示と、受け取った暗号化対象データDBとをMAC生成部212へ出力する。
DEM暗号文生成部215は、暗号化データEDB(=Enc(KS,DB))を共通鍵暗号化部213から受け取り、MAC値HDB(=Hash(KH,DB))をMAC生成部212から受け取ると、これらを連結して、DEM暗号文DEMB(=Enc(KS,DB)||HDB)を生成する。
DEM暗号文生成部215は、生成したDEM暗号文DEMBを、送受信部202を介して暗号通信装置A10へ送信する。
(14)DEM暗号文復号化部216
DEM暗号文復号化部216は、暗号通信装置A10から送受信部202を介して、DEM暗号文DEMA(=EDA||HDA)を受け取る。ここで、EDAは暗号化対象データDAを暗号通信装置A10が有する共通鍵暗号用共有鍵KSにて暗号化された暗号化データ(Enc(KS,DA))であり、HDAは暗号化対象データDAに対するMAC値(Hash(KH,DA))である。
DEM暗号文復号化部216は、受け取ったDEM暗号文DEMA(=EDA||HDA)を暗号化データEDAとMAC値HDAとに分離する。なお、DEM暗号文復号化部216は、上記にて示すDEM暗号文復号化部116の分解の方法と同一の方法でDEM暗号文DEMAの分解を行う。
DEM暗号文復号化部216は、復号指示と、暗号化データEDA(=Enc(KS,DA))とを共通鍵復号化部214へ出力する。
DEM暗号文復号化部216は、復号化データDA’を共通鍵復号化部214から受け取ると、MAC指示と復号化データDA’とをMAC生成部212へ出力する。
DEM暗号文復号化部216は、MAC値HDA’(=Hash(KH、DB’))を受け取ると、DEM暗号文DEMAから分離したHDAとを比較し、一致するか否かを判断する。
一致すると判断する場合には、DEM暗号文復号化部216は、復号化データDA’、つまり暗号化対象データDAを、入出力部201を介して外部へ出力する。
一致しないと判断する場合には、DEM暗号文復号化部216は、暗号通信に係る処理全体を中止する。
(15)入出力部201
入出力部201は、外部から暗号化対象データDBを受け付け、受け付けた暗号化対象データDBをDEM暗号文生成部215へ出力する。
入出力部201は、DEM暗号文復号化部216から復号化データDA’を受け取ると、受け取った復号化データDA’を外部へ出力する。
(16)送受信部202
送受信部202は、KEM暗号文KEMBをKEM暗号文生成部205から受け取ると、受け取ったKEM暗号文KEMAを、通信路30を介して暗号通信装置A10へ送信する。
送受信部202は、暗号通信装置A10から通信路30を介して、KEM暗号文KEMAを受け取ると、受け取ったKEM暗号文KEMAをKEM暗号文復号化部206へ出力する。
送受信部202は、チャレンジデータnBをチャレンジデータ生成部209から受け取ると、受け取ったチャレンジデータnBを、通信路30を介して暗号通信装置A10へ送信する。
送受信部202は、レスポンスデータrBをレスポンスデータ生成部210から受け取ると、受け取ったレスポンスデータrBを、通信路30を介して暗号通信装置A10へ送信する。
送受信部202は、暗号通信装置A10から通信路30を介して、チャレンジデータnAとレスポンスデータrAとを、若しくはチャレンジデータnAのみを受け取ると、受け取ったチャレンジデータnA及びレスポンスデータrAを、若しくはチャレンジデータnAを、レスポンスデータ生成部210へ出力する。
送受信部202は、暗号通信装置A10から通信路30を介して、レスポンスデータrAを受け取ると、受け取ったレスポンスデータrAをレスポンスデータ検証部211へ出力する。
送受信部202は、DEM暗号文DEMBをDEM暗号文生成部215から受け取ると、受け取ったDEM暗号文DEMBを、通信路30を介して暗号通信装置A10へ送信する。
送受信部202は、暗号通信装置A10から通信路30を介して、DEM暗号文DEMAを受け取ると、受け取ったDEM暗号文DEMAをDEM暗号文復号化部216へ出力する。
1.4 暗号通信システム1の動作
(1)動作概要
暗号通信システム1の動作は、大きく分けて、暗号通信装置A10と暗号通信装置B20が鍵を共有する鍵共有フェーズ、共有した鍵を使用して相互で認証するチャレンジ・レスポンス認証フェーズ、共有した鍵を使用してデータを送受信するデータ暗号通信フェーズからなる。
鍵共有フェーズでは、KEMを用いて暗号通信装置A10と暗号通信装置B20とが相互認証及び鍵配送を行い、互いの装置にて鍵を共有する。
チャレンジ・レスポンス認証フェーズでは、共有した鍵を用いてチャレンジ・レスポンス認証を行うことにより、暗号通信装置A10と暗号通信装置B20のそれぞれが、お互いの送信相手がなりすまし攻撃を行っていないことを確認する。
データ暗号通信フェーズでは、共有した鍵を用いて暗号通信装置A10と暗号通信装置B20との間で通信路30を介して暗号したデータの送受信を行う。
ここで、データとは、例えば、テキストデータ、音楽データ、画像データ、映画コンテンツデータである。
(2)動作
以下、暗号通信システム1の動作について、図4から図7にて示す流れ図を用いて説明する。
暗号通信装置A10のKEM暗号文生成部105は、公開鍵KPBと、KEMの公開鍵暗号化アルゴリズムKemEとを用いて、鍵データKA及び鍵データKAに対するKEM暗号文KEMAを生成する(ステップS5)。
KEM暗号文生成部105は、生成したKEM暗号文KEMAを暗号通信装置B20へ送信する(ステップS10)。
暗号通信装置B20のKEM暗号文復号化部206は、暗号通信装置A10から送受信部202を介して、KEM暗号文KEMAを受信する(ステップS15)。
KEM暗号文復号化部206は、公開鍵暗号化アルゴリズムKemEに対応する公開鍵復号アルゴリズムKemD、及び秘密鍵KSBを用いて、受信したKEM暗号文KEMAを復号化して、鍵データKAを生成する(ステップS20)。
暗号通信装置B20のKEM暗号文生成部205は、公開鍵KPAと、KEMの公開鍵暗号化アルゴリズムKemEとを用いて、鍵データKB及び鍵データKBに対するKEM暗号文KEMBを生成する(ステップS25)。
KEM暗号文生成部205は、生成したKEM暗号文KEMBを暗号通信装置A10へ送信する(ステップS30)。
暗号通信装置B20の共有鍵生成部207は、KEM暗号文生成部205にて生成された鍵データKBと、KEM暗号文復号化部206にて生成された鍵データKAとを用いて、共有鍵K(=KA xor KB)を生成する(ステップS35)。
共有鍵生成部207は、生成した共有鍵Kから共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを生成し(K=KS||KH)、生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを共有鍵格納部208に格納する(ステップS40)。
暗号通信装置A10のKEM暗号文復号化部106は、暗号通信装置B20から送受信部102を介して、KEM暗号文KEMBを受信する(ステップS45)。
KEM暗号文復号化部106は、公開鍵復号アルゴリズムKemD、及び秘密鍵KSAを用いて、受信したKEM暗号文KEMBを復号化して、鍵データKBを生成する(ステップS50)。
暗号通信装置A10の共有鍵生成部107は、KEM暗号文生成部105にて生成された鍵データKAと、KEM暗号文復号化部106にて生成された鍵データKBとを用いて、共有鍵K(=KA xor KB)を生成する(ステップS55)。
共有鍵生成部107は、生成した共有鍵Kを用いて、共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを生成し(K=KS||KH)、生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを共有鍵格納部108に格納する(ステップS60)。
暗号通信装置A10のチャレンジデータ生成部109は、チャレンジデータnAを生成し(ステップS65)、生成したチャレンジデータnAを暗号通信装置B20へ送信する(ステップS70)。
暗号通信装置B20のレスポンスデータ生成部210は、暗号通信装置A10からチャレンジデータnAを受け取る(ステップS75)。
暗号通信装置B20のMAC生成部212は、共有鍵格納部208に格納しているMAC用共有鍵KHと、予め記憶している鍵付ハッシュ関数Hashとを用いて、チャレンジデータnAに対するMAC値HnA(=Hash(KH,nA))を算出し、算出したMAC値HnAをレスポンスデータrBとする(ステップS80)。
暗号通信装置B20のチャレンジデータ生成部209は、チャレンジデータnBを生成する(ステップS85)。
チャレンジデータ生成部209はチャレンジデータnBを、レスポンスデータ生成部210はレスポンスデータrBを、それぞれ暗号通信装置A10へ送信する(ステップS90)。
暗号通信装置A10のレスポンスデータ生成部110は、暗号通信装置B20からチャレンジデータnBとレスポンスデータrBとを受け取る(ステップS95)。
レスポンスデータ生成部110は、レスポンスデータrBと検証指示とをレスポンスデータ検証部111へ出力する。レスポンスデータ検証部111は、レスポンスデータ生成部110から検証指示とレスポンスデータrBとを受け取ると、チャレンジデータ生成部109にて一時的に記憶されているチャレンジデータnAを取得する。レスポンスデータ検証部111は、MAC生成指示と、取得したチャレンジデータnAとをMAC生成部112へ出力する。MAC生成部112は、共有鍵格納部108に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、チャレンジデータnAに対するMAC値HnAを算出し、算出したMAC値HnAをレスポンスデータ検証部111へ出力する。レスポンスデータ検証部111は、MAC生成部112からMAC値HnAを受け取ると、MAC値HnAとレスポンスデータrBとが一致するか否かを判断する(ステップS100)。
一致しないと判断する場合には(ステップS100における「NG」)、暗号通信に係る処理は中止される。
一致すると判断する場合には(ステップS100における「OK」)、レスポンスデータ生成部110は、レスポンスデータ生成指示をレスポンスデータ生成部110へ出力する。レスポンスデータ生成部110は、レスポンスデータ検証部111からレスポンスデータ生成指示を受け取ると、MAC生成指示と、一時的に記憶しているチャレンジデータnBとをMAC生成部112へ出力する。MAC生成部112は、レスポンスデータ検証部111からMAC生成指示と、チャレンジデータnBとを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、チャレンジデータnBに対するMAC値HnB(=Hash(KH,nB))を算出し、算出したMAC値HnBをレスポンスデータrAとする(ステップS105)。
レスポンスデータ生成部110は、レスポンスデータrAを暗号通信装置B20へ送信する(ステップS110)。
暗号通信装置B20のレスポンスデータ検証部211は、暗号通信装置A10からレスポンスデータrAを受け取る(ステップS115)。
レスポンスデータ検証部211は、チャレンジデータ生成部209にて一時的に記憶されているチャレンジデータnBを取得する。レスポンスデータ検証部211は、MAC生成指示と、取得したチャレンジデータnBとをMAC生成部212へ出力する。MAC生成部212は、レスポンスデータ検証部211からMAC生成指示と、チャレンジデータnBとを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、チャレンジデータnBに対するMAC値HnBを算出し、算出したMAC値HnBをレスポンスデータ検証部211へ出力する。レスポンスデータ検証部211は、MAC生成部212からMAC値HnBを受け取ると、MAC値HnBとレスポンスデータrAとが一致するか否かを判断する(ステップS120)。
一致しないと判断する場合には(ステップS120における「NG」)、暗号通信に係る処理は中止される。
一致すると判断する場合には(ステップS120における「OK」)、暗号通信に係る処理は続行される。
暗号通信装置A10のDEM暗号文生成部115は、外部から入出力部101を介して、暗号化対象データDAを受け取る(ステップS125)。
暗号通信装置A10の共通鍵暗号化部113は、共有鍵格納部108に格納している共通鍵暗号用共有鍵KSと、共通鍵暗号アルゴリズムとを用いて、DEM暗号文生成部115が受け取った暗号化対象データDAを暗号化して、暗号化対象データDAに対する暗号化データEDA(=Enc(KS,DA))を生成する(ステップS130)。
暗号通信装置A10のMAC生成部112は、共有鍵格納部108に格納しているMAC用共有鍵KHと鍵付ハッシュ関数Hashとを用いて、DEM暗号文生成部115が受け取った暗号化対象データDAに対するMAC値HDA(=Hash(KH,DA))を算出する(ステップS135)。
DEM暗号文生成部115は、共通鍵暗号化部113にて生成された暗号化データEDAと、MAC生成部112にて算出されたMAC値HDAとを連結して、DEM暗号文DEMA(=Enc(KS,DA)||HDA)を生成する(ステップS140)。
DEM暗号文生成部115は、生成したDEM暗号文DEMAを、暗号通信装置B20へ送信する(ステップS145)。
暗号通信装置B20のDEM暗号文復号化部216は、暗号通信装置A10からDEM暗号文DEMAを受け取る(ステップS150)。
DEM暗号文復号化部216は、受け取ったDEM暗号文DEMAを暗号化データEDAとMAC値HDAとに分離する(ステップS155)。
暗号通信装置B20の共通鍵復号化部214は、共有鍵格納部208に格納している共通鍵暗号用共有鍵KSと、共通鍵復号化アルゴリズムとを用いて、DEM暗号文復号化部216が取得した暗号化データEDAを復号化して、復号化データDA’を生成する(ステップS160)。
暗号通信装置B20のMAC生成部212は、共有鍵格納部208に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、共通鍵復号化部214にて生成された復号化データDA’に対するMAC値HDA’(=Hash(KH,DA’))を算出する(ステップS165)。
DEM暗号文復号化部216は、MAC生成部212にて算出されたMAC値HDA’(=Hash(KH、DB’))と、DEM暗号文DEMAから分離したHDAとを比較し、一致するか否かを判断する(ステップS170)。
一致しないと判断する場合には(ステップS170における「NG」)、暗号通信に係る処理は中止される。
一致すると判断する場合には(ステップS170における「OK」)、DEM暗号文復号化部216は、復号化データDA’、つまり暗号化対象データDAを、入出力部201を介して外部へ出力する(ステップS175)。
暗号通信装置B20のDEM暗号文生成部215は、外部から入出力部201を介して、暗号化対象データDBを受け取る(ステップS180)。
暗号通信装置B20の共通鍵暗号化部213は、共有鍵格納部208に格納している共通鍵暗号用共有鍵KSと、共通鍵暗号アルゴリズムとを用いて、DEM暗号文生成部215が受け取った暗号化対象データDBを暗号化して、暗号化対象データDBに対する暗号化データEDB(=Enc(KS,DA))を生成する(ステップS185)。
暗号通信装置B20のMAC生成部212は、共有鍵格納部208に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、DEM暗号文生成部215が受け取った暗号化対象データDBに対するMAC値HDB(=Hash(KH,DB))を算出する(ステップS190)。
DEM暗号文生成部215は、共通鍵暗号化部213にて生成された暗号化データEDBと、MAC生成部212にて算出されたMAC値HDBとを連結して、DEM暗号文DEMB(=Enc(KS,DB)||HDB)を生成する(ステップS195)。
DEM暗号文生成部215は、生成したDEM暗号文DEMBを暗号通信装置A10へ送信する(ステップS200)。
暗号通信装置A10のDEM暗号文復号化部116は、暗号通信装置B20からDEM暗号文DEMBを受け取る(ステップS205)。
DEM暗号文復号化部116は、受け取ったDEM暗号文DEMB(=EDB||HDB)を暗号化データEDBとMAC値HDBとに分離する(ステップS210)。
暗号通信装置A10の共通鍵復号化部114は、共有鍵格納部108に格納している共通鍵暗号用共有鍵KSと共通鍵復号化アルゴリズムとを用いて、DEM暗号文復号化部116が取得した暗号化データEDBを復号化して、復号化データDB’を生成する(ステップS215)。
暗号通信装置A10のMAC生成部112は、共有鍵格納部108に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、共通鍵復号化部114にて生成された復号化データDB’に対するMAC値HDB’(=Hash(KH,DB’))を算出する(ステップS220)。
DEM暗号文復号化部116は、MAC生成部112にて算出されたMAC値HDB’と、DEM暗号文DEMBから分離したHDBとを比較し、一致するか否かを判断する(ステップS225)。
一致しないと判断する場合には(ステップS225における「NG」)、暗号通信に係る処理は中止される。
一致すると判断する場合には(ステップS230における「OK」)、DEM暗号文復号化部116は、復号化データDB’、つまり暗号化対象データDBを、入出力部101を介して外部へ出力する(ステップS230)。
ここで、鍵共有フェーズはステップS5からステップS60までの処理に、チャレンジ・レスポンス認証フェーズはステップS65からステップS120までの処理に、データ暗号通信フェーズはステップS125からステップS230までの処理に、それぞれ相当する。
1.5 第1の実施の形態の効果
第1の実施の形態では、鍵カプセル化メカニズム(KEM)と、DEM暗号文を送信する処理に、MAC用共有鍵を用いたチャレンジ・レスポンス認証を実行する処理を追加することで、共有鍵の漏洩の困難性だけでなく、なりすまし攻撃に対する安全性を保証できる。
以下に、それを詳細に説明する。
鍵カプセル化メカニズムで共有した鍵を用いて、データに対して、暗号化した暗号化データとそのデータに対する鍵付ハッシュ関数値を送信するような方式であれば、データ暗号化方法として、困難な数学上の問題を根拠にして共有鍵の漏洩や暗号文データに対する平文データの漏洩に関する安全性証明を可能であることが保証されている。
なお、これについては、著者Victor Shoupにより“A proposal for an ISO standard for public key encryption (version 2.1)”に記載されているので、ここでの説明は省略する。
本方式は、同様に、鍵カプセル化メカニズムで共有した鍵を用いて、データに対して、暗号化した暗号化データとそのデータに対する鍵付ハッシュ値を送信しているため、同様の安全性が保証できる。
また、暗号通信装置A10において、正しい秘密鍵KSAを保持していなければ、KEM暗号文KEMBを復号化して鍵データKBを取得できないため、暗号通信装置B20と共有した共通鍵暗号用共有鍵KS及びMAC用共有鍵KHを得られない。そのため、ステップS215にて暗号データEDBの復号化ができない。また、暗号通信装置B20も同様に、正しい秘密鍵KSBを保持していなければ、KEM暗号文KEMAを復号化して鍵データKAを取得できないため、暗号通信装置A10と共有した共通鍵暗号用共有鍵KS及びMAC用共有鍵KHを得られない。そのため、ステップS160にて暗号化データEDAの復号化ができない。鍵データKAまたは、鍵データKBを正しく取得するためには、正しい秘密鍵KSAまたは、KSBが必要である。
したがって、両方の機器からKEM暗号文KEMB、KEMAを送りあうことにより、双方向の認証が実現できている。
さらに、第1の実施の形態では、MAC用共有鍵KHを用いたチャレンジ・レスポンス認証を実行している。正しい暗号通信装置であると判定されるためには、正しいレスポンスデータを送信する必要がある。第1の実施の形態では、レスポンスデータを生成するために、DEM暗号文生成部で使用するMAC生成部を使用する。DEM暗号文生成部で使用するMAC生成部では、MAC用共有鍵KHを知らない限り、正しいレスポンスデータを生成できる確率は非常に低い。
したがって、正しいレスポンスデータを生成できる場合、すなわち、認証を通過してなりすまし攻撃が可能である場合、攻撃者はMAC用共有鍵KHを知っていることになる。しかし、MAC用共有鍵KHに限らず、KEMを用いて生成した各共有鍵の漏洩は困難(共有鍵の漏洩に対して安全)であることが証明可能であるため、なりすまし攻撃が困難であることが証明可能となる。
以上より、鍵漏洩や平文漏洩の安全性だけでなく、なりすまし攻撃に対する安全性を保証できる認証鍵共有を実現でき、その価値は大きい。
1.6 暗号通信システム1の変形例
上記実施の形態では、暗号通信システム1は2台の暗号通信装置から構成されるとしたが、これに限定されない。
本発明における暗号通信システムは、1台のコンピュータ装置内において、耐タンパ性を有する領域Aと他の領域Bとにおいてデータを送受信(入出力)する際に暗号通信を行う2つのプログラムからなるとしてもよい。これら2つのプログラムは、コンピュータ装置によって実行され、実行された2つのプログラム間で、本発明の暗号通信が行われる。
ここで、暗号通信を行う2つのプログラムをプログラムA及びBとし、プログラムAは領域Aに存在し、プログラムBは領域Bに存在するものとする。
プログラムA及びプログラムBのそれぞれは、入出力ステップ、送受信部ステップ、KEM暗号文生成ステップ、KEM暗号文復号化ステップ、共有鍵生成ステップ、チャレンジデータ生成ステップ、レスポンスデータ生成ステップ、レスポンスデータ検証ステップ、MAC生成ステップ、共通鍵暗号化ステップ、共有鍵復号化ステップ、DEM暗号文生成ステップ、及びDEM暗号文復号化ステップを含んでいる。
また、領域A及びBは、上記にて示す暗号通信装置と同様に、通信相手の公開鍵を格納している公開鍵格納部、自身の秘密鍵を格納している秘密鍵格納部、及び共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを格納する領域を有している共有鍵格納部を有している。ここで、領域Aにおける各格納部の内容は、領域Aが耐タンパ性を有しているので外部へは漏洩されないようになっているが、領域Bにおける各格納部の内容についても外部へは漏洩されない仕組み(例えば、耐タンパ性)になっているものとする。
各ステップが上記の実施の形態にて示す各構成要素と同様の動作を行うことで、上記と同様に、鍵共有フェーズ、チャレンジ・レスポンス認証フェーズ及びデータ暗号通信フェーズが実現されるので、各ステップの動作についての説明は省略する。
なお、ここでは、本発明を2つのプログラム間における暗号通信に適用したが、これに限定されない。
本発明は、暗号通信装置とプログラムとの間における暗号通信に適用してもよい。具体的には、暗号通信装置をDVD装置とし、プログラムがDVDに記録されているとした場合における暗号通信に適用してもよい。なお、プログラムは、DVD装置内における実行手段にて実行され、DVD装置に具備された構成要素(例えば、暗号通信装置A10と同様の構成要素)と、実行されたプログラム間で、本発明の暗号通信が行われる。
1.7 その他の変形例
上記に説明した実施の形態は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)上記の実施の形態において、暗号通信装置A10及び暗号通信装置B20のそれぞれからデータを送受信したが、これに限定されない。
1の暗号通信装置(例えば、暗号通信装置A10)のみがデータを送信し、他の暗号通信装置(例えば、暗号通信装置B20)のみがデータを受信としてもよい。
(2)上記の実施の形態において、鍵共有フェーズとチャレンジ・レスポンス認証フェーズの間や、チャレンジ・レスポンス認証フェーズとデータ暗号通信フェーズの間には、その他の何らかの処理、例えば、機器の機能(音楽視聴機能、映画視聴機能や放送受信機能など)の確認処理が途中に含まれてもよい。また、各フェーズの内部の処理ステップの順番は、上記で示したものに限らない。
(3)上記の実施の形態において、チャレンジ・レスポンス認証フェーズでは、各暗号通信装置は、ランダムに生成したチャレンジデータを通信相手の装置へ送信しているが、これに限定されない。
各暗号通信装置は、通信相手からのKEM暗号文から求められる鍵データ(暗号通信装置A10であれば鍵データKB、暗号通信装置B20であれば鍵データKA)をチャレンジデータとしてもよい。
そうすることで、チャレンジデータを送信する処理を削減できる。この時、相手先では、自身が生成した鍵データとチャレンジデータとして送信された鍵データとが一致するか否かを確認することでチャレンジ・レスポンス認証フェーズと同様の認証が行える。
例えば、暗号通信装置A10は、暗号通信装置B20からチャレンジデータrB(=Hash(KH,KA))を受け取ると、自身が生成したKAに対するMAC値を算出し、算出したMAC値とチャレンジデータrBとが一致するか否かを判断することにより、通信相手の認証を行う。
また、暗号通信装置B20は、暗号通信装置A10からチャレンジデータrA(=Hash(KH,KB))を受け取ると、自身が生成したKBに対するMAC値を算出し、算出したMAC値とチャレンジデータrAとが一致するか否かを判断することにより、通信相手の認証を行う。
(4)上記実施の形態において、各暗号通信装置の共有鍵生成部は、共有鍵Kを生成し、生成した共有鍵Kの一部を共通鍵暗号用共有鍵KSとし、それ以外の部分をMAC用共有鍵KHとしたが、これに限定されない。
各暗号通信装置の共有鍵生成部は、生成した共有鍵Kそのものを、共通鍵暗号用共有鍵KS及びMAC用共有鍵KHとしてもよい。つまり、K=KS=KHである。
(5)上記の実施の形態において、各暗号通信装置の共有鍵生成部は、共有鍵Kを生成する際に鍵KAと鍵KBの排他的論理和を用いて生成したが、これに限定されない。
共有鍵生成部は、MAC生成部で使用しているハッシュ関数Hashを使用して、共有鍵Kを生成してもよい。
例えば、各暗号通信装置の共有鍵生成部は、Hash(KA,KB)を共有鍵Kとしてもよいし、Hash(KB,KA)を共有鍵Kとしてもよい。
また、ハッシュ関数Hashを上記実施の形態にて示すSHA1とする場合、各暗号通信装置の共有鍵生成部は、SHA1(KA||KB)を共有鍵Kとしてもよいし、SHA1(KB||KA)を共有鍵Kとしてもよい。
これにより、共有鍵生成における安全性が向上する。
(6)上記の実施の形態において、各暗号通信装置は、通信相手の公開鍵を予め、公開鍵格納部に格納しているが、これに限定されない。
暗号通信装置は、証明書センタが発行した公開鍵証明書(公開鍵に対する証明書センタの署名と、公開鍵そのものとを含む)を、通信相手に送信するとしてもよい。例えば、暗号通信装置A10は通信相手である暗号通信装置B20から公開鍵KPBに対する公開鍵証明書を受け取り、暗号通信装置B20は通信相手である暗号通信装置A10から公開鍵KPAに対する公開鍵証明書を受け取る。
その場合、通信相手である暗号通信装置は、証明書センタの公開鍵を有しており、鍵共有フェーズの前に、互いの公開鍵証明書を証明書センタの公開鍵を用いて検証し、正しい証明書と判定したときに公開鍵格納部に、公開鍵証明書に含まれる公開鍵を格納する。
また、各暗号通信装置は、公開鍵証明書を証明書センタから受け取るとしてもよい。
(7)上記の実施の形態において、チャレンジ・レスポンス認証を行う際に、鍵付ハッシュ値を計算する方法を用いたが、これに限定されない。
例えば、チャレンジデータをMAC用共有鍵KHで暗号化して生成したレスポンスデータをやりとりするとしてもよい。
この場合における検証は、レスポンスデータの暗号化を解いた結果と送信元が保持しているチャレンジデータとを比較してもよいし、送信元が保持しているチャレンジデータを同様の方法で暗号化した結果とレスポンスデータとを比較してもよい。
また、認証方法もチャレンジ・レスポンスに限定されるものではない。KEMにより共有した鍵データが認証結果に影響するような認証方法であれば、どのようなものでも構わない。
また、チャレンジ・レスポンス認証においても、上記実施の形態にて示す認証方法に限定されない。上記にて示す方法とは異なる方法によるチャレンジ・レスポンス認証であってもよい。
以下、その一例について説明する。なお、ここでは、暗号通信装置A10が暗号通信装置B20を認証する場合について、図5にて示すステップS65からS100までの変更点を中心に説明する。
暗号通信装置A10はステップS65を実行後、生成したチャレンジデータnAを暗号通信装置A10が有するMAC用共有鍵KHにて暗号化して暗号化データEnc(KH,nA)を生成する。
暗号通信装置A10は、ステップS70において、生成した暗号化データEnc(KH,nA)を暗号化通信装置B20へ送信する。
暗号通信装置B20は、ステップS75にて、暗号化データEnc(KH,nA)を受信する。
暗号通信装置B20は、ステップS80にて、受信した暗号化データEnc(KH,nA)を自身が有するMAC用共有鍵KHにて復号し、復号データnA’を生成し、生成した復号データnA’をレスポンスデータrB(=nA’)とする。
暗号通信装置B20は、ステップS85、S90を実行する。
暗号化通信装置A10は、ステップS95の実行後、受け取ったレスポンスデータと、自身が記憶しているチャレンジデータnAを比較して暗号通信装置B20の正当性を判断する。
なお、ステップS85において、暗号通信装置B20は、生成したチャレンジデータnBを暗号通信装置B20が有するMAC用共有鍵KHにて暗号化して暗号化データEnc(KH,nB)を生成してもよい。このとき、暗号通信装置A10は、ステップS105にて、受信した暗号化データEnc(KH,nB)を自身が有するMAC用共有鍵KHにて復号し、復号データnB’を生成し、生成した復号データnB’をレスポンスデータrA(=nB’)とする。
(8)上記の実施の形態において、双方向でチャレンジ・レスポンス認証を行っているが、これに限定されない。
片方向のチャレンジ・レスポンス認証であってもよい。その場合においても、被認証者のなりすまし攻撃に対する安全性証明が可能である。
なお、この場合には、MAC用共有鍵KHを作成する必要はなく、鍵データKAや鍵データKBを直接用いて認証を行うとしてもよい。つまり、片方向の認証であるので、KEM暗号文の受信先が正しい秘密鍵を持っていれば、鍵データKA若しくは鍵データKBを取得できるので、取得した鍵データを用いて認証を行えばよい。
この場合、例えば、鍵データKAを共有した場合に、暗号通信装置B20から暗号通信装置A10へ片方向認証を行うことにより、簡易な相互認証を行うこともできる。すなわち、鍵データを共有できていることから、暗号通信装置B20は正当な秘密鍵KSBを持っていることが確認できるので、暗号通信装置B20が正当なものであることが確認できる。その後、チャレンジ・レスポンス認証によって、暗号通信装置A10が鍵データKAを共有している装置であるか否かが確認されるので、暗号通信装置A10の正当性を確認できる。
また、MAC用共有鍵KHを生成した上で、これを用いて片方向の認証を行ってもよいし、上記の場合でも暗号通信装置A10から暗号通信装置B20への片方向認証を行ってもよいことは言うまでもない。
(9)上記の実施の形態において、暗号通信装置B20はIC機能付のメモリカードであるとしてもよい。
IC機能付のメモリカードの構成は、暗号通信装置B20と同様の構成要素で実現できるので、ここでの説明は省略する。
なお、本発明において、IC機能付のメモリカードは、暗号通信装置の概念に含めるものとする。つまり、本発明は、2つのIC機能付のメモリカード間における暗号通信に適用してもよいし、上記にて示す暗号通信装置A10とIC機能付のメモリカード間における暗号通信に適用してもよい。
(10)上記の実施の形態において、共有鍵生成部107及び207は、共有鍵データKに対してK=KS||KHを満たすように共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを取得するとしたが、これに限定されない。
共有鍵生成部107及び207は、共有鍵データKに対してK=KH||KSを満たすように共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを取得してもよい。
例えば、共有鍵データKに対して別々の変換を施して得られる2つの値をそれぞれ共通鍵暗号用共有鍵KSとMAC用共有鍵KHとしてもよい。
つまり、共通鍵暗号用共有鍵KSとMAC用共有鍵KHのそれぞれは、共有鍵データKに依存して決まる値であればよい。
(11)上記実施の形態において、暗号通信装置B20は、レスポンスデータrBとチャレンジデータnBとを一緒に、暗号通信装置A10へ送信したが、これに限定されない。
レスポンスデータrBとチャレンジデータnBとを別々のタイミングで暗号通信装置A10へ送信してもよい。この場合、暗号通信装置A10は、レスポンスデータrBとチャレンジデータnBとを別々のタイミングで受信してもよい。
(12)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(13)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(14)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(15)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
(16)また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。
(17)また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
(18)また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
(19)また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(20)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
1.8 まとめ
(1)本発明は、第1の暗号通信装置と第2の暗号通信装置を備え、前記第1の暗号通信装置と前記第2の暗号通信装置との間で鍵配送を行い、共有した鍵を用いて前記第1の暗号通信装置から前記第2の暗号通信装置へコンテンツデータを送信する暗号通信システムであって、前記第1の暗号通信装置は、前記コンテンツデータの入力を受け付ける入力部と、前記第2の暗号通信装置へデータを送信し、前記第2の暗号通信装置からデータ受信する第1の送受信部と、第1の鍵と第1の鍵を暗号化した第1の鍵暗号文を生成する第1の鍵暗号文生成部と、第2の鍵暗号文を復号化して第1の復号化鍵を生成する第1の鍵暗号文復号化部と、前記第1の鍵と前記第1の復号化鍵に基づき第1の共有鍵を生成する第1の共有鍵生成部と、前記第1の共有鍵を格納する第1の共有鍵格納部と、第1のチャレンジデータを生成する第1のチャレンジデータ生成部と、第2のチャレンジデータに対する第1のレスポンスデータを生成する第1のレスポンスデータ生成部と、第2のレスポンスデータを検証する第1のレスポンスデータ検証部と、前記コンテンツデータを暗号化して暗号化コンテンツデータを生成するデータ暗号文生成部とを備え、前記第2の暗号通信装置は、復号化コンテンツデータを出力する出力部と、前記第1の暗号通信装置へデータを送信し、前記第1の暗号通信装置からデータ受信する第2の送受信部と、第2の鍵と第2の鍵を暗号化した前記第2の鍵暗号文を生成する第2の鍵暗号文生成部と、前記第1の鍵暗号文を復号化して第2の復号化鍵を生成する第2の鍵暗号文復号化部と、前記第2の鍵と前記第2の復号化鍵に基づき第2の共有鍵を生成する第2の共有鍵生成部と、前記第2の共有鍵を格納する第2の共有鍵格納部と、前記第2のチャレンジデータを生成する第2のチャレンジデータ生成部と、前記第1のチャレンジデータに対する前記第2のレスポンスデータを生成する第2のレスポンスデータ生成部と、前記第1のレスポンスデータを検証する第2のレスポンスデータ検証部と、前記暗号化コンテンツデータを復号化して前記復号化コンテンツデータを生成するデータ暗号文復号化部とを備え、前記第1のレスポンスデータ生成部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第1のレスポンスデータとし、前記第1のレスポンスデータ検証部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第2のレスポンスデータの検証に用い、前記データ暗号文生成部は、前記暗号化コンテンツデータを前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値、データ暗号文用鍵付ハッシュ関数を使用して生成し、前記第2のレスポンスデータ生成部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第2のレスポンスデータとし、前記第2のレスポンスデータ検証部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第1のレスポンスデータの検証に用い、前記データ暗号文復号化部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
(2)上記(1)において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、同一であるとしてもよい。
(3)上記(1)において、前記第1の鍵暗号文及び前記第2の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
(4)上記(1)から(3)の何れかにおいて、前記第1の共有鍵生成部は、前記第1の鍵と前記第1の復号化鍵の排他的論理和を前記第1の共有鍵として出力し、前記第2の共有鍵生成部は、前記第2の鍵と前記第2の復号化鍵の排他的論理和を前記第2の共有鍵として出力するとしてもよい。
(5)上記(1)から(3)の何れかにおいて、前記第1の共有鍵生成部は、前記第1の鍵と前記第1の復号化鍵をビット連結したものに対して、共有鍵を生成するハッシュ関数である共有鍵生成ハッシュ関数を用いて計算したハッシュ値を前記第1の共有鍵として出力し、前記第2の共有鍵生成部は、前記第2の会議と前記第2の復号化鍵をビット連結したものに対して、前記共有鍵生成ハッシュ関数を用いて計算したハッシュ値を前記第2の共有鍵として出力するとしてもよい。
(6)上記(5)において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
(7)上記(1)から(6)の何れかにおいて、前記第1の暗号通信装置は、第1のチャレンジデータ生成部を備えず、前記第1のチャレンジデータを前記第1の鍵とし、前記第2の暗号通信装置は、第2のチャレンジデータ生成部を備えず、前記第2のチャレンジデータを前記第2の鍵とするとしてもよい。
(8)また、本発明は、コンテンツ送信装置とコンテンツ受信装置を備え、前記コンテンツ送信装置と前記コンテンツ受信装置との間で鍵配送を行い、共有した鍵を用いて暗号化通信を行う暗号通信システムにおけるコンテンツ送信装置であって、前記コンテンツデータの入力を受け付ける入力部と、前記コンテンツ受信装置へデータを送信し、前記コンテンツ受信装置からデータを受信する送受信部と、第1の鍵と第1の鍵を暗号化した第1の鍵暗号文を生成する第1の鍵暗号文生成部と、前記コンテンツ受信装置から送信される第2の鍵暗号文を復号化して第1の復号化鍵を生成する第1の鍵暗号文復号化部と、前記第1の鍵と前記第1の復号化鍵に基づき第1の共有鍵を生成する共有鍵生成部と、前記第1の共有鍵を格納する共有鍵格納部と、第1のチャレンジデータを生成するチャレンジデータ生成部と、前記コンテンツ受信装置から送信された第2のチャレンジデータに対する第1のレスポンスデータを生成するレスポンスデータ生成部と、前記コンテンツ受信装置から送信される第2のレスポンスデータを検証するレスポンスデータ検証部と、前記コンテンツデータを暗号化して暗号化コンテンツデータを生成するデータ暗号文生成部とを備え、前記レスポンスデータ生成部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第1のレスポンスデータとし、前記レスポンスデータ検証部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第2のレスポンスデータの検証に用い、 前記データ暗号文生成部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
(9)上記(8)において、前記第1の鍵暗号文及び前記第2の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
(10)上記(9)において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数とは、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
(11)また、本発明は、コンテンツ送信装置とコンテンツ受信装置を備え、前記コンテンツ送信装置と前記コンテンツ受信装置との間で鍵配送を行い、共有した鍵を用いて暗号化通信を行う暗号通信システムにおけるコンテンツ受信装置であって、復号化コンテンツデータを出力する出力部と、前記コンテンツ送信装置へデータを送信し、前記コンテンツ送信装置からデータ受信する送受信部と、第2の鍵と第2の鍵を暗号化した第2の鍵暗号文を生成する第2の鍵暗号文生成部と、前記コンテンツ送信装置から送信される第1の鍵暗号文を復号化して第2の復号化鍵を生成する第2の鍵暗号文復号化部と、前記第2の鍵と前記第2の復号化鍵に基づき第2の共有鍵を生成する共有鍵生成部と、前記第2の共有鍵を格納する共有鍵格納部と、第2のチャレンジデータを生成するチャレンジデータ生成部と、前記コンテンツ送信装置から送信される第1のチャレンジデータに対する前記第2のレスポンスデータを生成するレスポンスデータ生成部と、前記コンテンツ送信装置から送信される前記第1のレスポンスデータを検証するレスポンスデータ検証部と、前記コンテンツ送信装置から送信される暗号化コンテンツデータを復号化して前記復号化コンテンツデータを生成するデータ暗号文復号化部とを備え、 前記レスポンスデータ生成部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第2のレスポンスデータとし、前記レスポンスデータ検証部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第1のレスポンスデータの検証に用い、前記データ暗号文復号化部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
(12)上記(11)において、前記第1の鍵暗号文及び前記第2の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
(13)上記(11)、(12)の何れかにおいて、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
(14)これらの構成によると、鍵カプセル化メカニズムを使用した鍵共有の後に、共有した鍵を用いたチャレンジ・レスポンス認証を追加することにより、なりすまし攻撃の安全性を保証できるため、その価値は大きい。
本発明を構成する各装置、各方法及びコンピュータプログラムは、情報を安全かつ確実に扱う必要があるあらゆる産業において、経営的に、また継続的及び反復的に使用することができる。
また、本発明を構成する各装置、各方法及び各コンピュータプログラムは、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
本発明は、情報セキュリティ技術としての暗号技術、特に共有鍵を用いて正当な通信相手と秘密通信を行う技術に関する。
近年、家庭用電化製品、携帯電話機などの間でネットワークを介した通信を行う機会が増加している。例えば、AV(Audio Visual)機器ではコンテンツの著作権保護のために機器同士で、また、携帯電話機では通信内容の漏洩を防ぐために携帯電話機と通信相手である装置とで、認証鍵共有を行った後に、共有した鍵を用いて暗号化した通信を行うことがある。ここで、認証鍵共有とは、機器同士などで、通信相手の機器が正しく作られた機器であるかを、相互認証により確認し、それと同時に鍵を共有するものである(以下、共有する鍵を共有鍵という。)。
例えば、AV機器同士をIEEE1394で接続したときに使用される、DTCP(Digital Transmission Content Protection)と呼ばれる著作権保護規格で規定されている認証鍵共有方法がある(非特許文献1参照)。この方法は、認証方式に楕円DSA署名を用いたチャレンジ・レスポンス認証を使用し、鍵共有方式に楕円DH鍵共有を使用している。チャレンジ・レスポンス認証、楕円DSA署名及び楕円DH鍵共有については、非特許文献2が詳しい。
上記に示すDTCPの認証鍵共有方法では、安全性の問題、すなわち、実効性のある攻撃方法の存在については特に指摘されていない。しかし、未知の攻撃方法を含めた全ての攻撃方法に対する安全性の証明はなされていない。
ここで、「安全性の証明」とは、暗号方式の安全性が経験的なものではなく、数学的に証明できることである。例えば、公開鍵暗号においては、秘密鍵を持たないユーザが暗号文の解読を行う場合、数学的に求解困難であると考えられている問題(例えば、素因数分解問題や楕円離散対数問題)を解く必要があることを証明する。この証明ができる場合、暗号文の解読が、求解困難であると考えられている問題よりも難しいことが示せたこととなる。したがって、このような証明ができる場合には、公開鍵暗号について安全性証明があることになる。
安全性証明ができないと経験的に「たぶん解読困難と思われる」というレベルまでしか暗号方式の安全が保証できないので、その暗号方式を使用することに不安が残ってしまう。そのため、ユーザは、従来の認証鍵共有方法を安心して使用することはできない。
そこで、安全性証明された鍵配送方式である鍵カプセル化メカニズム(Key Encapsulation Mechanisms、以降ではKEMと呼ぶ。)を用いた認証鍵共有方式が提案されている(特許文献1参照)。この技術により鍵漏洩がなされないので、ユーザは、安心して認証鍵の共有ができる。
国際公開第WO05/039100号 DTCP SpecificationのWhite paper <URL:http://www.dtcp.com/data/spec.html> 岡本龍明、山本博資、"現代暗号"、産業図書(1997年)
しかしながら、KEMを用いた認証鍵共有方法では共有鍵の漏洩に対する安全性については証明しているが、なりすまし攻撃に対する安全性については証明できていない。なりすまし攻撃とは、攻撃者が通信相手のユーザ(機器)になりすまして、正当なユーザ(機器)との間で、正当なユーザ(機器)の情報を漏洩させたり、相手の通信をさせないように遮ろうとしたりする攻撃である。
そのため、データを送信する送信元の装置は、正当な装置であるようになりすました不正な装置に対して、データを送信する可能性があるので、システム全体としての安全性に問題が残る。
なぜなら、例えば、仮に共有鍵の漏洩に対する安全性が保証されており、また、共有鍵によって暗号化されたデータ1つ1つから共有鍵を推測することは困難であっても、暗号化されたデータを大量に収集すると共有鍵の推測が容易になることがあるからである。
したがって、認証鍵共有では、なりすまし攻撃に対して安全であることが望ましい。さらに、この場合、共有鍵の漏洩に対してのみならず、なりすまし攻撃に対する防衛策についても安全性証明があることが望ましい。
そこで、本発明は、なりすまし攻撃に対しても安全性証明ができる通信装置、通信システムを提供することを目的とする。
上記目的を達成するために、本発明は、通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段とを備えることを特徴とする。
上記に示した構成によると、通信装置は、共有鍵と鍵依存関数とを用いて認証を行い、さらに、同一の共有鍵と鍵依存関数を用いて検証用データを生成しているので、なりすまし攻撃を防ぐことができる。以下にその理由を示す。
通信装置は、認証時になりすまし攻撃を受けている場合には、その認証により不正な外部装置であると判断することができるので、以降において通信対象データを送信しないことにより、なりすまし攻撃を防ぐことができる。
また、認証後に通信装置がなりすまし攻撃により不正な装置から通信対象データを受信する場合において、通信装置は、不正な装置から通信対象データを受信してしまうが、通信相手が不正な装置であることが分かれば、受信した通信対象データを破棄すればよい。この場合において、通信対象データの正当性検証のために、不正な装置から検証用データをも送信される。しかしながら、不正な装置は、共有鍵及びこれに依存する鍵依存関数を有していないので、正当な検証用データを送信することができない。仮に、通信装置が不正な装置から検証用データを受信したとしても、受信した検証用データは通信装置が有する共有鍵に依存する鍵依存関数により生成されていないため通信装置自身が生成した検証用データとは異なることとなり、通信対象データが不正、つまり、通信対象データを送信した装置が不正であると判断することができる。これにより、通信装置は、通信対象データを送信した装置が不正であると判断した場合には受信した通信対象データを破棄することにより、なりすまし攻撃を防ぐことができる。
さらには、通信装置は、安全性証明のなされた暗号方式により共有すべき共有鍵を生成するので、漏洩に対して安全である。これにより、通信装置は、漏洩に対して安全である共有鍵を用いて外部装置の認証及び秘密通信を行うので、これら処理に対する安全性も保証される。
以下、簡単になりすまし攻撃に対する安全性の証明を行う。
認証時において、通信装置が、外部装置が正当であると確認するためには、外部装置にて正しい検証用データが生成される必要があり、そのためには通信装置と外部装置との間で同一の共有鍵を共有する必要がある。しかしながら、共有鍵は安全性証明がなされた暗号方式を用いて生成されるので、漏洩される、つまり、不正な装置が共有鍵を取得することができる確率が非常に小さく、無視できる程度となることを数学的に証明できる。そのため、不正な装置が正しい検証用データを生成することができないことも数学的に証明できる。したがって、通信装置は、なりすまし攻撃に対しても安全性が証明できる。
ここで、前記鍵生成手段は、前記第1の鍵データを生成し、前記第1の鍵データを秘密に前記外部装置へ送信し及び前記外部装置にて生成された第2の鍵データを秘密に受信することにより前記外部装置との間で前記第1の鍵データ及び前記第2の鍵データを共有し、共有した前記第1の鍵データと前記第2の鍵データとを用いて前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、秘密に共有した第1の鍵データ及び第2の鍵データを用いて共有鍵を生成するので、共有鍵が外部に漏洩されることはない。
ここで、前記認証は、チャレンジレスポンス認証であり、前記判断手段は、前記外部装置から前記第1の鍵データをチャレンジデータとし、前記チャレンジデータと前記共有鍵とに前記関数を施して生成されたレスポンスデータを受け取り、前記チャレンジレスポンス認証を行うとしてもよい。
この構成によると、通信装置は、チャレンジレスポンス認証時にチャレンジデータを改めて送信する必要がないので、通信量を削減することができる。
ここで、前記鍵生成手段は、前記第1鍵データと前記第2鍵データとの排他的論理和演算により共有鍵データを算出し、算出した共有鍵データから前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、第1鍵データと第2鍵データとの排他的論理和演算により共有鍵データを算出しているので、共有鍵データから第1鍵データと第2鍵データを導出することを困難にすることができる。
ここで、前記鍵生成手段は、前記共有鍵データの一部を前記共有鍵とするとしてもよい。
この構成によると、通信装置は、共有鍵を、共有鍵データの一部とすることにより生成することができる。
ここで、前記鍵生成手段は、前記共有鍵データそのものを前記共有鍵とするとしてもよい。
この構成によると、通信装置は、共有鍵を、共有鍵データと同一にしているので、改めて共有鍵を生成する必要がない。そのため、通信装置における処理量を削減することができる。
ここで、前記鍵生成手段は、前記第1鍵データと前記第2鍵データとに前記鍵依存関数を施して共有鍵データを生成し、生成した共有鍵データから前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、第1鍵データと第2鍵データとに関数を施して共有鍵データへと変換しているので、第1鍵データ及び第2鍵データの漏洩を防ぐことができる。
ここで、前記鍵依存関数は、前記共有鍵に依存する一方向性関数であるとしてもよい。
この構成によると、通信装置は、一方向性関数を用いて共有鍵データを生成している。これにより、生成された共有鍵データから第1鍵データ及び第2鍵データを生成するのは困難であるので、第1鍵データ及び第2鍵データの漏洩に対する安全性を高めることができる。
ここで、前記共有鍵は、前記判断手段による認証及び前記検証用データの生成に用いる検証用共有鍵であり、前記鍵生成手段は、さらに、前記共有鍵データから前記外部装置との間で共有され、通信対象データの暗号化及び復号に用いる暗号用共有鍵を生成し、前記通信装置は、さらに、前記暗号用共有鍵を用いて前記通信対象データを暗号化して、暗号化データを生成し、生成した前記暗号化データを前記検証用データとともに前記外部装置へ送信する送信手段を備えるとしてもよい。
この構成によると、通信装置は、外部装置と共有すべき暗号用共有鍵を用いて通信対象データを暗号化して暗号化データを生成し、生成した暗号化データを外部装置へ送信するので、通信対象データが漏洩されることはない。
ここで、前記共有鍵は検証用共有鍵であり、前記鍵生成手段は、さらに、前記共有鍵データから前記外部装置との間で共有すべき暗号用共有鍵を生成し、前記通信装置は、さらに、前記外部装置から前記暗号用共有鍵にて通信対象データが暗号化された暗号化データを受信する受信手段を備え、前記データ生成手段は、前記受信手段にて受信した暗号化データを復号して復号データを取得し、取得した復号データを通信対象データとして前記検証用データを生成するとしてもよい。
この構成によると、通信装置は、外部装置と共有すべき暗号用共有鍵を用いて復号された復号データから検証用データを生成するので、外部装置との間で正当な暗号用共有鍵及び正当な検証用共有鍵を共有しない限り、正当な復号データ及び正当な検証用データを取得することができない。つまり、正当な通信装置のみが、復号データ及び検証用データを取得することができる。
ここで、前記鍵生成手段は、前記鍵配送として鍵カプセル化メカニズムを用いて前記共有鍵を生成するとしてもよい。
この構成によると、通信装置は、外部装置との間で鍵カプセル化メカニズムを用いて共有鍵を生成するので、共有鍵が漏洩されることはない。
また、鍵カプセル化メカニズムを用いることにより、鍵漏洩に対して安全であるので、認証時において、なりすまし攻撃に対する安全性が証明される。
1.第1の実施の形態
本発明にかかる第1の実施の形態としての暗号通信システム1について説明する。
暗号通信システム1は、図1に示すように、暗号通信装置A10と暗号通信装置B20とから構成され、暗号通信装置A10と暗号通信装置B20とは、通信路30を介して通信を行う。
暗号通信装置A10及び暗号通信装置B20は、鍵の漏洩及びなりすまし攻撃を防止して、通信相手と共有鍵を用いた暗号通信を行う。
暗号通信装置A10及び暗号通信装置B20における暗号通信は、大きく分けて、3つのフェーズ動作からなる。
1つ目のフェーズは、KEMを用いて暗号通信装置A10と暗号通信装置B20とが相互認証及び鍵配送を行い、互いの装置にて鍵を共有するフェーズである。
2つ目のフェーズは、共有した鍵を用いてチャレンジ・レスポンス認証を行うことにより、暗号通信装置A10と暗号通信装置B20のそれぞれが、お互いの送信相手がなりすまし攻撃を行っていないことを確認するフェーズである。
3つ目のフェーズは、共有した鍵を用いて暗号通信装置A10と暗号通信装置B20との間で通信路30を介して暗号したデータの送受信を行うフェーズである。
ここで、データとは、例えば、テキストデータ、音楽データ、画像データ、映画コンテンツデータである。
1.1 準備
ここでは、本実施の形態に用いる鍵配送方式の1つである鍵カプセル化メカニズム(Key Encapsulation Mechanisms、以降では「KEM」と呼ぶ。)について説明する。
鍵カプセル化メカニズムは、簡単に説明すると、公開鍵暗号を用いて送信装置と受信装置の間で共有鍵を配送するアルゴリズムである。先ず、送信側が、公開鍵暗号化アルゴリズムEに受信者の公開鍵pkを入力して暗号文Cと共有鍵Kを生成し、暗号文Cを受信側に伝送する。そして、受信側が、公開鍵復号アルゴリズムDに、秘密鍵skと暗号文Cを入力して送信側と同じ共有鍵Kを求める。なお、本明細書では、暗号文Cを「鍵データKのKEM暗号文」等とも呼ぶ。
鍵カプセル化メカニズムの目的は、鍵カプセル化メカニズムで共有鍵Kを送信装置と受信装置で共有することにより、その後、送信装置から受信装置へ通信される通信内容データを、共有鍵Kを用いて共通鍵暗号で暗号化することにある。ここで、送信装置を持つ送信者から受信装置を持つ受信者に一方的に情報の送信が行われていながら、送信者が作為的に共有鍵を作成できず、送信者による不正が抑制されている点が従来の鍵配送方式にない特徴である。
このような鍵カプセル化メカニズムとして、PSEC−KEMと呼ばれるアルゴリズムが開示されている。
なお、PSEC−KEMアルゴリズムの詳細については、著者Tatsuaki Okamotoによる“Generic conversions for constructing IND−CCA2 public−key encryption in the random oracle model”に記載されているので説明を省力する。以下に、PSEC−KEMアルゴリズムについて簡単に説明する。
(1)PSEC−KEMのシステムパラメータ
PSEC−KEMは、以下のシステムパラメータを持つ。
・楕円曲線:E
・楕円曲線E上の位数nの点:P
・ハッシュ関数:G、H
なお、楕円曲線、位数及びハッシュ関数については、非特許文献2に詳細が記述されているので、ここでは説明を省略する。
なお、ハッシュ関数G、Hは送信側および受信側の両方で共有している。
(2)PSEC−KEMの公開鍵と秘密鍵
・ランダムにZnの要素xを選び、W=x*Pを生成する。
ここで、Znは、{0,1,...,n−1}からなる集合であり、x*Pは、楕円曲線E上の点Pをx回加算することにより得られる楕円曲線上の点を表す。なお、楕円曲線上の点の加算方法については、非特許文献2に記述されている。
・公開鍵pkを(E,P,W,n)とし、秘密鍵skをxとする。
(3)PSEC−KEMの暗号化
暗号化時には、以下に述べる公開鍵暗号化アルゴリズムKemEに公開鍵pkを入力して共有鍵Kと暗号文Cを出力する。
以下に公開鍵暗号化アルゴリズムKemEについて説明する。
・Znの要素sをランダムに生成する。
・G(s)を生成し、G(s)をG(s)=a||Kと分割する。ここで、||はビット結合を表し,G(s)をG(s)=a||Kと分割するとは、G(s)の上位複数ビットをaとし、残りのビットをKとすることを表す。
・R=a*P,Q=a*Wを生成する。
・v=s xor H(R||Q)を生成する。ここで、xorは排他的論理和演算を表す。
・共有鍵Kと暗号文C=(R,v)を出力する。
・送信側の装置は、暗号文Cを通信の相手先(受信側の装置)へ送信する。
(4)PSEC−KEMの復号化
受信側の装置は、送信側の装置から暗号文Cを受け取り、以下に述べる公開鍵復号アルゴリズムKemDに暗号文C=(R,v)と秘密鍵skを入力して共有鍵Kを出力する。
以下に公開鍵復号アルゴリズムKemDについて説明する。
・Q=x*Rを生成する。ここで、上述したようにxは秘密鍵skである。
・s’=v xor H(R||Q)を生成する。ここで、vとRは暗号文Cから得られる。
・G(s’)を生成し、G(s’)をG(s’)=a’||K’と分割する。ここで、分割の仕方は暗号化側と同様である。
・R=a’*Pが成立するかどうかチェックする。成立すればK’を共有鍵Kとして出力する。
このPSEC−KEMアルゴリズムを、送信装置と受信装置の間で暗号化通信を行う暗号システムに応用した場合、まず、送信装置は、通信先受信装置の公開鍵pkを取得し、取得した公開鍵pkを前述の公開鍵暗号化アルゴリズムKemEに入力して共有鍵Kと暗号文Cを導出して、暗号文Cを受信装置へ送信する。そして、受信装置は、送信装置から暗号文Cを受信し、受信した暗号文Cと自身が有する秘密鍵skを前述の公開鍵復号アルゴリズムKemDに入力して、送信装置が導出したものと等しい共有鍵Kを導出する。
以下に、このことを詳細に説明する。
今、PSEC−KEMアルゴリズムは、ハッシュ関数Hの入力を(a*P||a*W)としており、公開鍵暗号化アルゴリズムKemEで、ランダムに生成した要素sにH(a*P||a*W)の値を作用させてvを生成する。そして、公開鍵復号アルゴリズムKemDでは、暗号文Cに含まれるR=a*Pから秘密鍵sk(=x)を用いてQ=x*R=x*(a*P)=a*(x*P)=a*Wを求めることができるので、v xor H(a*P||a*W)を計算することにより、公開鍵暗号化アルゴリズムKemEにおいて生成されたランダムな要素sを求めることができる。ここで、v xor H(a*P||a*W)は、公開鍵暗号化アルゴリズムKemEがsからvを計算する演算の逆演算である。従って、公開鍵暗号化アルゴリズムKemEと公開鍵復号アルゴリズムKemDは、ハッシュ関数Gに同じsの値を入力することができ、同じ共有鍵Kを導出することができる。この結果、秘密鍵skを有する受信装置は、送信装置が導出したものと同じ共有鍵Kを導出できることになる。
一方で、秘密鍵skを知らない他の受信装置は、たとえ公開鍵pkを取得して暗号文Cを受信したとしても、秘密鍵sk(=x)を知らないのでR=a*PからQ=a*W(=(ax)*P)を計算できず、送信装置が導出したものと同じ共有鍵Kを導出できない。なぜならば、秘密鍵skを知らない他の受信装置は、公開鍵pkしか利用できないので、上記Qの計算には秘密鍵sk(=x)の代わりに公開鍵pkに含まれるW=x*Pを利用することになるが、一般に、a*PとW=x*Pから、Q=a*W(=(ax)*P)を求めることは、楕円曲線上のDiffie−Hellman問題と呼ばれ、aやxの値を知らない限り計算困難だからである。なお、これについては、著者Neal Koblitzによる“Algebraic Aspects of Cryptography”(Algorithms and Computation in Mathematics Vol.3, pp.132−133, Springer−Verlag, 1998.)に記載されているので、ここでの説明は省略する。
すなわち、PSEC−KEMアルゴリズムは、秘密鍵を用いずにa*Pからa*Wを計算することが困難なDiffie−Hellman問題を用いて、最終的に共有鍵Kを導出することにより、秘密鍵を知らなければその共有鍵Kを導出できないようにしている。
よって、以上により、送信装置と受信装置とは、共有鍵Kを秘密に共有することができ、この後、秘密鍵暗号を用いて、送信装置から受信装置へ通信される通信内容データを、共有鍵Kを用いて共通鍵暗号で暗号化することができる。
上記のPSEC−KEMアルゴリズムは、先に述べた楕円曲線上のDiffie−Hellman問題が困難であれば、秘密鍵を知らない受信装置は共有鍵Kを得ることができないことが証明されている。このような証明を方式の安全性を証明していることから、「安全性証明」と呼ぶ。PSEC−KEMの他のKEMアルゴリズム、例えばRSA−KEMやNTRU−KEM(特開2004−201292号公報及び特開2004−201293号公報参照)なども同様の困難な数学上の問題を根拠として安全性証明されている。
なお、RSA−KEMの詳細については、著者Victor Shoupにより“A proposal for an ISO standard for public key encryption (version 2.1)”に記載されているので説明を省略する。
また、NTRU−KEMの詳細については、特開2004−201292号公報及び特開2004−201293号公報に記載されているので説明を省略する。
上記にて説明したKEMを用いて、2台の暗号通信装置の双方からKEM暗号文を送りあうこともある。この場合、一方の暗号通信装置Aから他の暗号通信装置BにKEM暗号文を送ることで共有される共有鍵(KAと呼ぶ)と、暗号通信装置Bから暗号通信装置AにKEM暗号文を送ることで共有される共有鍵(KBと呼ぶ)との両方を用いて共有鍵Kを作ることで、より安全な鍵共有ができる。
暗号通信システム1では、このような双方からKEM暗号文を送りあう構成で鍵共有を行う。
以下に、暗号通信システム1を攻勢する暗号通信装置A10、B20、及びこれらの動作について説明する。
1.2 暗号通信装置A10の構成
暗号通信装置A10は、図2に示すように、入出力部101、送受信部102、公開鍵格納部103、秘密鍵格納部104、KEM暗号文生成部105、KEM暗号文復号化部106、共有鍵生成部107、共有鍵格納部108、チャレンジデータ生成部109、レスポンスデータ生成部110、レスポンスデータ検証部111、MAC(改ざん検出符号、Message Authentication Code)生成部112、共通鍵暗号化部113、共通鍵復号化部114、DEM(Data Encapsulation Mechanism)暗号文生成部115、及びDEM暗号文復号化部116から構成されている。
(1)公開鍵格納部103
公開鍵格納部103は、暗号通信装置B20の公開鍵KPBを格納している。
なお、公開鍵KPBは、秘密鍵KSBと共に暗号通信装置B20に対応付けて、予め与えられている。また、暗号通信装置A10では、公開鍵KPBは予め外部から与えられて格納されているか、あるいは、暗号通信装置B20から送信され、通信路30を介して予め受信されて格納されているものとする。
(2)秘密鍵格納部104
秘密鍵格納部104は、暗号通信装置A10の秘密鍵KSAを格納している。
なお、秘密鍵KSAは、公開鍵KPAと共に暗号通信装置A10に対応付けて、予め与えられている。
(3)KEM暗号文生成部105
KEM暗号文生成部105は、公開鍵KPBと、鍵カプセル化メカニズム(KEM)の公開鍵暗号化アルゴリズムKemEとを用いて、鍵データKA及び鍵データKAに対するKEM暗号文KEMAを生成する。鍵データKA及びKEM暗号文KEMAの生成方法については、上記にて示すPSEC−KEMの暗号化と同様の方法であるので、説明は省略する。
KEM暗号文生成部105は、生成したKEM暗号文KEMAを送受信部102を介して暗号通信装置B20へ送信する。
KEM暗号文生成部105は、生成した鍵データKAを共有鍵生成部107へ出力する。
(4)KEM暗号文復号化部106
KEM暗号文復号化部106は、暗号通信装置B20から送受信部102を介して、KEMにおける公開鍵暗号化アルゴリズムKemEにより鍵データKBが暗号化された暗号文であるKEM暗号文KEMBを受信する。
KEM暗号文復号化部106は、公開鍵暗号化アルゴリズムKemEに対応する公開鍵復号アルゴリズムKemDに対して、秘密鍵KSA及びKEM暗号文KEMBを入力値として与えて、受信したKEM暗号文KEMBを復号化して、鍵データKBを生成する。鍵データKBの復号化方法については、上記にて示すPSEC−KEMの復号化と同様の方法であるので、説明は省略する。
KEM暗号文復号化部106は、生成した鍵データKBを共有鍵生成部107へ出力する。
(5)共有鍵生成部107
共有鍵生成部107は、KEM暗号文生成部105から鍵データKAを、KEM暗号文復号化部106から鍵データKBを、それぞれ受け取る。
共有鍵生成部107は、受け取った鍵データKAとKBを用いて、共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを生成し、生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを共有鍵格納部108に格納する。
以下に共通鍵暗号用共有鍵KS及びMAC用共有鍵KHの生成の具体例を以下に示す。
共有鍵生成部107は、鍵データKAとKBとの排他的論理和(xor)を取り、共有鍵データKを生成する。共有鍵生成部107は、生成した共有鍵データKの一部を共通鍵暗号用共有鍵KSとし、それ以外の部分をMAC用共有鍵KHとする。つまり、共有鍵生成部107は、生成した共有鍵データKに対して、K=KS||KHを満たすように共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを取得すればよい。ここで、||は連結を示す。また、共有データKから共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを取得するための区切り位置は、暗号通信装置B20側と揃っていれば任意の位置でよい。
なお、共有鍵データKの生成方法は、鍵データKAとKBの両方の情報が含まれるものであればよい。例えば、鍵データKAとKBのビットまたはバイト連結したデータK’のハッシュ関数値を共有鍵データKとしてもよい。
(6)共有鍵格納部108
共有鍵格納部108は、共有鍵生成部107で生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを格納するための領域を有している。
(7)チャレンジデータ生成部109
チャレンジデータ生成部109は、乱数であるチャレンジデータnAを生成し、生成したチャレンジデータnAを、送受信部102を介して暗号通信装置B20へ送信する。
チャレンジデータ生成部109は、生成したチャレンジデータnAを一時的に記憶する。
(8)レスポンスデータ生成部110
レスポンスデータ生成部110は、暗号通信装置B20から送受信部102を介して、チャレンジデータnBと、チャレンジデータ生成部109にて送信したチャレンジデータnAに対するレスポンスデータrBを受け取る、または、チャレンジデータnBのみ受け取る。
(チャレンジデータnBとレスポンスデータrBとを受け取った場合)
レスポンスデータ生成部110は、暗号通信装置B20からチャレンジデータnBとレスポンスデータrBとを受け取ると、受け取ったチャレンジデータnBを一時的に記憶する。
レスポンスデータ生成部110は、レスポンスデータrBと、レスポンスデータの検証を指示する旨の検証指示とをレスポンスデータ検証部111へ出力する。
レスポンスデータ生成部110は、レスポンスデータ検証部111からレスポンスデータの生成を指示する旨のレスポンスデータ生成指示を受け取ると、改ざん検出符号(Message Authentication Code, MAC)の生成を指示する旨のMAC生成指示と、一時的に記憶しているチャレンジデータnBとをMAC生成部112へ出力する。
レスポンスデータ生成部110は、MAC生成部112からMAC値HnBを受け取ると、受け取ったMAC値HnBをレスポンスデータrAとして、送受信部102を介して暗号通信装置B20へ送信する。
なお、MAC値HnBについては、MAC生成部112の説明の箇所で後述する。
(チャレンジデータnBのみ受け取った場合)
レスポンスデータ生成部110は、暗号通信装置B20からチャレンジデータnBを受け取ると、MAC生成指示と、受け取ったチャレンジデータnBとをMAC生成部112へ出力する。
レスポンスデータ生成部110は、MAC生成部112からMAC値HnBを受け取ると、受け取ったMAC値HnBをレスポンスデータrAとして、チャレンジデータ生成部109にて生成したチャレンジデータnAとともに、送受信部102を介して暗号通信装置B20へ送信する。
(9)レスポンスデータ検証部111
レスポンスデータ検証部111は、レスポンスデータ生成部110から検証指示と、レスポンスデータrBとを受け取ると、チャレンジデータ生成部109にて一時的に記憶されているチャレンジデータnAを取得する。
レスポンスデータ検証部111は、MAC生成指示と、取得したチャレンジデータnAとをMAC生成部112へ出力する。
レスポンスデータ検証部111は、MAC生成部112からMAC値HnAを受け取ると、MAC値HnAとレスポンスデータrBとが一致するか否かを判断する。
一致すると判断する場合には、レスポンスデータ検証部111は、レスポンスデータ生成指示をレスポンスデータ生成部110へ出力する。
一致しないと判断する場合には、レスポンスデータ生成部110は、暗号通信に係る処理全体を中止する。
レスポンスデータ検証部111は、暗号通信装置B20から送受信部102を介して、レスポンスデータrBを受け取ると、チャレンジデータ生成部109にて一時的に記憶されているチャレンジデータnAを取得し、上記と同様の動作を行い、レスポンスデータrBの検証を行う。
(10)MAC生成部112
MAC生成部112は、鍵付ハッシュ関数Hashを予め記憶している。鍵付ハッシュ関数とは、鍵とデータとが入力として与えられ、鍵に依存する一方向性関数である。本実施の形態で用いる鍵付ハッシュ関数Hashは、MAC用共有鍵KHを用い、且つMAC用共有鍵KHに依存する関数である。鍵付ハッシュ関数の詳細については、非特許文献2の189〜195ページに記載されているので説明を省略する。
MAC生成部112は、MAC対象データに対して、共有鍵格納部108に格納しているMAC用共有鍵KHを使用して、所定のビット長t(tは1以上)からなる改ざん検出符号の値(MAC値)を生成(算出)する。
ここで、MAC対象データDMに対するMAC値を、HDM=Hash(KH,DM)とする。また、Hash(KH,DM)は、MAC用共有鍵KHを用いて鍵付ハッシュ関数Hashで計算したデータDMのハッシュ値を意味する。
MAC生成部112は、レスポンスデータ生成部110からMAC生成指示と、チャレンジデータnBとを受け取ると、共有鍵格納部108に格納しているMAC用共有鍵KHを取得する。MAC生成部112は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、チャレンジデータnBに対するMAC値HnB(=Hash(KH,nB))を算出し、算出したMAC値HnBをレスポンスデータ生成部110へ出力する。
MAC生成部112は、レスポンスデータ検証部111からMAC生成指示と、チャレンジデータnAとを受け取ると、共有鍵格納部108に格納しているMAC用共有鍵KHを取得する。MAC生成部112は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、チャレンジデータnAに対するMAC値HnA(=Hash(KH,nA))を算出し、算出したMAC値HnAをレスポンスデータ検証部111へ出力する。
MAC生成部112は、MAC生成指示と、共通鍵暗号により暗号化し暗号通信装置B20へ送信するデータ(以下、暗号化対象データという。)DAとを、DEM暗号文生成部115から受け取ると、共有鍵格納部108に格納しているMAC用共有鍵KHを取得する。MAC生成部112は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、暗号化対象データDAに対するMAC値HDA(=Hash(KH,DA))を算出し、算出したMAC値HDAをDEM暗号文生成部115へ出力する。
MAC生成部112は、MAC生成指示と、DEM暗号文復号化部116から復号化データDB’とを受け取ると、共有鍵格納部108に格納しているMAC用共有鍵KHを取得する。MAC生成部112は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、復号化データDB’に対するMAC値HDB’(=Hash(KH,DB’))を算出し、算出したMAC値HDB’をDEM暗号文生成部115へ出力する。
復号化データDB’については、共通鍵復号化部114の説明の箇所で後述する。
なお、Hash(KH,DM)は、Hash(KH,DM)=SHA1(KH||DM)としてもよい。ここで、SHA1(x)は、xのSHA1ハッシュ関数値であり、||は連結を示す。
(11)共通鍵暗号化部113
共通鍵暗号化部113は、暗号化対象データDAと、暗号化を指示する旨の暗号化指示とを、DEM暗号文生成部115から受け取ると、共有鍵格納部108に格納している共通鍵暗号用共有鍵KSを取得する。
共通鍵暗号化部113は、取得した共通鍵暗号用共有鍵KSと、共通鍵暗号アルゴリズムとを用いて、暗号化対象データDAを暗号化して、暗号化対象データDAに対する暗号化データEDA(=Enc(KS,DA))を生成する。ここで、Enc(KS,DA)は、鍵KSを用いてデータDAを共通鍵暗号で暗号化した暗号文を意味する。共通鍵暗号は例えばDES暗号やAES暗号である。共通鍵暗号の詳細については、非特許文献2の79〜105ページに記載されているので説明を省略する。
共通鍵暗号化部113は、生成した暗号化データEnc(KS,DA)をDEM暗号文生成部115へ出力する。
(12)共通鍵復号化部114
共通鍵復号化部114は、暗号化対象データDBを共通鍵暗号用共有鍵KSで暗号化した暗号化データEDB(=Enc(KS,DB))と、暗号化データの復号化を指示する旨の復号指示とを、DEM暗号文復号化部116から受け取ると、共有鍵格納部108に格納している共通鍵暗号用共有鍵KSを取得する。
共通鍵復号化部114は、取得した共通鍵暗号用共有鍵KSと、共通鍵復号化アルゴリズムとを用いて、暗号化データEnc(KS,DB)を復号化して、復号化データDB’を生成する。
共通鍵復号化部114は、生成した復号化データDB’をDEM暗号文復号化部116へ出力する。
(13)DEM暗号文生成部115
DEM暗号文生成部115は、外部から入出力部101を介して、暗号化対象データDAを受け取ると、暗号化指示と、受け取った暗号化対象データDAとを、共通鍵暗号化部113へ出力する。
DEM暗号文生成部115は、MAC指示と、受け取った暗号化対象データDAとをMAC生成部112へ出力する。
DEM暗号文生成部115は、暗号化データEDA(=Enc(KS,DA))を共通鍵暗号化部113から受け取り、MAC値HDA(=Hash(KH,DA))をMAC生成部112から受け取ると、これらを連結して、DEM暗号文DEMA(=Enc(KS,DA)||HDA)を生成する。
DEM暗号文生成部115は、生成したDEM暗号文DEMAを、送受信部102を介して暗号通信装置B20へ送信する。
(14)DEM暗号文復号化部116
DEM暗号文復号化部116は、暗号通信装置B20から送受信部102を介して、DEM暗号文DEMB(=EDB||HDB)を受け取る。ここで、EDBは暗号化対象データDBを暗号通信装置B20が有する共通鍵暗号用共有鍵KSにて暗号化した暗号化データ(Enc(KS,DB))であり、HDBは暗号化対象データDBに対するMAC値(Hash(KH,DB))である。
DEM暗号文復号化部116は、受け取ったDEM暗号文DEMB(=EDB||HDB)を暗号化データEDBとMAC値HDBとに分離する。
ここで、分解の一例を示す。DEM暗号文DEMBのビット長をuとすると、上述したように、MAC値HDBのビット長はtであるので、u>tであることが分かる。DEM暗号文復号化部116は、u−tビット長からなるデータをDEM暗号文DEMBの先頭から抽出し、抽出したデータを暗号化データEDBとし、残りtビット長からなるデータをMAC値HDBとする。
DEM暗号文復号化部116は、復号指示と、暗号化データEDB(=Enc(KS,DB))とを共通鍵復号化部114へ出力する。
DEM暗号文復号化部116は、復号化データDB’を共通鍵復号化部114から受け取ると、MAC指示と復号化データDB’とをMAC生成部112へ出力する。
DEM暗号文復号化部116は、MAC値HDB’(=Hash(KH、DB’))を受け取ると、DEM暗号文DEMBから分離したHDBとを比較し、一致するか否かを判断する。
一致すると判断する場合には、DEM暗号文復号化部116は、復号化データDB’、つまり暗号化対象データDBを、入出力部101を介して外部へ出力する。
一致しないと判断する場合には、DEM暗号文復号化部116は、暗号通信に係る処理全体を中止する。
(15)入出力部101
入出力部101は、外部から暗号化対象データDAを受け付け、受け付けた暗号化対象データDAをDEM暗号文生成部115へ出力する。
入出力部101は、DEM暗号文復号化部116から復号化データDB’を受け取ると、受け取った復号化データDB’を外部へ出力する。
(16)送受信部102
送受信部102は、KEM暗号文KEMAをKEM暗号文生成部105から受け取ると、受け取ったKEM暗号文KEMAを、通信路30を介して暗号通信装置B20へ送信する。
送受信部102は、暗号通信装置B20から通信路30を介して、KEM暗号文KEMBを受け取ると、受け取ったKEM暗号文KEMBをKEM暗号文復号化部106へ出力する。
送受信部102は、チャレンジデータnAをチャレンジデータ生成部109から受け取ると、受け取ったチャレンジデータnAを、通信路30を介して暗号通信装置B20へ送信する。
送受信部102は、レスポンスデータrAをレスポンスデータ生成部110から受け取ると、受け取ったレスポンスデータrAを、通信路30を介して暗号通信装置B20へ送信する。
送受信部102は、暗号通信装置B20から通信路30を介して、チャレンジデータnBとレスポンスデータrBとを、若しくはチャレンジデータnBのみを受け取ると、受け取ったチャレンジデータnB及びレスポンスデータrBを、若しくはチャレンジデータnBを、レスポンスデータ生成部110へ出力する。
送受信部102は、暗号通信装置B20から通信路30を介して、レスポンスデータrBを受け取ると、受け取ったレスポンスデータrBをレスポンスデータ検証部111へ出力する。
送受信部102は、DEM暗号文DEMAをDEM暗号文生成部115から受け取ると、受け取ったDEM暗号文DEMAを、通信路30を介して暗号通信装置B20へ送信する。
送受信部102は、暗号通信装置B20から通信路30を介して、DEM暗号文DEMBを受け取ると、受け取ったDEM暗号文DEMBをDEM暗号文復号化部116へ出力する。
1.3 暗号通信装置B20の構成
暗号通信装置B20は、図3に示すように、入出力部201、送受信部202、公開鍵格納部203、秘密鍵格納部204、KEM暗号文生成部205、KEM暗号文復号化部206、共有鍵生成部207、共有鍵格納部208、チャレンジデータ生成部209、レスポンスデータ生成部210、レスポンスデータ検証部211、MAC生成部212、共通鍵暗号化部213、共通鍵復号化部214、DEM暗号文生成部215、及びDEM暗号文復号化部216から構成されている。
(1)公開鍵格納部203
公開鍵格納部203は、暗号通信装置A10の公開鍵KPAを格納している。
なお、公開鍵KPAは、秘密鍵KSAと共に暗号通信装置A10に対応付けて、予め与えられている。また、暗号通信装置B20では、公開鍵KPAは予め外部から与えられて格納されているか、あるいは、暗号通信装置A10から送信され、通信路30を介して予め受信されて格納されているものとする。
(2)秘密鍵格納部204
秘密鍵格納部204は、暗号通信装置B20の秘密鍵KSBを格納している。
なお、秘密鍵KSBは、公開鍵KPBと共に暗号通信装置B20に対応付けて、予め与えられている。
(3)KEM暗号文生成部205
KEM暗号文生成部205は、公開鍵KPAと、鍵カプセル化メカニズム(KEM)の公開鍵暗号化アルゴリズムKemEとを用いて、鍵データKB及び鍵データKBに対するKEM暗号文KEMBを生成する。鍵データKB及びKEM暗号文KEMBの生成方法については、上記にて示すPSEC−KEMの暗号化と同様の方法であるので、説明は省略する。
KEM暗号文生成部205は、生成したKEM暗号文KEMBを送受信部202を介して暗号通信装置A10へ送信する。
KEM暗号文生成部205は、生成した鍵データKBを共有鍵生成部207へ出力する。
(4)KEM暗号文復号化部206
KEM暗号文復号化部206は、暗号通信装置A10から送受信部202を介して、KEM暗号文KEMAを受信する。
KEM暗号文復号化部206は、公開鍵暗号化アルゴリズムKemEに対応する公開鍵復号アルゴリズムKemDに対して、秘密鍵KSB及びKEM暗号文KEMAを入力値として与えて、受信したKEM暗号文KEMAを復号化して、鍵データKAを生成する。鍵データKAの復号化方法については、上記にて示すPSEC−KEMの復号化と同様の方法であるので、説明は省略する。
KEM暗号文復号化部206は、生成した鍵データKAを共有鍵生成部207へ出力する。
(5)共有鍵生成部207
共有鍵生成部207は、KEM暗号文生成部205から鍵データKBを、KEM暗号文復号化部206から鍵データKAを、それぞれ受け取る。
共有鍵生成部207は、受け取った鍵データKAとKBを用いて、共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを生成し、生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを共有鍵格納部208に格納する。
共通鍵暗号用共有鍵KSとMAC用共有鍵KHとの生成には、共有鍵生成部107における生成方法と同一の方法が用いられる。
(6)共有鍵格納部208
共有鍵格納部208は、共有鍵生成部207で生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを格納するための領域を有している。
(7)チャレンジデータ生成部209
チャレンジデータ生成部209は、乱数であるチャレンジデータnBを生成し、生成したチャレンジデータnBを、送受信部202を介して暗号通信装置B20へ送信する。
チャレンジデータ生成部209は、生成したチャレンジデータnBを一時的に記憶する。
(8)レスポンスデータ生成部210
レスポンスデータ生成部210は、暗号通信装置A10から送受信部202を介して、チャレンジデータnAと、チャレンジデータ生成部209にて送信したチャレンジデータnBに対するレスポンスデータrAを受け取る、または、チャレンジデータnAのみ受け取る。
(チャレンジデータnAとレスポンスデータrAとを受け取った場合)
レスポンスデータ生成部210は、暗号通信装置A10からチャレンジデータnAとレスポンスデータrAとを受け取ると、受け取ったチャレンジデータnAを一時的に記憶する。
レスポンスデータ生成部210は、レスポンスデータrAと、レスポンスデータの検証を指示する旨の検証指示とをレスポンスデータ検証部211へ出力する。
レスポンスデータ生成部210は、レスポンスデータ検証部211からレスポンスデータの生成を指示する旨のレスポンスデータ生成指示を受け取ると、MAC生成指示と、一時的に記憶しているチャレンジデータnAとをMAC生成部212へ出力する。
レスポンスデータ生成部210は、MAC生成部212からMAC値HnAを受け取ると、受け取ったMAC値HnAをレスポンスデータrBとして、送受信部202を介して暗号通信装置A10へ送信する。
なお、MAC値HnAについては、MAC生成部212の説明の箇所で後述する。
(チャレンジデータnAのみ受け取った場合)
レスポンスデータ生成部210は、暗号通信装置A10からチャレンジデータnAを受け取ると、MAC生成指示と、受け取ったチャレンジデータnAとをMAC生成部212へ出力する。
レスポンスデータ生成部210は、MAC生成部212からMAC値HnAを受け取ると、受け取ったMAC値HnAをレスポンスデータrBとして、チャレンジデータ生成部209にて生成したチャレンジデータnBとともに、送受信部202を介して暗号通信装置B20へ送信する。
(9)レスポンスデータ検証部211
レスポンスデータ検証部211は、レスポンスデータ生成部210から検証指示と、レスポンスデータrAとを受け取ると、チャレンジデータ生成部209にて一時的に記憶されているチャレンジデータnBを取得する。
レスポンスデータ検証部211は、MAC生成指示と、取得したチャレンジデータnBとをMAC生成部212へ出力する。
レスポンスデータ検証部211は、MAC生成部212からMAC値HnBを受け取ると、MAC値HnBとレスポンスデータrAとが一致するか否かを判断する。
一致すると判断する場合には、レスポンスデータ検証部211は、レスポンスデータ生成指示をレスポンスデータ生成部210へ出力する。
一致しないと判断する場合には、レスポンスデータ生成部210は、暗号通信に係る処理全体を中止する。
レスポンスデータ検証部211は、暗号通信装置A10から送受信部202を介して、レスポンスデータrAを受け取ると、チャレンジデータ生成部209にて一時的に記憶されているチャレンジデータnBを取得し、上記と同様の動作を行い、レスポンスデータrAの検証を行う。
(10)MAC生成部212
MAC生成部212は、鍵付ハッシュ関数Hashを予め記憶している。
MAC生成部112は、MAC対象データDMに対して、共有鍵格納部208に格納しているMAC用共有鍵KHを使用して、所定のビット長t(tは1以上)からなるMAC値HDMを生成(算出)する。なお、MAC生成部212にて生成されるMAC値のビット長は、暗号通信装置A10のMAC生成部112にて生成されるMAC値のビット長と同一である。
MAC生成部212は、レスポンスデータ生成部210からMAC生成指示と、チャレンジデータnAとを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHを取得する。MAC生成部212は、予め記憶している鍵付ハッシュ関数Hashと、取得したKHとを用いて、チャレンジデータnAに対するMAC値HnA(=Hash(KH,nA))を算出し、算出したMAC値HnAをレスポンスデータ生成部210へ出力する。
MAC生成部212は、レスポンスデータ検証部211からMAC生成指示と、チャレンジデータnBとを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHを取得する。MAC生成部212は、予め記憶している鍵付ハッシュ関数Hashと、取得したMAC用共有鍵KHとを用いて、チャレンジデータnBに対するMAC値HnB(=Hash(KH,nB))を算出し、算出したMAC値HnBをレスポンスデータ検証部211へ出力する。
MAC生成部212は、MAC生成指示と、暗号通信装置A10へ暗号化し送信するデータである暗号化対象データDBとを、DEM暗号文生成部215から受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHを取得する。MAC生成部212は、予め記憶している鍵付ハッシュ関数Hashと、取得したMAC用共有鍵KHとを用いて、暗号化対象データDBに対するMAC値HDB(=Hash(KH,DB))を算出し、算出したMAC値HDBをDEM暗号文生成部215へ出力する。
MAC生成部212は、MAC生成指示と、DEM暗号文復号化部216から復号化データDA’とを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHを取得する。MAC生成部212は、予め記憶している鍵付ハッシュ関数Hashと、取得したMAC用共有鍵KHとを用いて、復号化データDA’に対するMAC値HDA’(=Hash(KH,DA’))を算出し、算出したMAC値HDA’をDEM暗号文生成部215へ出力する。
復号化データDA’については、共通鍵復号化部214の説明の箇所で後述する。
(11)共通鍵暗号化部213
共通鍵暗号化部213は、暗号化対象データDBと、暗号化を指示する旨の暗号化指示とを、DEM暗号文生成部215から受け取ると、共有鍵格納部208に格納している共通鍵暗号用共有鍵KSを取得する。
共通鍵暗号化部213は、取得した共通鍵暗号用共有鍵KSと、共通鍵暗号アルゴリズムとを用いて、暗号化対象データDBを暗号化して、暗号化対象データDBに対する暗号化データEDB(=Enc(KS,DB))を生成する。ここで、Enc(KS,DB)は、鍵KSを用いてデータDBを共通鍵暗号で暗号化した暗号文を意味する。共通鍵暗号は例えばDES暗号やAES暗号である。共通鍵暗号については、非特許文献2の79〜105ページに記載されている。
共通鍵暗号化部213は、生成した暗号化データEnc(KS,DB)をDEM暗号文生成部215へ出力する。
(12)共通鍵復号化部214
共通鍵復号化部214は、暗号化対象データDAを共通鍵暗号用共有鍵KSで暗号化した暗号化データEDA(=Enc(KS,DA))と、暗号化データの復号化を指示する旨の復号指示とを、DEM暗号文復号化部216から受け取ると、共有鍵格納部208に格納している共通鍵暗号用共有鍵KSを取得する。
共通鍵復号化部214は、取得した共通鍵暗号用共有鍵KSと、共通鍵復号化アルゴリズムとを用いて、暗号化データEnc(KS,DA)を復号化して、復号化データDA’を生成する。
共通鍵復号化部214は、生成した復号化データDA’をDEM暗号文復号化部216へ出力する。
(13)DEM暗号文生成部215
DEM暗号文生成部215は、外部から入出力部201を介して、暗号化対象データDBを受け取ると、暗号化指示と、受け取った暗号化対象データDBとを、共通鍵暗号化部213へ出力する。
DEM暗号文生成部215は、MAC指示と、受け取った暗号化対象データDBとをMAC生成部212へ出力する。
DEM暗号文生成部215は、暗号化データEDB(=Enc(KS,DB))を共通鍵暗号化部213から受け取り、MAC値HDB(=Hash(KH,DB))をMAC生成部212から受け取ると、これらを連結して、DEM暗号文DEMB(=Enc(KS,DB)||HDB)を生成する。
DEM暗号文生成部215は、生成したDEM暗号文DEMBを、送受信部202を介して暗号通信装置A10へ送信する。
(14)DEM暗号文復号化部216
DEM暗号文復号化部216は、暗号通信装置A10から送受信部202を介して、DEM暗号文DEMA(=EDA||HDA)を受け取る。ここで、EDAは暗号化対象データDAを暗号通信装置A10が有する共通鍵暗号用共有鍵KSにて暗号化された暗号化データ(Enc(KS,DA))であり、HDAは暗号化対象データDAに対するMAC値(Hash(KH,DA))である。
DEM暗号文復号化部216は、受け取ったDEM暗号文DEMA(=EDA||HDA)を暗号化データEDAとMAC値HDAとに分離する。なお、DEM暗号文復号化部216は、上記にて示すDEM暗号文復号化部116の分解の方法と同一の方法でDEM暗号文DEMAの分解を行う。
DEM暗号文復号化部216は、復号指示と、暗号化データEDA(=Enc(KS,DA))とを共通鍵復号化部214へ出力する。
DEM暗号文復号化部216は、復号化データDA’を共通鍵復号化部214から受け取ると、MAC指示と復号化データDA’とをMAC生成部212へ出力する。
DEM暗号文復号化部216は、MAC値HDA’(=Hash(KH、DB’))を受け取ると、DEM暗号文DEMAから分離したHDAとを比較し、一致するか否かを判断する。
一致すると判断する場合には、DEM暗号文復号化部216は、復号化データDA’、つまり暗号化対象データDAを、入出力部201を介して外部へ出力する。
一致しないと判断する場合には、DEM暗号文復号化部216は、暗号通信に係る処理全体を中止する。
(15)入出力部201
入出力部201は、外部から暗号化対象データDBを受け付け、受け付けた暗号化対象データDBをDEM暗号文生成部215へ出力する。
入出力部201は、DEM暗号文復号化部216から復号化データDA’を受け取ると、受け取った復号化データDA’を外部へ出力する。
(16)送受信部202
送受信部202は、KEM暗号文KEMBをKEM暗号文生成部205から受け取ると、受け取ったKEM暗号文KEMAを、通信路30を介して暗号通信装置A10へ送信する。
送受信部202は、暗号通信装置A10から通信路30を介して、KEM暗号文KEMAを受け取ると、受け取ったKEM暗号文KEMAをKEM暗号文復号化部206へ出力する。
送受信部202は、チャレンジデータnBをチャレンジデータ生成部209から受け取ると、受け取ったチャレンジデータnBを、通信路30を介して暗号通信装置A10へ送信する。
送受信部202は、レスポンスデータrBをレスポンスデータ生成部210から受け取ると、受け取ったレスポンスデータrBを、通信路30を介して暗号通信装置A10へ送信する。
送受信部202は、暗号通信装置A10から通信路30を介して、チャレンジデータnAとレスポンスデータrAとを、若しくはチャレンジデータnAのみを受け取ると、受け取ったチャレンジデータnA及びレスポンスデータrAを、若しくはチャレンジデータnAを、レスポンスデータ生成部210へ出力する。
送受信部202は、暗号通信装置A10から通信路30を介して、レスポンスデータrAを受け取ると、受け取ったレスポンスデータrAをレスポンスデータ検証部211へ出力する。
送受信部202は、DEM暗号文DEMBをDEM暗号文生成部215から受け取ると、受け取ったDEM暗号文DEMBを、通信路30を介して暗号通信装置A10へ送信する。
送受信部202は、暗号通信装置A10から通信路30を介して、DEM暗号文DEMAを受け取ると、受け取ったDEM暗号文DEMAをDEM暗号文復号化部216へ出力する。
1.4 暗号通信システム1の動作
(1)動作概要
暗号通信システム1の動作は、大きく分けて、暗号通信装置A10と暗号通信装置B20が鍵を共有する鍵共有フェーズ、共有した鍵を使用して相互で認証するチャレンジ・レスポンス認証フェーズ、共有した鍵を使用してデータを送受信するデータ暗号通信フェーズからなる。
鍵共有フェーズでは、KEMを用いて暗号通信装置A10と暗号通信装置B20とが相互認証及び鍵配送を行い、互いの装置にて鍵を共有する。
チャレンジ・レスポンス認証フェーズでは、共有した鍵を用いてチャレンジ・レスポンス認証を行うことにより、暗号通信装置A10と暗号通信装置B20のそれぞれが、お互いの送信相手がなりすまし攻撃を行っていないことを確認する。
データ暗号通信フェーズでは、共有した鍵を用いて暗号通信装置A10と暗号通信装置B20との間で通信路30を介して暗号したデータの送受信を行う。
ここで、データとは、例えば、テキストデータ、音楽データ、画像データ、映画コンテンツデータである。
(2)動作
以下、暗号通信システム1の動作について、図4から図7にて示す流れ図を用いて説明する。
暗号通信装置A10のKEM暗号文生成部105は、公開鍵KPBと、KEMの公開鍵暗号化アルゴリズムKemEとを用いて、鍵データKA及び鍵データKAに対するKEM暗号文KEMAを生成する(ステップS5)。
KEM暗号文生成部105は、生成したKEM暗号文KEMAを暗号通信装置B20へ送信する(ステップS10)。
暗号通信装置B20のKEM暗号文復号化部206は、暗号通信装置A10から送受信部202を介して、KEM暗号文KEMAを受信する(ステップS15)。
KEM暗号文復号化部206は、公開鍵暗号化アルゴリズムKemEに対応する公開鍵復号アルゴリズムKemD、及び秘密鍵KSBを用いて、受信したKEM暗号文KEMAを復号化して、鍵データKAを生成する(ステップS20)。
暗号通信装置B20のKEM暗号文生成部205は、公開鍵KPAと、KEMの公開鍵暗号化アルゴリズムKemEとを用いて、鍵データKB及び鍵データKBに対するKEM暗号文KEMBを生成する(ステップS25)。
KEM暗号文生成部205は、生成したKEM暗号文KEMBを暗号通信装置A10へ送信する(ステップS30)。
暗号通信装置B20の共有鍵生成部207は、KEM暗号文生成部205にて生成された鍵データKBと、KEM暗号文復号化部206にて生成された鍵データKAとを用いて、共有鍵K(=KA xor KB)を生成する(ステップS35)。
共有鍵生成部207は、生成した共有鍵Kから共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを生成し(K=KS||KH)、生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを共有鍵格納部208に格納する(ステップS40)。
暗号通信装置A10のKEM暗号文復号化部106は、暗号通信装置B20から送受信部102を介して、KEM暗号文KEMBを受信する(ステップS45)。
KEM暗号文復号化部106は、公開鍵復号アルゴリズムKemD、及び秘密鍵KSAを用いて、受信したKEM暗号文KEMBを復号化して、鍵データKBを生成する(ステップS50)。
暗号通信装置A10の共有鍵生成部107は、KEM暗号文生成部105にて生成された鍵データKAと、KEM暗号文復号化部106にて生成された鍵データKBとを用いて、共有鍵K(=KA xor KB)を生成する(ステップS55)。
共有鍵生成部107は、生成した共有鍵Kを用いて、共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを生成し(K=KS||KH)、生成した共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを共有鍵格納部108に格納する(ステップS60)。
暗号通信装置A10のチャレンジデータ生成部109は、チャレンジデータnAを生成し(ステップS65)、生成したチャレンジデータnAを暗号通信装置B20へ送信する(ステップS70)。
暗号通信装置B20のレスポンスデータ生成部210は、暗号通信装置A10からチャレンジデータnAを受け取る(ステップS75)。
暗号通信装置B20のMAC生成部212は、共有鍵格納部208に格納しているMAC用共有鍵KHと、予め記憶している鍵付ハッシュ関数Hashとを用いて、チャレンジデータnAに対するMAC値HnA(=Hash(KH,nA))を算出し、算出したMAC値HnAをレスポンスデータrBとする(ステップS80)。
暗号通信装置B20のチャレンジデータ生成部209は、チャレンジデータnBを生成する(ステップS85)。
チャレンジデータ生成部209はチャレンジデータnBを、レスポンスデータ生成部210はレスポンスデータrBを、それぞれ暗号通信装置A10へ送信する(ステップS90)。
暗号通信装置A10のレスポンスデータ生成部110は、暗号通信装置B20からチャレンジデータnBとレスポンスデータrBとを受け取る(ステップS95)。
レスポンスデータ生成部110は、レスポンスデータrBと検証指示とをレスポンスデータ検証部111へ出力する。レスポンスデータ検証部111は、レスポンスデータ生成部110から検証指示とレスポンスデータrBとを受け取ると、チャレンジデータ生成部109にて一時的に記憶されているチャレンジデータnAを取得する。レスポンスデータ検証部111は、MAC生成指示と、取得したチャレンジデータnAとをMAC生成部112へ出力する。MAC生成部112は、共有鍵格納部108に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、チャレンジデータnAに対するMAC値HnAを算出し、算出したMAC値HnAをレスポンスデータ検証部111へ出力する。レスポンスデータ検証部111は、MAC生成部112からMAC値HnAを受け取ると、MAC値HnAとレスポンスデータrBとが一致するか否かを判断する(ステップS100)。
一致しないと判断する場合には(ステップS100における「NG」)、暗号通信に係る処理は中止される。
一致すると判断する場合には(ステップS100における「OK」)、レスポンスデータ検証部111は、レスポンスデータ生成指示をレスポンスデータ生成部110へ出力する。レスポンスデータ生成部110は、レスポンスデータ検証部111からレスポンスデータ生成指示を受け取ると、MAC生成指示と、一時的に記憶しているチャレンジデータnBとをMAC生成部112へ出力する。MAC生成部112は、レスポンスデータ検証部111からMAC生成指示と、チャレンジデータnBとを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、チャレンジデータnBに対するMAC値HnB(=Hash(KH,nB))を算出し、算出したMAC値HnBをレスポンスデータrAとする(ステップS105)。
レスポンスデータ生成部110は、レスポンスデータrAを暗号通信装置B20へ送信する(ステップS110)。
暗号通信装置B20のレスポンスデータ検証部211は、暗号通信装置A10からレスポンスデータrAを受け取る(ステップS115)。
レスポンスデータ検証部211は、チャレンジデータ生成部209にて一時的に記憶されているチャレンジデータnBを取得する。レスポンスデータ検証部211は、MAC生成指示と、取得したチャレンジデータnBとをMAC生成部212へ出力する。MAC生成部212は、レスポンスデータ検証部211からMAC生成指示と、チャレンジデータnBとを受け取ると、共有鍵格納部208に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、チャレンジデータnBに対するMAC値HnBを算出し、算出したMAC値HnBをレスポンスデータ検証部211へ出力する。レスポンスデータ検証部211は、MAC生成部212からMAC値HnBを受け取ると、MAC値HnBとレスポンスデータrAとが一致するか否かを判断する(ステップS120)。
一致しないと判断する場合には(ステップS120における「NG」)、暗号通信に係る処理は中止される。
一致すると判断する場合には(ステップS120における「OK」)、暗号通信に係る処理は続行される。
暗号通信装置A10のDEM暗号文生成部115は、外部から入出力部101を介して、暗号化対象データDAを受け取る(ステップS125)。
暗号通信装置A10の共通鍵暗号化部113は、共有鍵格納部108に格納している共通鍵暗号用共有鍵KSと、共通鍵暗号アルゴリズムとを用いて、DEM暗号文生成部115が受け取った暗号化対象データDAを暗号化して、暗号化対象データDAに対する暗号化データEDA(=Enc(KS,DA))を生成する(ステップS130)。
暗号通信装置A10のMAC生成部112は、共有鍵格納部108に格納しているMAC用共有鍵KHと鍵付ハッシュ関数Hashとを用いて、DEM暗号文生成部115が受け取った暗号化対象データDAに対するMAC値HDA(=Hash(KH,DA))を算出する(ステップS135)。
DEM暗号文生成部115は、共通鍵暗号化部113にて生成された暗号化データEDAと、MAC生成部112にて算出されたMAC値HDAとを連結して、DEM暗号文DEMA(=Enc(KS,DA)||HDA)を生成する(ステップS140)。
DEM暗号文生成部115は、生成したDEM暗号文DEMAを、暗号通信装置B20へ送信する(ステップS145)。
暗号通信装置B20のDEM暗号文復号化部216は、暗号通信装置A10からDEM暗号文DEMAを受け取る(ステップS150)。
DEM暗号文復号化部216は、受け取ったDEM暗号文DEMAを暗号化データEDAとMAC値HDAとに分離する(ステップS155)。
暗号通信装置B20の共通鍵復号化部214は、共有鍵格納部208に格納している共通鍵暗号用共有鍵KSと、共通鍵復号化アルゴリズムとを用いて、DEM暗号文復号化部216が取得した暗号化データEDAを復号化して、復号化データDA’を生成する(ステップS160)。
暗号通信装置B20のMAC生成部212は、共有鍵格納部208に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、共通鍵復号化部214にて生成された復号化データDA’に対するMAC値HDA’(=Hash(KH,DA’))を算出する(ステップS165)。
DEM暗号文復号化部216は、MAC生成部212にて算出されたMAC値HDA’(=Hash(KH、DB’))と、DEM暗号文DEMAから分離したHDAとを比較し、一致するか否かを判断する(ステップS170)。
一致しないと判断する場合には(ステップS170における「NG」)、暗号通信に係る処理は中止される。
一致すると判断する場合には(ステップS170における「OK」)、DEM暗号文復号化部216は、復号化データDA’、つまり暗号化対象データDAを、入出力部201を介して外部へ出力する(ステップS175)。
暗号通信装置B20のDEM暗号文生成部215は、外部から入出力部201を介して、暗号化対象データDBを受け取る(ステップS180)。
暗号通信装置B20の共通鍵暗号化部213は、共有鍵格納部208に格納している共通鍵暗号用共有鍵KSと、共通鍵暗号アルゴリズムとを用いて、DEM暗号文生成部215が受け取った暗号化対象データDBを暗号化して、暗号化対象データDBに対する暗号化データEDB(=Enc(KS,DA))を生成する(ステップS185)。
暗号通信装置B20のMAC生成部212は、共有鍵格納部208に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、DEM暗号文生成部215が受け取った暗号化対象データDBに対するMAC値HDB(=Hash(KH,DB))を算出する(ステップS190)。
DEM暗号文生成部215は、共通鍵暗号化部213にて生成された暗号化データEDBと、MAC生成部212にて算出されたMAC値HDBとを連結して、DEM暗号文DEMB(=Enc(KS,DB)||HDB)を生成する(ステップS195)。
DEM暗号文生成部215は、生成したDEM暗号文DEMBを暗号通信装置A10へ送信する(ステップS200)。
暗号通信装置A10のDEM暗号文復号化部116は、暗号通信装置B20からDEM暗号文DEMBを受け取る(ステップS205)。
DEM暗号文復号化部116は、受け取ったDEM暗号文DEMB(=EDB||HDB)を暗号化データEDBとMAC値HDBとに分離する(ステップS210)。
暗号通信装置A10の共通鍵復号化部114は、共有鍵格納部108に格納している共通鍵暗号用共有鍵KSと共通鍵復号化アルゴリズムとを用いて、DEM暗号文復号化部116が取得した暗号化データEDBを復号化して、復号化データDB’を生成する(ステップS215)。
暗号通信装置A10のMAC生成部112は、共有鍵格納部108に格納しているMAC用共有鍵KHと、鍵付ハッシュ関数Hashとを用いて、共通鍵復号化部114にて生成された復号化データDB’に対するMAC値HDB’(=Hash(KH,DB’))を算出する(ステップS220)。
DEM暗号文復号化部116は、MAC生成部112にて算出されたMAC値HDB’と、DEM暗号文DEMBから分離したHDBとを比較し、一致するか否かを判断する(ステップS225)。
一致しないと判断する場合には(ステップS225における「NG」)、暗号通信に係る処理は中止される。
一致すると判断する場合には(ステップS230における「OK」)、DEM暗号文復号化部116は、復号化データDB’、つまり暗号化対象データDBを、入出力部101を介して外部へ出力する(ステップS230)。
ここで、鍵共有フェーズはステップS5からステップS60までの処理に、チャレンジ・レスポンス認証フェーズはステップS65からステップS120までの処理に、データ暗号通信フェーズはステップS125からステップS230までの処理に、それぞれ相当する。
1.5 第1の実施の形態の効果
第1の実施の形態では、鍵カプセル化メカニズム(KEM)と、DEM暗号文を送信する処理に、MAC用共有鍵を用いたチャレンジ・レスポンス認証を実行する処理を追加することで、共有鍵の漏洩の困難性だけでなく、なりすまし攻撃に対する安全性を保証できる。
以下に、それを詳細に説明する。
鍵カプセル化メカニズムで共有した鍵を用いて、データに対して、暗号化した暗号化データとそのデータに対する鍵付ハッシュ関数値を送信するような方式であれば、データ暗号化方法として、困難な数学上の問題を根拠にして共有鍵の漏洩や暗号文データに対する平文データの漏洩に関する安全性証明を可能であることが保証されている。
なお、これについては、著者Victor Shoupにより“A proposal for an ISO standard for public key encryption (version 2.1)”に記載されているので、ここでの説明は省略する。
本方式は、同様に、鍵カプセル化メカニズムで共有した鍵を用いて、データに対して、暗号化した暗号化データとそのデータに対する鍵付ハッシュ値を送信しているため、同様の安全性が保証できる。
また、暗号通信装置A10において、正しい秘密鍵KSAを保持していなければ、KEM暗号文KEMBを復号化して鍵データKBを取得できないため、暗号通信装置B20と共有した共通鍵暗号用共有鍵KS及びMAC用共有鍵KHを得られない。そのため、ステップS215にて暗号データEDBの復号化ができない。また、暗号通信装置B20も同様に、正しい秘密鍵KSBを保持していなければ、KEM暗号文KEMAを復号化して鍵データKAを取得できないため、暗号通信装置A10と共有した共通鍵暗号用共有鍵KS及びMAC用共有鍵KHを得られない。そのため、ステップS160にて暗号化データEDAの復号化ができない。鍵データKAまたは、鍵データKBを正しく取得するためには、正しい秘密鍵KSAまたは、KSBが必要である。
したがって、両方の機器からKEM暗号文KEMB、KEMAを送りあうことにより、双方向の認証が実現できている。
さらに、第1の実施の形態では、MAC用共有鍵KHを用いたチャレンジ・レスポンス認証を実行している。正しい暗号通信装置であると判定されるためには、正しいレスポンスデータを送信する必要がある。第1の実施の形態では、レスポンスデータを生成するために、DEM暗号文生成部で使用するMAC生成部を使用する。DEM暗号文生成部で使用するMAC生成部では、MAC用共有鍵KHを知らない限り、正しいレスポンスデータを生成できる確率は非常に低い。
したがって、正しいレスポンスデータを生成できる場合、すなわち、認証を通過してなりすまし攻撃が可能である場合、攻撃者はMAC用共有鍵KHを知っていることになる。しかし、MAC用共有鍵KHに限らず、KEMを用いて生成した各共有鍵の漏洩は困難(共有鍵の漏洩に対して安全)であることが証明可能であるため、なりすまし攻撃が困難であることが証明可能となる。
以上より、鍵漏洩や平文漏洩の安全性だけでなく、なりすまし攻撃に対する安全性を保証できる認証鍵共有を実現でき、その価値は大きい。
1.6 暗号通信システム1の変形例
上記実施の形態では、暗号通信システム1は2台の暗号通信装置から構成されるとしたが、これに限定されない。
本発明における暗号通信システムは、1台のコンピュータ装置内において、耐タンパ性を有する領域Aと他の領域Bとにおいてデータを送受信(入出力)する際に暗号通信を行う2つのプログラムからなるとしてもよい。これら2つのプログラムは、コンピュータ装置によって実行され、実行された2つのプログラム間で、本発明の暗号通信が行われる。
ここで、暗号通信を行う2つのプログラムをプログラムA及びBとし、プログラムAは領域Aに存在し、プログラムBは領域Bに存在するものとする。
プログラムA及びプログラムBのそれぞれは、入出力ステップ、送受信部ステップ、KEM暗号文生成ステップ、KEM暗号文復号化ステップ、共有鍵生成ステップ、チャレンジデータ生成ステップ、レスポンスデータ生成ステップ、レスポンスデータ検証ステップ、MAC生成ステップ、共通鍵暗号化ステップ、共有鍵復号化ステップ、DEM暗号文生成ステップ、及びDEM暗号文復号化ステップを含んでいる。
また、領域A及びBは、上記にて示す暗号通信装置と同様に、通信相手の公開鍵を格納している公開鍵格納部、自身の秘密鍵を格納している秘密鍵格納部、及び共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを格納する領域を有している共有鍵格納部を有している。ここで、領域Aにおける各格納部の内容は、領域Aが耐タンパ性を有しているので外部へは漏洩されないようになっているが、領域Bにおける各格納部の内容についても外部へは漏洩されない仕組み(例えば、耐タンパ性)になっているものとする。
各ステップが上記の実施の形態にて示す各構成要素と同様の動作を行うことで、上記と同様に、鍵共有フェーズ、チャレンジ・レスポンス認証フェーズ及びデータ暗号通信フェーズが実現されるので、各ステップの動作についての説明は省略する。
なお、ここでは、本発明を2つのプログラム間における暗号通信に適用したが、これに限定されない。
本発明は、暗号通信装置とプログラムとの間における暗号通信に適用してもよい。具体的には、暗号通信装置をDVD装置とし、プログラムがDVDに記録されているとした場合における暗号通信に適用してもよい。なお、プログラムは、DVD装置内における実行手段にて実行され、DVD装置に具備された構成要素(例えば、暗号通信装置A10と同様の構成要素)と、実行されたプログラム間で、本発明の暗号通信が行われる。
1.7 その他の変形例
上記に説明した実施の形態は、本発明の実施の一例であり、本発明はこの実施の形態に何ら限定されるものではなく、その旨を逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
(1)上記の実施の形態において、暗号通信装置A10及び暗号通信装置B20のそれぞれからデータを送受信したが、これに限定されない。
1の暗号通信装置(例えば、暗号通信装置A10)のみがデータを送信し、他の暗号通信装置(例えば、暗号通信装置B20)のみがデータを受信としてもよい。
(2)上記の実施の形態において、鍵共有フェーズとチャレンジ・レスポンス認証フェーズの間や、チャレンジ・レスポンス認証フェーズとデータ暗号通信フェーズの間には、その他の何らかの処理、例えば、機器の機能(音楽視聴機能、映画視聴機能や放送受信機能など)の確認処理が途中に含まれてもよい。また、各フェーズの内部の処理ステップの順番は、上記で示したものに限らない。
(3)上記の実施の形態において、チャレンジ・レスポンス認証フェーズでは、各暗号通信装置は、ランダムに生成したチャレンジデータを通信相手の装置へ送信しているが、これに限定されない。
各暗号通信装置は、通信相手からのKEM暗号文から求められる鍵データ(暗号通信装置A10であれば鍵データKB、暗号通信装置B20であれば鍵データKA)をチャレンジデータとしてもよい。
そうすることで、チャレンジデータを送信する処理を削減できる。この時、相手先では、自身が生成した鍵データとチャレンジデータとして送信された鍵データとが一致するか否かを確認することでチャレンジ・レスポンス認証フェーズと同様の認証が行える。
例えば、暗号通信装置A10は、暗号通信装置B20からチャレンジデータrB(=Hash(KH,KA))を受け取ると、自身が生成したKAに対するMAC値を算出し、算出したMAC値とチャレンジデータrBとが一致するか否かを判断することにより、通信相手の認証を行う。
また、暗号通信装置B20は、暗号通信装置A10からチャレンジデータrA(=Hash(KH,KB))を受け取ると、自身が生成したKBに対するMAC値を算出し、算出したMAC値とチャレンジデータrAとが一致するか否かを判断することにより、通信相手の認証を行う。
(4)上記実施の形態において、各暗号通信装置の共有鍵生成部は、共有鍵Kを生成し、生成した共有鍵Kの一部を共通鍵暗号用共有鍵KSとし、それ以外の部分をMAC用共有鍵KHとしたが、これに限定されない。
各暗号通信装置の共有鍵生成部は、生成した共有鍵Kそのものを、共通鍵暗号用共有鍵KS及びMAC用共有鍵KHとしてもよい。つまり、K=KS=KHである。
(5)上記の実施の形態において、各暗号通信装置の共有鍵生成部は、共有鍵Kを生成する際に鍵KAと鍵KBの排他的論理和を用いて生成したが、これに限定されない。
共有鍵生成部は、MAC生成部で使用しているハッシュ関数Hashを使用して、共有鍵Kを生成してもよい。
例えば、各暗号通信装置の共有鍵生成部は、Hash(KA,KB)を共有鍵Kとしてもよいし、Hash(KB,KA)を共有鍵Kとしてもよい。
また、ハッシュ関数Hashを上記実施の形態にて示すSHA1とする場合、各暗号通信装置の共有鍵生成部は、SHA1(KA||KB)を共有鍵Kとしてもよいし、SHA1(KB||KA)を共有鍵Kとしてもよい。
これにより、共有鍵生成における安全性が向上する。
(6)上記の実施の形態において、各暗号通信装置は、通信相手の公開鍵を予め、公開鍵格納部に格納しているが、これに限定されない。
暗号通信装置は、証明書センタが発行した公開鍵証明書(公開鍵に対する証明書センタの署名と、公開鍵そのものとを含む)を、通信相手に送信するとしてもよい。例えば、暗号通信装置A10は通信相手である暗号通信装置B20から公開鍵KPBに対する公開鍵証明書を受け取り、暗号通信装置B20は通信相手である暗号通信装置A10から公開鍵KPAに対する公開鍵証明書を受け取る。
その場合、通信相手である暗号通信装置は、証明書センタの公開鍵を有しており、鍵共有フェーズの前に、互いの公開鍵証明書を証明書センタの公開鍵を用いて検証し、正しい証明書と判定したときに公開鍵格納部に、公開鍵証明書に含まれる公開鍵を格納する。
また、各暗号通信装置は、公開鍵証明書を証明書センタから受け取るとしてもよい。
(7)上記の実施の形態において、チャレンジ・レスポンス認証を行う際に、鍵付ハッシュ値を計算する方法を用いたが、これに限定されない。
例えば、チャレンジデータをMAC用共有鍵KHで暗号化して生成したレスポンスデータをやりとりするとしてもよい。
この場合における検証は、レスポンスデータの暗号化を解いた結果と送信元が保持しているチャレンジデータとを比較してもよいし、送信元が保持しているチャレンジデータを同様の方法で暗号化した結果とレスポンスデータとを比較してもよい。
また、認証方法もチャレンジ・レスポンスに限定されるものではない。KEMにより共有した鍵データが認証結果に影響するような認証方法であれば、どのようなものでも構わない。
また、チャレンジ・レスポンス認証においても、上記実施の形態にて示す認証方法に限定されない。上記にて示す方法とは異なる方法によるチャレンジ・レスポンス認証であってもよい。
以下、その一例について説明する。なお、ここでは、暗号通信装置A10が暗号通信装置B20を認証する場合について、図5にて示すステップS65からS100までの変更点を中心に説明する。
暗号通信装置A10はステップS65を実行後、生成したチャレンジデータnAを暗号通信装置A10が有するMAC用共有鍵KHにて暗号化して暗号化データEnc(KH,nA)を生成する。
暗号通信装置A10は、ステップS70において、生成した暗号化データEnc(KH,nA)を暗号化通信装置B20へ送信する。
暗号通信装置B20は、ステップS75にて、暗号化データEnc(KH,nA)を受信する。
暗号通信装置B20は、ステップS80にて、受信した暗号化データEnc(KH,nA)を自身が有するMAC用共有鍵KHにて復号し、復号データnA’を生成し、生成した復号データnA’をレスポンスデータrB(=nA’)とする。
暗号通信装置B20は、ステップS85、S90を実行する。
暗号化通信装置A10は、ステップS95の実行後、受け取ったレスポンスデータと、自身が記憶しているチャレンジデータnAを比較して暗号通信装置B20の正当性を判断する。
なお、ステップS85において、暗号通信装置B20は、生成したチャレンジデータnBを暗号通信装置B20が有するMAC用共有鍵KHにて暗号化して暗号化データEnc(KH,nB)を生成してもよい。このとき、暗号通信装置A10は、ステップS105にて、受信した暗号化データEnc(KH,nB)を自身が有するMAC用共有鍵KHにて復号し、復号データnB’を生成し、生成した復号データnB’をレスポンスデータrA(=nB’)とする。
(8)上記の実施の形態において、双方向でチャレンジ・レスポンス認証を行っているが、これに限定されない。
片方向のチャレンジ・レスポンス認証であってもよい。その場合においても、被認証者のなりすまし攻撃に対する安全性証明が可能である。
なお、この場合には、MAC用共有鍵KHを作成する必要はなく、鍵データKAや鍵データKBを直接用いて認証を行うとしてもよい。つまり、片方向の認証であるので、KEM暗号文の受信先が正しい秘密鍵を持っていれば、鍵データKA若しくは鍵データKBを取得できるので、取得した鍵データを用いて認証を行えばよい。
この場合、例えば、鍵データKAを共有した場合に、暗号通信装置B20から暗号通信装置A10へ片方向認証を行うことにより、簡易な相互認証を行うこともできる。すなわち、鍵データを共有できていることから、暗号通信装置B20は正当な秘密鍵KSBを持っていることが確認できるので、暗号通信装置B20が正当なものであることが確認できる。その後、チャレンジ・レスポンス認証によって、暗号通信装置A10が鍵データKAを共有している装置であるか否かが確認されるので、暗号通信装置A10の正当性を確認できる。
また、MAC用共有鍵KHを生成した上で、これを用いて片方向の認証を行ってもよいし、上記の場合でも暗号通信装置A10から暗号通信装置B20への片方向認証を行ってもよいことは言うまでもない。
(9)上記の実施の形態において、暗号通信装置B20はIC機能付のメモリカードであるとしてもよい。
IC機能付のメモリカードの構成は、暗号通信装置B20と同様の構成要素で実現できるので、ここでの説明は省略する。
なお、本発明において、IC機能付のメモリカードは、暗号通信装置の概念に含めるものとする。つまり、本発明は、2つのIC機能付のメモリカード間における暗号通信に適用してもよいし、上記にて示す暗号通信装置A10とIC機能付のメモリカード間における暗号通信に適用してもよい。
(10)上記の実施の形態において、共有鍵生成部107及び207は、共有鍵データKに対してK=KS||KHを満たすように共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを取得するとしたが、これに限定されない。
共有鍵生成部107及び207は、共有鍵データKに対してK=KH||KSを満たすように共通鍵暗号用共有鍵KSとMAC用共有鍵KHとを取得してもよい。
例えば、共有鍵データKに対して別々の変換を施して得られる2つの値をそれぞれ共通鍵暗号用共有鍵KSとMAC用共有鍵KHとしてもよい。
つまり、共通鍵暗号用共有鍵KSとMAC用共有鍵KHのそれぞれは、共有鍵データKに依存して決まる値であればよい。
(11)上記実施の形態において、暗号通信装置B20は、レスポンスデータrBとチャレンジデータnBとを一緒に、暗号通信装置A10へ送信したが、これに限定されない。
レスポンスデータrBとチャレンジデータnBとを別々のタイミングで暗号通信装置A10へ送信してもよい。この場合、暗号通信装置A10は、レスポンスデータrBとチャレンジデータnBとを別々のタイミングで受信してもよい。
(12)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(13)上記の各装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全てを含むように1チップ化されてもよい。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(14)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(15)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
(16)また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。
(17)また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
(18)また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
(19)また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(20)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
1.8 まとめ
(1)本発明は、第1の暗号通信装置と第2の暗号通信装置を備え、前記第1の暗号通信装置と前記第2の暗号通信装置との間で鍵配送を行い、共有した鍵を用いて前記第1の暗号通信装置から前記第2の暗号通信装置へコンテンツデータを送信する暗号通信システムであって、前記第1の暗号通信装置は、前記コンテンツデータの入力を受け付ける入力部と、前記第2の暗号通信装置へデータを送信し、前記第2の暗号通信装置からデータ受信する第1の送受信部と、第1の鍵と第1の鍵を暗号化した第1の鍵暗号文を生成する第1の鍵暗号文生成部と、第2の鍵暗号文を復号化して第1の復号化鍵を生成する第1の鍵暗号文復号化部と、前記第1の鍵と前記第1の復号化鍵に基づき第1の共有鍵を生成する第1の共有鍵生成部と、前記第1の共有鍵を格納する第1の共有鍵格納部と、第1のチャレンジデータを生成する第1のチャレンジデータ生成部と、第2のチャレンジデータに対する第1のレスポンスデータを生成する第1のレスポンスデータ生成部と、第2のレスポンスデータを検証する第1のレスポンスデータ検証部と、前記コンテンツデータを暗号化して暗号化コンテンツデータを生成するデータ暗号文生成部とを備え、前記第2の暗号通信装置は、復号化コンテンツデータを出力する出力部と、前記第1の暗号通信装置へデータを送信し、前記第1の暗号通信装置からデータ受信する第2の送受信部と、第2の鍵と第2の鍵を暗号化した前記第2の鍵暗号文を生成する第2の鍵暗号文生成部と、前記第1の鍵暗号文を復号化して第2の復号化鍵を生成する第2の鍵暗号文復号化部と、前記第2の鍵と前記第2の復号化鍵に基づき第2の共有鍵を生成する第2の共有鍵生成部と、前記第2の共有鍵を格納する第2の共有鍵格納部と、前記第2のチャレンジデータを生成する第2のチャレンジデータ生成部と、前記第1のチャレンジデータに対する前記第2のレスポンスデータを生成する第2のレスポンスデータ生成部と、前記第1のレスポンスデータを検証する第2のレスポンスデータ検証部と、前記暗号化コンテンツデータを復号化して前記復号化コンテンツデータを生成するデータ暗号文復号化部とを備え、前記第1のレスポンスデータ生成部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第1のレスポンスデータとし、前記第1のレスポンスデータ検証部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第2のレスポンスデータの検証に用い、前記データ暗号文生成部は、前記暗号化コンテンツデータを前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値、データ暗号文用鍵付ハッシュ関数を使用して生成し、前記第2のレスポンスデータ生成部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第2のレスポンスデータとし、前記第2のレスポンスデータ検証部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第1のレスポンスデータの検証に用い、前記データ暗号文復号化部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
(2)上記(1)において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、同一であるとしてもよい。
(3)上記(1)において、前記第1の鍵暗号文及び前記第2の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
(4)上記(1)から(3)の何れかにおいて、前記第1の共有鍵生成部は、前記第1の鍵と前記第1の復号化鍵の排他的論理和を前記第1の共有鍵として出力し、前記第2の共有鍵生成部は、前記第2の鍵と前記第2の復号化鍵の排他的論理和を前記第2の共有鍵として出力するとしてもよい。
(5)上記(1)から(3)の何れかにおいて、前記第1の共有鍵生成部は、前記第1の鍵と前記第1の復号化鍵をビット連結したものに対して、共有鍵を生成するハッシュ関数である共有鍵生成ハッシュ関数を用いて計算したハッシュ値を前記第1の共有鍵として出力し、前記第2の共有鍵生成部は、前記第2の会議と前記第2の復号化鍵をビット連結したものに対して、前記共有鍵生成ハッシュ関数を用いて計算したハッシュ値を前記第2の共有鍵として出力するとしてもよい。
(6)上記(5)において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
(7)上記(1)から(6)の何れかにおいて、前記第1の暗号通信装置は、第1のチャレンジデータ生成部を備えず、前記第1のチャレンジデータを前記第1の鍵とし、前記第2の暗号通信装置は、第2のチャレンジデータ生成部を備えず、前記第2のチャレンジデータを前記第2の鍵とするとしてもよい。
(8)また、本発明は、コンテンツ送信装置とコンテンツ受信装置を備え、前記コンテンツ送信装置と前記コンテンツ受信装置との間で鍵配送を行い、共有した鍵を用いて暗号化通信を行う暗号通信システムにおけるコンテンツ送信装置であって、前記コンテンツデータの入力を受け付ける入力部と、前記コンテンツ受信装置へデータを送信し、前記コンテンツ受信装置からデータを受信する送受信部と、第1の鍵と第1の鍵を暗号化した第1の鍵暗号文を生成する第1の鍵暗号文生成部と、前記コンテンツ受信装置から送信される第2の鍵暗号文を復号化して第1の復号化鍵を生成する第1の鍵暗号文復号化部と、前記第1の鍵と前記第1の復号化鍵に基づき第1の共有鍵を生成する共有鍵生成部と、前記第1の共有鍵を格納する共有鍵格納部と、第1のチャレンジデータを生成するチャレンジデータ生成部と、前記コンテンツ受信装置から送信された第2のチャレンジデータに対する第1のレスポンスデータを生成するレスポンスデータ生成部と、前記コンテンツ受信装置から送信される第2のレスポンスデータを検証するレスポンスデータ検証部と、前記コンテンツデータを暗号化して暗号化コンテンツデータを生成するデータ暗号文生成部とを備え、前記レスポンスデータ生成部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第1のレスポンスデータとし、前記レスポンスデータ検証部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第2のレスポンスデータの検証に用い、 前記データ暗号文生成部は、前記第1の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
(9)上記(8)において、前記第1の鍵暗号文及び前記第2の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
(10)上記(9)において、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数とは、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
(11)また、本発明は、コンテンツ送信装置とコンテンツ受信装置を備え、前記コンテンツ送信装置と前記コンテンツ受信装置との間で鍵配送を行い、共有した鍵を用いて暗号化通信を行う暗号通信システムにおけるコンテンツ受信装置であって、復号化コンテンツデータを出力する出力部と、前記コンテンツ送信装置へデータを送信し、前記コンテンツ送信装置からデータ受信する送受信部と、第2の鍵と第2の鍵を暗号化した第2の鍵暗号文を生成する第2の鍵暗号文生成部と、前記コンテンツ送信装置から送信される第1の鍵暗号文を復号化して第2の復号化鍵を生成する第2の鍵暗号文復号化部と、前記第2の鍵と前記第2の復号化鍵に基づき第2の共有鍵を生成する共有鍵生成部と、前記第2の共有鍵を格納する共有鍵格納部と、第2のチャレンジデータを生成するチャレンジデータ生成部と、前記コンテンツ送信装置から送信される第1のチャレンジデータに対する前記第2のレスポンスデータを生成するレスポンスデータ生成部と、前記コンテンツ送信装置から送信される前記第1のレスポンスデータを検証するレスポンスデータ検証部と、前記コンテンツ送信装置から送信される暗号化コンテンツデータを復号化して前記復号化コンテンツデータを生成するデータ暗号文復号化部とを備え、 前記レスポンスデータ生成部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第2のレスポンスデータとし、前記レスポンスデータ検証部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、前記レスポンスデータ用鍵付ハッシュ関数を使用して生成して前記第1のレスポンスデータの検証に用い、前記データ暗号文復号化部は、前記第2の共有鍵の全部または一部を鍵とした鍵付ハッシュ値を、データ暗号文用鍵付ハッシュ関数を使用して生成することを特徴とする。
(12)上記(11)において、前記第1の鍵暗号文及び前記第2の鍵暗号文は、鍵カプセル化メカニズムを用いて生成するとしてもよい。
(13)上記(11)、(12)の何れかにおいて、前記レスポンスデータ用鍵付ハッシュ関数と前記データ暗号文用鍵付ハッシュ関数は、前記共有鍵生成ハッシュ関数に基づいているとしてもよい。
(14)これらの構成によると、鍵カプセル化メカニズムを使用した鍵共有の後に、共有した鍵を用いたチャレンジ・レスポンス認証を追加することにより、なりすまし攻撃の安全性を保証できるため、その価値は大きい。
本発明を構成する各装置、各方法及びコンピュータプログラムは、情報を安全かつ確実に扱う必要があるあらゆる産業において、経営的に、また継続的及び反復的に使用することができる。
また、本発明を構成する各装置、各方法及び各コンピュータプログラムは、電器機器製造産業において、経営的に、また継続的及び反復的に、製造し、販売することができる。
暗号通信システム1の概要を示す図である。 暗号通信装置A10の構成を示すブロック図である。 暗号通信装置B20の構成を示すブロック図である。 暗号通信システム1の動作を示す流れ図である。図5へ続く。 暗号通信システム1の動作を示す流れ図である。図4から続き、図6へ続く。 暗号通信システム1の動作を示す流れ図である。図5から続き、図7へ続く。 暗号通信システム1の動作を示す流れ図である。図6から続く。
符号の説明
1 暗号通信システム
10 暗号通信装置A
20 暗号通信装置B
30 通信路
101、201 入出力部
102、202 送受信部
103、203 公開鍵格納部
104、204 秘密鍵格納部
105、205 KEM暗号文生成部
106、206 KEM暗号文復号化部
107、207 共有鍵生成部
108、208 共有鍵格納部
109、209 チャレンジデータ生成部
110、210 レスポンスデータ生成部
111、211 レスポンスデータ検証部
112、212 MAC生成部
113、213 共通鍵暗号化部
114、214 共通鍵復号化部
115、215 DEM暗号文生成部
116、216 DEM暗号文復号化部

Claims (20)

  1. 通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、
    第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
    前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、
    前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段と
    を備えることを特徴とする通信装置。
  2. 前記鍵生成手段は、
    前記第1の鍵データを生成し、前記第1の鍵データを秘密に前記外部装置へ送信し及び前記外部装置にて生成された第2の鍵データを秘密に受信することにより前記外部装置との間で前記第1の鍵データ及び前記第2の鍵データを共有し、共有した前記第1の鍵データと前記第2の鍵データとを用いて前記共有鍵を生成する
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記認証は、チャレンジレスポンス認証であり、
    前記判断手段は、
    前記外部装置から前記第1の鍵データをチャレンジデータとし、前記チャレンジデータと前記共有鍵とに前記関数を施して生成されたレスポンスデータを受け取り、前記チャレンジレスポンス認証を行う
    ことを特徴とする請求項2に記載の通信装置。
  4. 前記鍵生成手段は、
    前記第1鍵データと前記第2鍵データとの排他的論理和演算により共有鍵データを算出し、算出した共有鍵データから前記共有鍵を生成する
    ことを特徴とする請求項2に記載の通信装置。
  5. 前記鍵生成手段は、
    前記共有鍵データの一部を前記共有鍵とする
    ことを特徴とする請求項4に記載の通信装置。
  6. 前記鍵生成手段は、
    前記共有鍵データそのものを前記共有鍵とする
    ことを特徴とする請求項4に記載の通信装置。
  7. 前記鍵生成手段は、
    前記第1鍵データと前記第2鍵データとに前記鍵依存関数を施して共有鍵データを生成し、生成した共有鍵データから前記共有鍵を生成する
    ことを特徴とする請求項2に記載の通信装置。
  8. 前記鍵依存関数は、前記共有鍵に依存する一方向性関数
    であることを特徴とする請求項1に記載の通信装置。
  9. 前記共有鍵は、前記判断手段による認証及び前記検証用データの生成に用いる検証用共有鍵であり、
    前記鍵生成手段は、さらに、
    前記共有鍵データから前記外部装置との間で共有され、通信対象データの暗号化及び復号に用いる暗号用共有鍵を生成し、
    前記通信装置は、さらに、
    前記暗号用共有鍵を用いて前記通信対象データを暗号化して、暗号化データを生成し、生成した前記暗号化データを前記検証用データとともに前記外部装置へ送信する送信手段を備える
    ことを特徴とする請求項1に記載の通信装置。
  10. 前記共有鍵は検証用共有鍵であり、
    前記鍵生成手段は、さらに、
    前記共有鍵データから前記外部装置との間で共有すべき暗号用共有鍵を生成し、
    前記通信装置は、さらに、
    前記外部装置から前記暗号用共有鍵にて通信対象データが暗号化された暗号化データを受信する受信手段を備え、
    前記データ生成手段は、前記受信手段にて受信した暗号化データを復号して復号データを取得し、取得した復号データを通信対象データとして前記検証用データを生成する
    ことを特徴とする請求項1に記載の通信装置。
  11. 前記鍵生成手段は、
    前記鍵配送として鍵カプセル化メカニズムを用いて前記共有鍵を生成する
    ことを特徴とする請求項1に記載の通信装置。
  12. 実行が開始されたプログラムを通信相手とし、前記プログラムと共有した鍵を用いて通信対象データの秘密通信を行う通信装置であって、
    第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
    前記プログラムとの間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記プログラムが正当であるか否かを判断する判断手段と、
    前記判断手段にて前記プログラムが正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いた検証用データを生成するデータ生成手段と
    を備えることを特徴とする通信装置。
  13. コンピュータ装置に実行させ、コンピュータ装置を通信相手とし、前記コンピュータ装置と共有した鍵を用いて通信対象データの秘密通信を行うプログラムであって、
    第三者に知られることなく前記コンピュータ装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
    前記コンピュータ装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記コンピュータ装置が正当であるか否かを判断する判断ステップと、
    前記判断ステップにて前記コンピュータ装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
    を含むことを特徴とするプログラム。
  14. 第1の領域に格納され、第2の領域に存在する第2プログラムを通信相手とし、前記第2プログラムと共有した鍵を用いて通信対象データの秘密通信を行う第1プログラムであって、
    前記第1プログラム及び前記第2プログラムは、コンピュータ装置にて実行され、
    前記第1プログラムは、
    第三者に知られることなく前記第2プログラムとの間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
    前記第2プログラムとの間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記第2プログラムが正当であるか否かを判断する判断ステップと、
    前記判断ステップにて前記第2プログラムが正当であると判断される場合に、通信対象データの秘密通信の際に、前前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
    を含むことを特徴とする第1プログラム。
  15. 第1及び第2の通信装置間で共有した鍵を用いて通信対象データの秘密通信を行う通信システムであって、
    前記第1の通信装置は、
    第三者に知られることなく前記第2の通信装置との間で安全性証明のなされた暗号方式を用いて共有すべき第1の共有鍵を生成する第1の鍵生成手段と、
    前記第2の通信装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記第2の通信装置が正当であるか否かを判断する第1の判断手段と、
    前記第1の判断手段にて前記第2の通信装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記第1の共有鍵に依存する前記鍵依存関数と同一の関数を用いた第1の検証用データを生成する第1のデータ生成手段とを備え、
    前記第2の通信装置は、前記第1の通信装置が認証に用いるデータを送信する
    ことを特徴とする通信システム。
  16. 前記第2の通信装置は、さらに、
    第三者に知られることなく前記第1の通信装置との間で安全性証明のなされた暗号方式を用いて共有すべき第2の共有鍵を生成する第2の鍵生成手段と、
    前記鍵依存関数を用いた認証を行うことにより、前記第1の通信装置が正当であるか否かを判断する第2の判断手段と、
    前記第2の判断手段にて前記第1の通信装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記第2の共有鍵に依存する前記鍵依存関数と同一の関数を用いて第2の検証用データを生成する第2のデータ生成手段とを備え、
    前記第1の通信装置は、前記第2の通信装置が認証に用いるデータを送信する
    ことを特徴とする請求項14に記載の暗号通信システム。
  17. 通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置で用いられる通信方法であって、
    第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
    前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断ステップと、
    前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
    を含むことを特徴とする通信方法。
  18. 通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置で用いられる通信プログラムであって、
    第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成ステップと、
    前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断ステップと、
    前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成ステップと
    を含むことを特徴とする通信プログラム。
  19. 前記通信プログラムは、コンピュータ読み取り可能な記録媒体に記録されている
    ことを特徴とする請求項17に記載の通信プログラム。
  20. 通信相手の外部装置と共有した鍵を用いて通信対象データの秘密通信を行う通信装置の集積回路であって、
    第三者に知られることなく前記外部装置との間で安全性証明のなされた暗号方式を用いて共有すべき共有鍵を生成する鍵生成手段と、
    前記外部装置との間で共有され、前記共有鍵に依存する鍵依存関数を用いた認証を行うことにより、前記外部装置が正当であるか否かを判断する判断手段と、
    前記判断手段にて前記外部装置が正当であると判断される場合に、通信対象データの秘密通信の際に、前記通信対象データの正当性検証のために前記通信対象データを用い前記共有鍵に依存する前記鍵依存関数と同一の関数を用いて検証用データを生成するデータ生成手段と
    を備えることを特徴とする集積回路。
JP2008513198A 2006-04-28 2007-04-23 通信装置、及び通信システム Pending JPWO2007125877A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006125925 2006-04-28
JP2006125925 2006-04-28
PCT/JP2007/058768 WO2007125877A1 (ja) 2006-04-28 2007-04-23 通信装置、及び通信システム

Publications (1)

Publication Number Publication Date
JPWO2007125877A1 true JPWO2007125877A1 (ja) 2009-09-10

Family

ID=38655402

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008513198A Pending JPWO2007125877A1 (ja) 2006-04-28 2007-04-23 通信装置、及び通信システム

Country Status (4)

Country Link
US (1) US20090100264A1 (ja)
JP (1) JPWO2007125877A1 (ja)
CN (1) CN101433014A (ja)
WO (1) WO2007125877A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959199B2 (en) * 2008-03-18 2015-02-17 Reduxio Systems Ltd. Network storage system for a download intensive environment
US20120291106A1 (en) * 2010-01-19 2012-11-15 Nec Corporation Confidential information leakage prevention system, confidential information leakage prevention method, and confidential information leakage prevention program
TWI420339B (zh) * 2010-11-10 2013-12-21 Ind Tech Res Inst 軟體授權系統及方法
EP2813029B1 (en) * 2012-02-09 2020-12-02 Irdeto B.V. System and method for generating and protecting cryptographic keys
EP2712222B1 (en) * 2012-09-25 2020-04-01 Alcatel Lucent Confidential provisioning of secret keys over the air
EP2936733B1 (en) * 2012-12-21 2018-08-22 Mobile Iron, Inc. Secure mobile app connection bus
US9866382B2 (en) * 2012-12-21 2018-01-09 Mobile Iron, Inc. Secure app-to-app communication
US9825923B2 (en) * 2013-04-12 2017-11-21 Nokia Solutions And Networks Oy Secure radio information transfer over mobile radio bearer
WO2015075796A1 (ja) 2013-11-21 2015-05-28 株式会社 東芝 コンテンツ管理システム、ホスト装置及びコンテンツ鍵アクセス方法
EP2961207A1 (en) * 2014-06-24 2015-12-30 Gemalto SA Method, server and telecommunications system for establishing, through an OTA server, a secured communication channel between an administrative agent comprised in a device and a third party server
EP3002964A1 (en) * 2014-10-02 2016-04-06 Gemalto Sa Method of sending a data from a secure token to a server
KR101544722B1 (ko) * 2014-11-13 2015-08-18 주식회사 엘지씨엔에스 부인 방지 방법, 이를 위한 결제 관리 서버 및 사용자 단말기
JP2018507646A (ja) 2015-02-27 2018-03-15 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 通信デバイスとネットワークデバイスとの間の通信におけるセキュリティ構成
US10690762B2 (en) * 2015-05-29 2020-06-23 Qualcomm Incorporated Systems and methods for determining an upper bound on the distance between devices
US10411886B1 (en) 2015-12-29 2019-09-10 Amazon Technologies, Inc. Authenticating secure channel establishment messages based on shared-secret
US11153087B1 (en) 2015-12-29 2021-10-19 Amazon Technologies, Inc. Hub-based token generation and endpoint selection for secure channel establishment
JP6613909B2 (ja) * 2016-01-15 2019-12-04 富士通株式会社 相互認証方法、認証装置および認証プログラム
US10230700B2 (en) * 2016-08-09 2019-03-12 Lenovo (Singapore) Pte. Ltd. Transaction based message security
CN107483505B (zh) * 2017-09-29 2020-10-16 武汉斗鱼网络科技有限公司 一种对视频聊天中的用户隐私进行保护的方法及系统
US10728240B2 (en) * 2017-10-19 2020-07-28 Global Tel*Link Corporation Variable-step authentication for communications in controlled environment
CN107959688B (zh) * 2017-12-14 2020-11-10 恒宝股份有限公司 一种终端和摄像设备相互认证的安全认证方法及其认证系统
JP7299708B2 (ja) * 2019-01-15 2023-06-28 グローリー株式会社 認証システム、管理装置及び認証方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005039100A1 (en) * 2003-10-16 2005-04-28 Matsushita Electric Industrial Co., Ltd. Encrypted communication system and communication device

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334127B2 (en) * 1995-04-21 2008-02-19 Certicom Corp. Key agreement and transport protocol
JP4691244B2 (ja) * 2000-11-10 2011-06-01 株式会社東芝 限定受信システムの限定受信装置及びセキュリティモジュール、限定受信システム、限定受信装置認証方法及び暗号通信方法
JP4248990B2 (ja) * 2002-10-16 2009-04-02 パナソニック株式会社 パスワード復元システム
EP1456732A1 (en) * 2002-10-16 2004-09-15 Matsushita Electric Industrial Co., Ltd. Password recovery system
US7573301B2 (en) * 2002-12-02 2009-08-11 Silverbrook Research Pty Ltd Temperature based filter for an on-chip system clock
KR101027199B1 (ko) * 2002-12-03 2011-04-06 파나소닉 주식회사 키공유 시스템, 공유키 생성장치 및 공유키 복원장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005039100A1 (en) * 2003-10-16 2005-04-28 Matsushita Electric Industrial Co., Ltd. Encrypted communication system and communication device

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JPN6012042960; Dent, A. W.: 'Hybrid Signcryption Schemes with Outsider Security' Lecture Notes in Computer Science Vol.3650, 2005, p.203-217 *
JPN6012042963; 岡本栄司: 暗号理論入門 , 19930225, p.129-131, 共立出版株式会社 *
JPN6012042965; Canetti, R. and Krawczyk, H.: 'Analysis of Key-Exchange Protocols and Their Use for Building Secure Channels' Lecture Notes in Computer Science Vol.2045, 2001, p.453-474 *

Also Published As

Publication number Publication date
CN101433014A (zh) 2009-05-13
WO2007125877A1 (ja) 2007-11-08
US20090100264A1 (en) 2009-04-16

Similar Documents

Publication Publication Date Title
JPWO2007125877A1 (ja) 通信装置、及び通信システム
US11323276B2 (en) Mutual authentication of confidential communication
US8670563B2 (en) System and method for designing secure client-server communication protocols based on certificateless public key infrastructure
JP4771946B2 (ja) 暗号通信システム、通信装置
KR101075334B1 (ko) 안전 인증 채널
US10057071B2 (en) Component for connecting to a data bus, and methods for implementing a cryptographic functionality in such a component
Karuppiah et al. A secure lightweight authentication scheme with user anonymity for roaming service in ubiquitous networks
KR20170035665A (ko) 키 교환 장치 및 방법
JP2006333095A (ja) 暗号通信方法、暗号通信システム、暗号通信装置及び暗号通信プログラム
JP6548172B2 (ja) 端末認証システム、サーバ装置、及び端末認証方法
EP1905186A2 (en) Cryptographic authentication, and/or establishment of shared cryptographic keys, using a signing key encrypted with a non-one-time-pad encryption, including (but not limited to) techniques with improved security against malleability attacks
WO2018137225A1 (zh) 指纹数据的处理方法及处理装置
KR102017758B1 (ko) 의료 기기, 게이트웨이 기기 및 이를 이용한 프로토콜 보안 방법
JP2006174356A (ja) 擬似公開鍵暗号方法及びシステム
CN112351037A (zh) 用于安全通信的信息处理方法及装置
Hlauschek et al. Prying Open Pandora's Box:{KCI} Attacks against {TLS}
Niu et al. A novel user authentication scheme with anonymity for wireless communications
US9876774B2 (en) Communication security system and method
Panda et al. A modified PKM environment for the security enhancement of IEEE 802.16 e
KR100542652B1 (ko) 무선 통신 환경을 위한 키 분배 프로토콜 방법
KR101793528B1 (ko) 무인증서 공개키 암호 시스템
JP6067474B2 (ja) 電子署名検証方法および電子署名検証システム
JP6153454B2 (ja) 署名装置、方法及びプログラム
CN114531235A (zh) 一种端对端加密的通信方法及系统
Blomqvist Kleptography--Overview and a new proof of concept

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120821

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120928

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121127