JP2004248270A - 共有鍵交換方法及び通信機器 - Google Patents
共有鍵交換方法及び通信機器 Download PDFInfo
- Publication number
- JP2004248270A JP2004248270A JP2004013546A JP2004013546A JP2004248270A JP 2004248270 A JP2004248270 A JP 2004248270A JP 2004013546 A JP2004013546 A JP 2004013546A JP 2004013546 A JP2004013546 A JP 2004013546A JP 2004248270 A JP2004248270 A JP 2004248270A
- Authority
- JP
- Japan
- Prior art keywords
- communication device
- shared key
- time
- response
- calculation
- 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
Links
Images
Abstract
【課題】 低性能CPUを搭載した機器を使用する場合でも、機器にタイムアウト検出をさせることなく鍵交換を成功させることが可能な共有鍵交換方法を提供する。
【解決手段】 機器Aから公開値Xを受信すると、機器Bは、公開値Yの算出にかかる時間及び共有鍵Kの算出にかかる時間を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tbを求め、機器Aに送信して応答遅延時間を予告する(S306、S307)。その後、機器Bは、実際に公開値Y及び共有鍵Kを算出する(S309、S310)。機器Aは、演算所要時間Tbを受信し、機器Bからの応答待ち期限(タイムアウト時間)を、この受信から演算所要時間Tbが経過した時点に延長して設定する(S311)。
【選択図】 図3
【解決手段】 機器Aから公開値Xを受信すると、機器Bは、公開値Yの算出にかかる時間及び共有鍵Kの算出にかかる時間を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tbを求め、機器Aに送信して応答遅延時間を予告する(S306、S307)。その後、機器Bは、実際に公開値Y及び共有鍵Kを算出する(S309、S310)。機器Aは、演算所要時間Tbを受信し、機器Bからの応答待ち期限(タイムアウト時間)を、この受信から演算所要時間Tbが経過した時点に延長して設定する(S311)。
【選択図】 図3
Description
本発明は、共有鍵交換方法及び通信機器に関し、より特定的には、ネットワークを介して秘匿性の高いデータを送受信する機器間で、暗号化/認証用の秘密鍵を交換及び共有するための共有鍵交換方法に関する。
近年のインターネットの普及により、電子メールや電子商取引等のネットワークを介したサービスも増大し、家庭内にもネットワークに接続できる電化製品、いわゆる「ネット家電」が増えつつある。このネット家電は、エアコンや電子レンジ等の白物家電にも及んでおり、宅外からエアコンを制御したり、電子レンジの調理プログラムをサーバからダウンロードしたりできるサービス等が提案されている。しかしながら、このネットワークの普及拡大に伴い、悪意を持った第三者が、ネットワーク上の電子データを改ざんや盗用(無断視聴)したり、他人になりすましてサービスを受けたりする、といった問題が浮上している。このため、ネットワーク上のセキュリティ対策が重要となってきている。
ネットワーク上のセキュリティ機能を実現する取り組みとしては、暗号化技術や認証技術を使ったプロトコルが、様々に規格化又は実用化されている。例えば、IPパケットのレベルでのセキュリティ機能を規定したプロトコルとして、IPsec(IP Security protocol)がある。IPsecとは、インターネット技術タスクフォース(IETF;Internet Engineering Task Force)によって標準化されたプロトコルであり、その内容はIETFの仕様書「RFC2401」(非特許文献1)等によって規定されている。このIPsecでは、IPパケットそのものを暗号化することで盗用者から通信内容を保護し、秘密の漏洩を防ぐことができる。また、IPパケットに認証(完全性チェック)用の値を追加することで、通信経路でデータが改ざんされなかったことを保証することができる。
ところで、IPsec等のプロトコルを使って、機器間で暗号化/認証処理がされたデータを送受信する場合、データ送受信に先立って、暗号化/認証処理に用いる鍵(以下、セッション共有鍵と呼ぶ)を両方の機器で共有する必要がある。ここで、ユーザが手動でセッション共有鍵を設定するのは煩雑であり、多くの機器間で通信するシステムには向かない。また、1つのセッション共有鍵を長時間にわたって使い続けると、第三者にセッション共有鍵を解読されてしまう可能性が高まるため、必要に応じてセッション共有鍵を更新する必要がある。このようなことから、セッション共有鍵を機器間で共有するために必要な生成、配布、交換及び更新の処理を、安全かつ簡単に自動的に行うことが好ましく、これについて様々な手法が提案されている。
例えば、2つの機器間で1つの秘密対称鍵(セッション共有鍵)を交換させる方法として、広く使われている基本技術に、ディフィ−ヘルマン(DH法)の鍵交換方法がある。このディフィ−ヘルマンの鍵交換方法(以下、DH法と記す)は、上述したIPsecの鍵交換及び管理プロトコルとして標準使用が規定されているIKE(Internet Key Exchange)にも用いられている。このIKEの概要は、IETFの仕様書「RFC2407」〜「RFC2409」(非特許文献2〜4)に開示されている。
以下、従来の共有鍵交換(共有及び配信)方法の具体例として、DH法を説明する。
図18は、IETFの仕様書「RFC2631」(非特許文献5)で規定されているDH法を説明するための図である。なお、図18の機器A及び機器Bは、暗号通信及び鍵交換を行う機器の組である。また、機器Aと機器Bとが、鍵交換を行う前に変数g及び変数nの値を予め知っているものとする(ステップS1801、S1802)。この変数g及び変数nは、鍵交換処理における演算に用いられる変数であるが、その値は第三者(盗用者)に知られていてもよい。
図18は、IETFの仕様書「RFC2631」(非特許文献5)で規定されているDH法を説明するための図である。なお、図18の機器A及び機器Bは、暗号通信及び鍵交換を行う機器の組である。また、機器Aと機器Bとが、鍵交換を行う前に変数g及び変数nの値を予め知っているものとする(ステップS1801、S1802)。この変数g及び変数nは、鍵交換処理における演算に用いられる変数であるが、その値は第三者(盗用者)に知られていてもよい。
まず、機器Aは、自機器固有の秘密値aを生成する(ステップS1803)。次に、機器Aは、この秘密値aと変数g及び変数nとを用いて、次式(1)によって公開値Xを算出する(ステップS1804)。この式(1)は、変数gを秘密値aの数だけ乗算し(べき乗演算)、その値を変数nで割った余り(モジュロ演算)を、公開値Xとすることを意味する。そして、機器Aは、算出した公開値Xを機器Bに送信する(ステップS1805)。
X=g^a mod n …(1)
X=g^a mod n …(1)
一方、機器Bは、機器Aから公開値Xを受信すると、自機器固有の秘密値bを生成する(ステップS1806)。次に、機器Bは、この秘密値bと変数g及び変数nとを用いて、次式(2)によって公開値Yを算出する(ステップS1807)。さらに、機器Bでは、機器Aから受信した公開値X、秘密値b及び変数nを用いて、次式(3)によってセッション共有鍵Kを算出する(ステップS1808)。そして、機器Bは、算出した公開値Yを機器Aに送信する(ステップS1809)。
Y=g^b mod n …(2)
K=X^b mod n …(3)
Y=g^b mod n …(2)
K=X^b mod n …(3)
最後に、機器Aは、機器Bから公開値Yを受信すると、この公開値Y及び秘密値aを用いて、次式(4)によってセッション共有鍵Kを算出する(ステップS1810)。
K=Y^a mod n …(4)
K=Y^a mod n …(4)
ここで、上記式(3)及び式(4)は、次式(5)の関係が成立する。
Y^a mod n=X^b mod n=g^(a×b) mod n …(5)
そのため、機器A及び機器Bは、セッション共有鍵Kとして同じ値を算出することができる。従って、各機器でセッション共有鍵Kを算出した後には、このセッション共有鍵Kを用いて暗号化/認証処理したデータを送受信することができる(ステップS1811)。
Y^a mod n=X^b mod n=g^(a×b) mod n …(5)
そのため、機器A及び機器Bは、セッション共有鍵Kとして同じ値を算出することができる。従って、各機器でセッション共有鍵Kを算出した後には、このセッション共有鍵Kを用いて暗号化/認証処理したデータを送受信することができる(ステップS1811)。
盗用者が、既知である変数g、変数n、公開値X及び公開値Yに基づいて、セッション共有鍵Kを見つけ出すことは、いわゆる離散対数問題と言われており、大変難しいことは周知の事実である。特に、変数nを極めて大きく(数百ビットから数千ビット)に設定した場合には、離散対数を解くことは事実上不可能である。以上のように、DH法を使用することにより、機器Aと機器Bとの間で安全にセッション共有鍵Kを共有させることができる。
なお、上述したIKEの場合には、DH法の手順だけでなく、その前後に機器間でやり取りする手順も規定されている。以下、図19を用いてIKEでの鍵交換方法を簡単に説明する。なお、IKEにおいては、最初に鍵交換の要求を相手に送る側の機器をイニシエータと呼び、その要求を受け付ける側の機器をレスポンダと呼ぶ。また、IKEでは、Phase1とPhase2という2段階の鍵交換を規定している。
まず、Phase1の段階において、イニシエータとレスポンダとは、始めに鍵交換と暗号化/認証処理とに用いる各種パラメータを折衝する(ステップS1901)。例えば、DH法で用いる変数g及び変数nの値や、ステップS1903で用いる暗号化/認証のアルゴリズムも、このステップS1901で決められる。変数g及び変数nの値については、値そのもの、あるいは変数g及び変数nの値を特定できる所定のグループ番号等で取り決めればよい。次に、上述したDH法の鍵交換を行い、セッション共有鍵K_Phase1を共有する(ステップS1902)。Phase1の最後には、イニシエータとレスポンダとが相互に本当に正しい相手かどうかを認証(本人性確認)するための手順を行う(ステップS1903)。このステップS1903の認証で使用するメッセージは、セッション共有鍵K_Phase1に基づく鍵によって暗号化/認証処理された後、送受信される。お互いの機器を認証するための情報としては、IDやハッシュ値等を使用することができる。例えば、セッション共有鍵K_Phase1とステップS1902で交換したデータ等とを連結し、それを鍵つきハッシュ関数の入力値として計算したハッシュ値を、ステップS1903においてメッセージの暗号化/認証を行う鍵として使用できる。
次に、Phase2の段階において、イニシエータとレスポンダとの間で実際に送受信したいデータに施す暗号化/認証処理を決定する。このPhase2のメッセージには、ステップS1903と同様に、セッション共有鍵K_Phase1に基づく鍵で暗号化/認証処理が施される。Phase2における最初の2メッセージでは、変数g及び変数nの値の提案又は通知、暗号化/認証のアルゴリズム等の折衝と、DH法の公開値X及び公開値Yの交換が行われる(ステップS1904)。Phase2では、パラメータ(変数g、変数n、秘密値a及び秘密値b)の値を、Phase1のパラメータと異なる値にすることができる。イニシエータとレスポンダとは、ステップS1904のDH法で計算されるセッション共有鍵K_Phase2に基づいて、実際のデータに適用する暗号化/認証処理の鍵を生成し、暗号化/認証処理済みのデータを送受信する(ステップS1905)。
なお、IKEでは、上述した手順以外にも、一方のメッセージが他方の機器に届かなかった場合のメッセージの再送や、セッション共有鍵の更新手順等も規定されている。
標準仕様書「RFC2401」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2401.txt> 標準仕様書「RFC2407」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2407.txt> 標準仕様書「RFC2408」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2408.txt> 標準仕様書「RFC2409」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2409.txt> 標準仕様書「RFC2631」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2631.txt>
標準仕様書「RFC2401」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2401.txt> 標準仕様書「RFC2407」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2407.txt> 標準仕様書「RFC2408」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2408.txt> 標準仕様書「RFC2409」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2409.txt> 標準仕様書「RFC2631」、IETF、[平成15年12月9日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc2631.txt>
上述したように、DH法は、べき乗演算とモジュロ演算とを含んでおり、桁数の大きい数値を使用する場合の処理負荷が非常に重いことが知られている。例えば、IKEで規定されているDHグループ2の場合には、g=2、n=1024(ビット)の値を使用して公開値X、公開鍵Y及びセッション共有鍵Kが計算される。しかしながら、ネット家電のように低コストのCPUを搭載する機器では、高い計算能力が望めず、以下のような3つの課題が発生すると考えられる。
まず、第1の課題としては、対向する(相手側の)機器におけるタイムアウト検出により、鍵交換処理が失敗する恐れがあることが挙げられる。図20は、この課題を説明するためのシーケンス図である。図20のステップS2001〜S2006は、図18のS1801〜S1806と同じ処理であり、機器Aから機器BにDH法の公開値Xが送信される。次に、機器Bは、図18のステップS1807及びS1808と同様に公開値Y及びセッション共有鍵Kの算出を行うが、CPUの計算能力が低いため非常に長い処理時間を要する(ステップS2007、S2008)。
機器Aは、自分の公開値Xを送信した後(ステップS2005)、機器Bからの応答、すなわち公開値Yの受信を待つわけであるが、通常、通信経路中のパケットロスや対向する機器の障害等の事態に備えて、再送やタイムアウトの処理を持たせている。図20の機器Aの場合は、機器Bからの応答が無ければ再送間隔T[秒]時間毎に公開値Xのメッセージを再送する(ステップS2010〜S2012)。それでも機器Bからの応答が無い場合には、所定の時間(図20の例では、T×4[秒])が経過した後にタイムアウトを検出して、鍵交換が失敗したと判断する(ステップS2013)。
その後、機器Bで公開値Y及びセッション共有鍵Kの算出が終了し、機器Aに公開値Yを送信したとしても(ステップS2009)、その時には機器Aではすでに機器Bとの鍵交換処理実行状態をリセットしている。そのため、公開値Yを含むメッセージは、無効なメッセージと判断して廃棄されてしまう(ステップS2014)。
次に、第2の課題としては、鍵の寿命が設定されている場合、寿命満了までに鍵の更新が完了しない恐れがあることが挙げられる。同一の鍵を長時間にわたって使用すると、その間に鍵を解読されることが全くないとは言えない。そこで、IKEでは、鍵に寿命を設けておき、適当な時間が経つと、それまでの鍵の使用を終了し、別の新しい鍵を使用することができるようにしている。具体的には、鍵交換成功によって鍵が作成されると、その鍵に寿命が設定される。あるいは、鍵交換の手順を開始する際に、その鍵に付与する寿命満了の時刻を機器Aと機器Bとの間で取り決めておく。その鍵の寿命が満了になる前に、次の新しい鍵を作成し、使用中の鍵の寿命が満了となる前に、この新しい鍵に切り替える。このような鍵の更新処理を、リキー処理と呼ぶ。DH法に伴う演算に時間がかかると、リキー処理が遅れ、古い鍵の寿命満了までに鍵の更新ができず、古い鍵を使い続けるうちに、その寿命が満了するとパケットの暗号化ができなくなる。
次に、第3の課題としては、機器上の他のアプリケーションの実行を妨害する恐れがあることが挙げられる。ネット家電のように低性能のCPUを搭載している機器で、DH法等の高負荷な演算処理を連続して実行すると、長時間にわたってネット家電のCPUをこの演算だけで占有してしまい、CPUリソースが枯渇することになる。そのため、ネット家電上で動作する他のアプリケーションの実行が妨げられ、正常に動作しなくなる可能性がある。
それ故に、本発明の第1の目的は、低性能CPUを搭載した機器を使用する場合でも、機器にタイムアウト検出をさせることなく鍵交換を成功させることが可能な共有鍵交換方法及びその通信機器を提供することである。また、本発明の第2の目的は、低性能CPUを搭載した機器を使用する場合でも、リキー処理を正常に行うことが可能な共有鍵交換方法及びその通信機器を提供することである。さらに、本発明の第3の目的は、低性能CPUを搭載した機器では、他のアプリケーションの実行を妨げることなく同時に鍵交換も成功させることが可能な共有鍵交換方法及びその通信装置を提供することである。
本発明は、暗号化/改ざん認証処理が施されたデータを送受信するために、2つの通信機器間で行われる共有鍵を交換する共有鍵交換方法、及びその方法を実行する通信機器に向けられている。そして、上記第1の目的を達成させるために、本発明の共有鍵交換方法では、各通信機器が以下のステップを実行することを特徴とし、本発明の通信機器では、そのステップを実行可能な構成を備えていることを特徴としている。
少なくとも一方の通信機器が、対向する他方の通信機器が共有鍵を取得するために必要な情報を、当該他方の通信機器に送信する情報送信ステップ(情報送信部)と、他方の通信機器が次の応答タイミングまでに行う所定の演算にかかる時間に基づいて、他方の通信機器からの応答待ちの期限を設定する設定ステップ(設定部)とを実行する(備える)。そして、他方の通信機器が、所定の演算を行って情報から共有鍵を取得する取得ステップ(取得部)と、応答タイミングで一方の通信機器へ所定の応答を送信する応答送信ステップ(応答送信部)とを実行する(備える)。
ここで、各々の通信機器が、自己の公開値を算出して相手の通信機器に送信し、また相手の通信機器から相手の公開値を受信して、当該相手の公開値に基づいて共有鍵を算出することで共有鍵の交換を実現する場合には、一方の通信機器の設定ステップが、他方の通信機器において公開値の算出までにかかる時間又は共有鍵の算出までにかかる時間の少なくともいずれかに基づいて、応答待ちの期限を設定する。
また、一方の通信機器が、自機器で生成した共有鍵又は共有鍵を生成するための情報に所定の暗号化を施して他方の通信機器へ送信し、他方の通信機器が、一方の通信機器から受信する暗号化された共有鍵を復号又は共有鍵を生成するための情報を復号して共有鍵を生成し、共有鍵取得の応答を一方の通信機器へ送信することで共有鍵の交換を実現する場合には、一方の通信機器の設定ステップが、他方の通信機器において暗号化された共有鍵の復号にかかる時間又は共有鍵を生成するための情報の復号及び共有鍵の生成にかかる時間に基づいて、応答待ちの期限を設定する。
また、他方の通信機器が、一方の通信機器から要求メッセージを受信した後、共有鍵又は共有鍵を生成するための情報を、一方の通信機器から受信する公開鍵を用いて暗号化して一方の通信機器へ送信することで共有鍵の交換を実現する場合には、一方の通信機器の設定ステップが、他方の通信機器において共有鍵又は共有鍵を生成するための情報の暗号化にかかる時間に基づいて、応答待ちの期限を設定する。
なお、所定の演算は、共有鍵の取得に伴う認証処理のための演算、又は共有鍵の取得に伴う認証処理のための演算かつ共有鍵を取得するための演算であってもよい。典型的には、一方の通信機器が、認証のためのデジタル署名がされたデータ又は公開鍵暗号を利用したデータを他方の通信機器へ送信し、他方の通信機器が、一方の通信機器から受信するデジタル署名がされたデータ又は公開鍵暗号を利用したデータに従って本人性認証処理を行うことで、認証処理を実現する場合、一方の通信機器の設定ステップが、他方の通信機器において本人性認証処理にかかる時間に基づいて、応答待ちの期限を設定すればよい。
一方の通信機器の設定部は、相手の通信機器から受信する所定の演算にかかる時間を推定した演算所要時間に基づいて、所定の演算にかかる時間を取得すればよい。好ましい取得方法としては、他方の通信機器が、所定の演算にかかる演算所要時間を推定する推定ステップ(推定部)と、推定した演算所要時間を一方の通信機器へ送信する時間送信ステップ(時間送信部)とをさらに実行する(備える)。そして、一方の通信機器が、演算所要時間を他方の通信機器から受信する受信ステップを実行する。
このとき、一方の通信機器が、他方の通信機器に演算所要時間の問い合わせを実行し(問い合わせ部)、他方の通信機器が、一方の通信機器からの問い合わせに応じて、推定ステップ及び時間送信ステップを実行してもよい。
他方の通信機器が推定する演算所要時間は、事前に保存されていてもよい。また、この事前に保存する演算所要時間は、過去の所定の演算にかかった最大時間とするのが好ましい。
このとき、一方の通信機器が、他方の通信機器に演算所要時間の問い合わせを実行し(問い合わせ部)、他方の通信機器が、一方の通信機器からの問い合わせに応じて、推定ステップ及び時間送信ステップを実行してもよい。
他方の通信機器が推定する演算所要時間は、事前に保存されていてもよい。また、この事前に保存する演算所要時間は、過去の所定の演算にかかった最大時間とするのが好ましい。
また、上記以外の方法として、他方の通信機器が、次の応答タイミングまでに応答が遅れる内容の通知を、一方の通信機器に少なくとも1回送信するステップを実行してもよい。この場合、一方の通信機器は、他方の通信機器から通知を受信するステップをさらに実行し、設定ステップで、通知に基づいて応答待ちの期限を設定すればよい。また、一方の通信機器が、メッセージを送信してから他方の通信機器において所定の演算後の応答を受信するまでの時間を計測して、所定の演算にかかる時間を取得するようにしてもよい。
なお、通信機器が相手の公開値に基づいて共有鍵を算出する共有鍵交換処理において、他方の通信機器が、次の応答タイミングまでに公開値及び/又は共有鍵の算出を実行する場合(公開値算出部、共有鍵算出部)、一方の通信機器の設定ステップが、他方の通信機器が公開値及び/又は共有鍵を算出するまでにかかる合計時間に基づいて、公開値の送信又は共有鍵の算出完了に関する応答待ちの期限を設定することが好ましい。
ここで、通信機器は、共有鍵の算出完了後に完了通知を相手の通信機器に送信するステップと、相手の通信機器から完了通知を受けるまで、鍵交換処理失敗の判断を行わないステップとを実行してもよい。また、IKEのメッセージシーケンスにおいて、情報送信ステップ、設定ステップ、取得ステップ及び応答送信ステップが実行されてもよい。
一方、上記第2及び第3の目的を達成させるために、本発明の共有鍵交換方法では、各通信機器が以下のステップを実行することを特徴とし、本発明の通信機器では、そのステップを実行可能な構成を備えていることを特徴としている。
各々の通信機器が、共有鍵を算出するために行う所定の演算にかかる演算所要時間を推定する推定ステップ(推定部)と、相手の通信機器との間で共有鍵の交換を完了すべき時刻までに共有鍵の交換処理を完了させるための処理開始時刻を、演算所要時間に基づいて算定する算定ステップ(算定部)とを実行する(備える)。そして、いずれか一方の通信機器が、処理開始時刻に鍵交換処理を開始する開始ステップ(開始部)をさらに実行する(備える)。
この場合、他方の通信機器が、推定ステップで推定した演算所要時間を、一方の通信機器へ送信する時間送信ステップ(時間送信部)をさらに実行する(備え)。そして、一方の通信機器が、他方の通信機器から演算所要時間を受信するステップ(受信部)をさらに実行し(備え)、算定ステップにおいて自己の演算所要時間と他方の通信機器の演算所要時間とに基づいて、処理開始時刻を算定してもよい。
また、一方の通信機器が、他方の通信機器に演算所要時間の問い合わせを行うステップ(問い合わせ部)をさらに実行し(備え)、他方の通信機器が、一方の通信機器からの問い合わせに応じて、推定ステップ及び時間送信ステップを実行してもよい。
また、算定ステップで算定した処理開始時刻が早い方の通信機器が、その処理開始時刻に開始ステップを実行することが好ましい。
また、通信機器が、共有鍵の算出が新規であるか更新であるかを判定する判定ステップ(判定部)をさらに実行し(備え)、更新である場合には、共有鍵を算出するために行う所定の演算が所定の小単位に分割されて時間的に負荷分散されることが好ましい。この負荷分散は、共有鍵を算出するために行う所定の演算にかかる時間が長い方の通信機器が実行すればよい。
さらに、推定ステップは、共有鍵を算出するために自機器が行う所定の演算にかかる実時間の2倍の時間を演算所要時間として推定することが好ましい。
また、通信機器が、共有鍵の算出が新規であるか更新であるかを判定する判定ステップ(判定部)をさらに実行し(備え)、更新である場合には、共有鍵を算出するために行う所定の演算が所定の小単位に分割されて時間的に負荷分散されることが好ましい。この負荷分散は、共有鍵を算出するために行う所定の演算にかかる時間が長い方の通信機器が実行すればよい。
さらに、推定ステップは、共有鍵を算出するために自機器が行う所定の演算にかかる実時間の2倍の時間を演算所要時間として推定することが好ましい。
好ましくは、この共通鍵交換方法は、一連の処理手順を通信機器に実行させるためのプログラムの形式で提供される。このプログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。
上記のように、本発明の共有鍵交換方法によれば、いずれかの通信機器が公開値及び共有鍵の算出に所定以上の時間を要する(低性能である)場合であっても、演算の遅延によって影響する時間又は遅延する旨の通知を対向する通信機器に予め推定して通知する。これにより、低性能の機器がまだ鍵交換処理の演算をしている間に対向する機器が応答なしと判断してしまうという従来の課題が生じないため、問題なく鍵交換を成功させることができる。また、共有鍵更新時の鍵交換処理も共有鍵の寿命が満了する前に行うことができる。さらに、この共有鍵更新時には、高負荷の演算を時間的に負荷分散させることが可能となり、低性能の機器でも、鍵交換の処理が長期間にわたってCPUを占有することがなくなる。
本発明が提供する共有鍵交換方法を説明する前に、まず共有鍵交換方法を使用する機器によるネットワーク構成について説明する。
図1−A及び図1−Bは、本発明の共有鍵交換方法が適用されるネットワーク構成の一例を示す図である。本発明の共有鍵交換方法に適した実装形態は、ネット家電とインターネット等の公衆網(WAN)との接続を中継するGW型機器(ルータやゲートウェイ(GW)等)に実装されるケース(図1−A)と、ネット家電に相当するホスト型機器に実装されるケース(図1−B)との2種類に分類できる。
図1−A及び図1−Bは、本発明の共有鍵交換方法が適用されるネットワーク構成の一例を示す図である。本発明の共有鍵交換方法に適した実装形態は、ネット家電とインターネット等の公衆網(WAN)との接続を中継するGW型機器(ルータやゲートウェイ(GW)等)に実装されるケース(図1−A)と、ネット家電に相当するホスト型機器に実装されるケース(図1−B)との2種類に分類できる。
まず、図1−Aでは、本発明の共有鍵交換方法は、GW型機器101及び102に実装されている。GW型機器101とGW型機器102とは、公衆網107を介して接続されている。また、GW型機器101は、自分のLAN108内の端末103及び104とも接続されている。同様に、GW型機器102は、自分のLAN109内の端末105及び106とも接続されている。
LAN108内の端末とLAN109内の端末とは、GW型機器101及び102を中継して通信できる。暗号化/認証処理は、GW型機器101とGW型機器102との間を行き来するデータに対して実行される。すなわち、暗号化/認証処理は、この2つのGW型機器間で終端している。GW型機器101は、LAN108内の端末から受信するデータを暗号化/認証処理して対向するGW型機器102に送信し、またGW型機器102から受信する暗号化/認証処理後のデータを復号化/認証処理してLAN108内の端末に送出する。GW型機器102は、LAN109内の端末から受信するデータを暗号化/認証処理して対向するGW型機器101に送信し、またGW型機器101から受信する暗号化/認証処理後のデータを復号化/認証処理してLAN109内の端末に送出する。また、共有鍵の交換処理も、GW型機器101とGW型機器102との間で行われる。
一方、図1−Bでは、本発明の共有鍵交換方法は、ホスト型機器110及び111に実装されている。ホスト型機器111は、公衆網107を介してGW型機器101又はホスト型機器110と接続されている。また、GW型機器101は、上記と同様に、自分のLAN108内の端末103及び104とも接続されている。
ホスト型機器111とLAN108内の端末とは、GW型機器101を中継して通信できる。暗号化/認証処理は、ホスト型機器111とGW型機器101と間を行き来するデータに対して実行される。ホスト型機器111は、GW型機器101とは異なり、自分内部の発着データを自ら暗号化/認証処理する。さらに、ホスト型機器111は、同様の機能を持つホスト型機器110との間で、暗号化/認証処理済みのデータを通信できる。また、共有鍵の交換処理に関しては、ホスト型機器111とGW型機器101との間、及びホスト型機器111とホスト型機器110との間で、それぞれ独立して行われる。
次に、本発明の共有鍵交換方法が実装される機器の機能ブロックについて、図2−A及び図2−Bを参照して説明する。図2−Aは、図1−Aで説明したGW型機器102の機能ブロックの一例を示す図である。図2−Aにおいて、GW型機器102は、共有鍵交換部201と、データベース(DB)管理部202と、データベース(DB)部203と、暗号化/認証処理部204と、通信プロトコル処理部205及び206と、LANインタフェース(I/F)207と、WANインタフェース(I/F)208とを備える。図2−Bは、図2−Aの共有鍵交換部201の詳細な構成の一例を示すブロック図である。なお、図2−Bは、本実施形態で説明する全ての処理を表した機能ブロックである。よって、各実施形態で説明する機器A及び機器Bが構成に含む機能ブロック及びデータの流れは、その処理内容に応じてそれぞれ異なることになる。設定部は、演算所要時間の設定、小処理単位の設定等の各種の設定処理を主に行う。推定部は、演算所要時間の推定処理を主に行う。取得部は、演算や復号化によって公開値、共有鍵又は公開鍵を取得する取得処理を主に行う。判定部は、共有鍵交換処理について新規/更新を判定する判定処理を行う。これらの処理は、後で詳細に説明する。
GW型機器102は、WANインタフェース208を介して公衆網(WAN)に接続されており、他のGW型機器等と通信できる。また、GW型機器102は、LANインタフェース207を介してLANに接続されており、LAN内の端末等と通信できる。通信プロトコル処理部205及び206は、IPレイヤやTCPレイヤ等の通信プロトコルを処理する部分であり、LAN内の端末と公衆網を介した機器との間で送受信されるパケットのルーティング処理等も行う。
共有鍵交換部201は、本発明の共有鍵交換方法に基づく処理を行う構成部分である。共有鍵交換部201では、対向機器であるGW型機器101と鍵交換用の通信を行い、GW型機器101とセッション共有鍵を共有する。セッション共有鍵は、データベース管理部202を介してデータベース部203に記録される。
データベース部203は、暗号化/認証処理に用いるセッション共有鍵を保存する記録部であり、鍵だけでなく暗号アルゴリズム等の情報も保存する。データベース部203への情報の登録や削除等の処理は、データベース管理部202が行う。暗号化/認証処理部204は、データベース部203の鍵情報等を参照して、パケットの暗号化・復号化/認証(完全性チェック)の処理を行う。具体的には、暗号化/認証処理部204は、LANインタフェース207及び通信プロトコル処理部205を介して、LAN内の端末から平文の(暗号化されていない)送信パケットを受け取る。この送信パケットを受け取ると、暗号化/認証処理部204は、データの暗号化/認証処理用のデータ追加等の処理を行い、通信プロトコル処理部206及びWANインタフェース208を介して公衆網に送出する。従って、暗号化/認証処理部204以降の通信プロトコル処理部206及びWANインタフェース208を介して送信されるパケットは、暗号化済みとなる。また、公衆網側から到着した暗号化済みの受信パケットについては、上記とは逆の手順で、暗号化/認証処理部204で復号化処理を行い、LAN内の端末に対して平文のデータを送出する。
以下、本発明が提供する共有鍵交換方法の実施形態を、DH法による鍵交換処理に適用させた場合を一例に挙げて説明する。なお、各実施形態における機器A及び機器Bは、暗号化/認証処理と共有鍵交換処理とを実行する機器の組とする。具体的には、図1−AにおけるGW型機器101とGW型機器102との組、図1−BにおけるGW型機器101とホスト型機器111との組、又はホスト型機器110とホスト型機器111との組のいずれかに対応する。また、各実施形態の処理シーケンスで示す機器の処理は、図2−Aにおける共有鍵交換部201で行われる。
(第1の実施形態)
以下に説明する第1〜第9の実施形態は、発明が解決しようとする課題において説明した従来の共有鍵交換方法に残存する第1の課題を解決するための方法である。本発明では、第1の課題を解決するため、時間がかかる演算処理がある場合にその処理に関する応答待ち期限(タイムアウト時間)を延長する制御を行う。本発明は、鍵交換処理の手順に応じて最適な制御形態を実現することが可能であるが、その中で代表的な9つの制御形態を第1〜第9の実施形態で順に説明する。
以下に説明する第1〜第9の実施形態は、発明が解決しようとする課題において説明した従来の共有鍵交換方法に残存する第1の課題を解決するための方法である。本発明では、第1の課題を解決するため、時間がかかる演算処理がある場合にその処理に関する応答待ち期限(タイムアウト時間)を延長する制御を行う。本発明は、鍵交換処理の手順に応じて最適な制御形態を実現することが可能であるが、その中で代表的な9つの制御形態を第1〜第9の実施形態で順に説明する。
図3は、本発明の第1の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図3において、機器Bは、機器Aに比べて処理能力が劣っている(例えば、低い性能のCPUを搭載している)低性能の機器であるとする。また、機器A(イニシエータ)から鍵交換処理が開始されて、機器B(レスポンダ)との間で鍵の共有が実現されるものとする。さらに、機器A及び機器Bは、鍵交換処理を実行する前に、鍵交換処理の演算に用いられる変数g及び変数nの値を予め知っているものとする(ステップS301、S302)。
鍵交換処理を開始すると、機器Aは、まず自機器固有の秘密値aを生成する(ステップS303)。次に、機器Aは、この秘密値aと変数g及び変数nとを用い、上記式(1)の演算によって公開値Xを算出する(ステップS304)。そして、機器Aは、算出した公開値Xを機器Bに送信する(ステップS305)。ここまでの処理は、上述した従来の処理(図18のステップS1803〜S1805)と同様である。これらの処理は、機器A側の取得部及び送信部によって行われる(図2−Bを参照)。
機器Aから公開値Xを受信すると、機器Bは、上記式(2)の演算による公開値Yの算出にかかる時間Tb1(秘密値bの生成にかかる時間も含む)、及び上記式(3)の演算による共有鍵Kの算出にかかる時間Tb2を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tb(=Tb1+Tb2)を求める(ステップS306)。これらの処理は、機器B側の受信部及び推定部によって行われる(図2−Bを参照)。この演算所要時間Tbは、公開値の送信が遅延することに関する情報であり、低性能である機器Bが機器Aに対して公開値及び共有鍵の算出に所定以上の時間を要することを通知するための情報である。演算所要時間Tbは、例えば次のようにして求められる。事前に機器B上で、既知の変数g及び変数nによる公開値Y及び共有鍵Kの算出を試験的に実行しておき、その値Time[g,n]を保存しておく。そして、次式(6)のように、この値に予め定めておいた固定値αを加えたものを、演算所要時間Tbとして求める。固定値αは、機器Aと機器Bとの間で行われるメッセージ送受信による遅延時間と揺らぎを考慮した値である(以下の各実施形態において同じ)。
Tb=Time[g,n]+α …(6)
Tb=Time[g,n]+α …(6)
機器Bは、求めた演算所要時間Tbを機器Aに送信して、この演算所要時間Tbが経過するまでに公開値Yを応答することを機器Aに予告する(ステップS307)。この送信の後、機器Bは、自機器固有の秘密値bを生成する(ステップS308)、そして、機器Bは、この秘密値bと変数g及び変数nとを用い、上記式(2)の演算によって公開値Yを算出する(ステップS309)。さらに、機器Bは、公開値Xを用いて上記式(3)の演算によって共有鍵Kを算出する(ステップS310)。そして、機器Bは、算出した公開値Yを機器Aに送信する(ステップS312)。これらの処理は、機器B側の取得部及び送信部によって行われる(図2−Bを参照)。
機器Aは、機器Bから演算所要時間Tbを受信すると(ステップS307)、機器Bからの応答待ち期限(タイムアウト時間)を、この受信から演算所要時間Tbが経過した時点に延長して設定する(ステップS311)。すなわち、機器Aは、機器Bから公開値Yを受信できなかったという判断を、最大演算所要時間Tbが経過するまで待つようにする。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS312)、DH法による公開値の応答と判断する。従って、機器A側でも、秘密値a、変数n及び公開値Yを用い、上記式(4)の演算によって共有鍵Kを正しく計算することができ(ステップS313)、機器A及び機器Bの両方で鍵交換が成功する。これらの処理は、機器A側の設定部及び取得部によって行われる(図2−Bを参照)。
以上のように、本発明の第1の実施形態に係る共有鍵交換方法によれば、低性能の機器は、鍵交換処理に必要な演算所要時間を事前に推定し、応答メッセージの最大遅延時間を対向する機器に予告しておく。そして、予告を受けた機器は、受信した演算所要時間に従って、応答メッセージの有無を判断するタイムアウト時間を延長して設定する。これにより、いずれかの機器が低性能であっても、低性能の機器がまだ鍵交換処理の演算をしている間に対向する機器が応答なしと判断してしまうという従来の課題が生じないため、問題なく鍵交換を成功させることができる。
(第2の実施形態)
図4は、本発明の第2の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図4において、機器Aと機器Bとの関係は、上記第1の実施形態と同様である。また、図4のステップS401〜S404及びS407の処理は、上記図3のステップS301〜S305の処理と同様である。
図4は、本発明の第2の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図4において、機器Aと機器Bとの関係は、上記第1の実施形態と同様である。また、図4のステップS401〜S404及びS407の処理は、上記図3のステップS301〜S305の処理と同様である。
本第2の実施形態では、機器Bが、機器Aから公開値Xを受信するまでに秘密値bを生成し(ステップS405)、上記式(2)の演算によって公開値Yを算出している(ステップS406)。そして、機器Aから公開値Xを受信すると(ステップS407)、機器Bは、上記式(3)の演算による共有鍵Kの算出にかかる時間Tb2を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tb(=Tb2)を求める(ステップS408)。演算所要時間Tb2は、例えば上記式(6)の演算を利用して求めることができる。そして、機器Bは、求めた演算所要時間Tb2を機器Aに送信して、この演算所要時間Tb2が経過するまでに公開値Yを応答することを機器Aに予告する(ステップS409)。この送信の後、機器Bは、上記式(3)の演算によって共有鍵Kを算出し(ステップS410)、算出した公開値Yを機器Aに送信する(ステップS412)。
機器Aは、機器Bから演算所要時間Tb2を受信すると(ステップS409)、機器Bからの応答待ち期限(タイムアウト時間)を、この受信から演算所要時間Tb2が経過した時点に延長して設定する(ステップS411)。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS412)、DH法による公開値の応答と判断する。従って、機器A側でも共有鍵Kを正しく計算することができ(ステップS413)、機器A及び機器Bの両方で鍵交換が成功する。
以上のように、本発明の第2の実施形態に係る共有鍵交換方法によれば、低性能の機器は、自分の公開値の算出が、対向する機器の公開値を受信するまでに完了している場合には、共有鍵の算出に必要な時間だけを考慮した演算所要時間を事前に推定すれば、上記第1の実施形態と同様に、鍵交換を成功させることができる。
(第3の実施形態)
図5は、本発明の第3の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図5において、機器Aと機器Bとの関係は、上記第1の実施形態と同様である。また、図5のステップS501〜S505の処理は、上記図3のステップS301〜S305の処理と同様である。
図5は、本発明の第3の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図5において、機器Aと機器Bとの関係は、上記第1の実施形態と同様である。また、図5のステップS501〜S505の処理は、上記図3のステップS301〜S305の処理と同様である。
機器Aから公開値Xを受信すると(ステップS505)、機器Bは、上記式(2)の演算によって公開値Yの算出にかかる時間Tb1を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tb(=Tb1)を求める(ステップS506)。演算所要時間Tb1は、例えば上記式(6)の演算を利用して求めることができる。そして、機器Bは、求めた演算所要時間Tb1を機器Aに送信して、この演算所要時間Tb1が経過するまでに公開値Yを応答することを機器Aに予告する(ステップS507)。この送信の後、機器Bは、秘密値bを生成し(ステップS508)、上記式(2)の演算によって公開値Yを算出し(ステップS509)、算出した公開値Yを機器Aに送信する(ステップS511)。そして、公開値Yの送信の後に、機器Bは、上記式(3)の演算によって共有鍵Kを算出する(ステップS512)。
機器Aは、機器Bから演算所要時間Tb1を受信すると(ステップS507)、機器Bからの応答待ち期限(タイムアウト時間)を、この受信から演算所要時間Tb1が経過した時点に延長して設定する(ステップS510)。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS511)、DH法による公開値の応答と判断する。従って、機器A側でも共有鍵Kを正しく計算することができ(ステップS513)、機器A及び機器Bの両方で鍵交換が成功する。
以上のように、本発明の第3の実施形態に係る共有鍵交換方法によれば、低性能の機器は、算出後すぐに公開値を対向する機器へ送信する場合には、公開値の算出に必要な時間だけを考慮した演算所要時間を事前に推定すれば、上記第1の実施形態と同様に、鍵交換を成功させることができる。
(第4の実施形態)
上記第1〜第3の実施形態では、機器Aから機器Bに公開値Xが送信された後に、機器Bから機器Aに演算所要時間Tbが送信される基本手順を説明した。しかし、演算所要時間Tbが送信された後に、公開値Xが送信される応用手順であっても、同様の効果を得ることができる。以下、上記第1の実施形態で示した基本手順を、この応用手順に代えた実施形態を説明する。
上記第1〜第3の実施形態では、機器Aから機器Bに公開値Xが送信された後に、機器Bから機器Aに演算所要時間Tbが送信される基本手順を説明した。しかし、演算所要時間Tbが送信された後に、公開値Xが送信される応用手順であっても、同様の効果を得ることができる。以下、上記第1の実施形態で示した基本手順を、この応用手順に代えた実施形態を説明する。
図6は、本発明の第4の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図6において、機器Aと機器Bとの関係は、上記第1の実施形態と同様である。
鍵交換処理を開始すると、機器Aは、まず機器Bに対して演算所要時間の問い合わせを行う(ステップS601)。機器Aから問い合わせを受けると、機器Bは、公開値Yの算出にかかる時間Tb1及び共有鍵Kの算出にかかる時間Tb2を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tb(=Tb1+Tb2)を求める(ステップS602)。機器Bは、求めた演算所要時間Tbを機器Aに送信して、公開値Xを受信してからこの演算所要時間Tbが経過するまでに公開値Yを応答することを機器Aに予告する(ステップS603)。
機器Aは、機器Bから演算所要時間Tbを受信すると、秘密値aを生成し、上記式(1)の演算によって公開値Xを算出し、算出した公開値Xを機器Bに送信する(ステップS606〜S608)。また、機器Bは、機器Aから公開値Xを受信すると、秘密値bを生成し、上記式(2)及び式(3)の演算によって公開値Y及び共有鍵Kをそれぞれ算出し、算出した公開値Yを機器Aに送信する(ステップS609〜S611、S613)。機器Aは、機器Bから演算所要時間Tbを受信すると(ステップS603)、機器Bからの応答待ち期限(タイムアウト時間)を、公開値Xの送信時から演算所要時間Tbが経過した時点に延長して設定する(ステップS612)。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS613)、DH法による公開値の応答と判断する。
なお、この第4の実施形態では、上記第1の実施形態で示した基本手順を応用手順に代えた場合を説明したが、上記第2及び第3の実施形態についても同様に、基本手順を応用手順に代えることが可能である。すなわち、ステップS609及びS610をステップS608の前に実行してもよいし、ステップS611をステップS613の後に実行してもよい。また、第4の実施形態では、機器Bの演算所要時間だけを機器Aに通知する手順を説明したが、機器Aも演算所要時間を推定し、機器Aと機器Bとがお互いの演算所要時間を通知し合う手順にしてもよい。
(第5の実施形態)
上記第1〜第4の実施形態では、機器A及び機器Bの双方で変数g及び変数nの値が既知である場合を説明した。しかし、変数g及び変数nの値が、鍵交換処理の前にネゴシエーションされるような場合も考えられる。この場合において、上記第4の実施形態のように最初に演算所要時間の問い合わせが発生する手順であると、演算所要時間の推定方法が変わってくる。そこで、本第5の実施形態では、変数g及び変数nの値が未知であり、かつ最初に演算所要時間の問い合わせが発生する手順による共有鍵交換方法を説明する。
上記第1〜第4の実施形態では、機器A及び機器Bの双方で変数g及び変数nの値が既知である場合を説明した。しかし、変数g及び変数nの値が、鍵交換処理の前にネゴシエーションされるような場合も考えられる。この場合において、上記第4の実施形態のように最初に演算所要時間の問い合わせが発生する手順であると、演算所要時間の推定方法が変わってくる。そこで、本第5の実施形態では、変数g及び変数nの値が未知であり、かつ最初に演算所要時間の問い合わせが発生する手順による共有鍵交換方法を説明する。
図7は、本発明の第5の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図7において、機器Aと機器Bとの関係は、変数g及び変数nが未知であること以外は、上記第4の実施形態と同様である。
鍵交換処理を開始すると、機器Aは、まず機器Bに対して演算所要時間の問い合わせを行う(ステップS701)。機器Aから問い合わせを受けると、機器Bは、公開値Yの算出にかかる時間Tb1及び共有鍵Kの算出にかかる時間Tb2を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tb(=Tb1+Tb2)を求める(ステップS702)。この演算所要時間Tbは、例えば次のようにして求められる。事前に機器B上で、変数g及び変数nの取り得る値の様々な組み合わせによる演算を複数回試験的に実行しておき、その最大値Time_max_allを保存しておく。そして、次式(7)のように、この最大値に予め定めておいた固定値αを加えたものを、演算所要時間Tbとして求める。
Tb=Time_max_all+α …(7)
Tb=Time_max_all+α …(7)
機器Bは、求めた演算所要時間Tbを機器Aに送信して、公開値Xを受信してからこの演算所要時間Tbが経過するまでに公開値Yを応答することを機器Aに予告する(ステップS703)。機器Aは、機器Bから演算所要時間Tbを受信すると、変数g及び変数nを生成して機器Bに通知する(ステップS704、S705)。これに対して、機器Bは、機器Aから変数g及び変数nを取得して了解の応答を返送する(ステップS706、S707)。機器Aが、機器Bから変数g及び変数nについて了解の応答を受信した以降の処理(ステップS709〜S716)は、上記図6のステップS607〜S614と同様である。
以上のように、本発明の第5の実施形態に係る共有鍵交換方法によれば、演算所要時間の問い合わせ処理の後に変数g及び変数nの値がネゴシエーションされるような場合でも、最大の演算所要時間を推定することによって、問題なく鍵交換を成功させることができる。
なお、この第5の実施形態では、上記第4の実施形態(図6)で示した応用手順において変数g及び変数nの値がネゴシエーション場合を説明したが、第4の実施形態のなお書きで記載した応用手順についても、同様に適用させることが可能である。また、演算所要時間の取得処理(ステップS701〜S703)を、変数g及び変数nの取得処理(ステップS704〜S707)の後に行ってもよい。また、機器Aから機器Bへの変数g及び変数nの通知は、公開値Xの生成後に、ステップS710において公開値Xと同時に通知するようにしてもよい。
(第6の実施形態)
上記第2の実施形態(図4)では、機器Aによる公開値Xの算出と機器Bによる公開値Yの算出とが、並列的に行われる手順を説明した。しかしながら、この並列的手順の場合には、低性能である機器Bが、公開値Xを受信するまでに公開値Yの算出を完了していないことも考えられる。例えば、上記第5の実施形態で説明したように、鍵交換処理の前に変数g及び変数nの値がネゴシエーションされるような場合である。そこで、本第6の実施形態では、変数g及び変数nの値が未知である場合において、公開値X及び公開値Yの算出が並列的に行われ、かつ最初に演算所要時間の問い合わせが発生する手順による共有鍵交換方法を説明する。
上記第2の実施形態(図4)では、機器Aによる公開値Xの算出と機器Bによる公開値Yの算出とが、並列的に行われる手順を説明した。しかしながら、この並列的手順の場合には、低性能である機器Bが、公開値Xを受信するまでに公開値Yの算出を完了していないことも考えられる。例えば、上記第5の実施形態で説明したように、鍵交換処理の前に変数g及び変数nの値がネゴシエーションされるような場合である。そこで、本第6の実施形態では、変数g及び変数nの値が未知である場合において、公開値X及び公開値Yの算出が並列的に行われ、かつ最初に演算所要時間の問い合わせが発生する手順による共有鍵交換方法を説明する。
図8−A及び図8−Bは、本発明の第6の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図8−A及び図8−Bにおいて、機器Aと機器Bとの関係は、変数g及び変数nが未知であること以外は、上記第2の実施形態と同様である。
図8−Aにおいて、鍵交換処理を開始すると、機器Aは、まず機器Bに対して演算所要時間の問い合わせを行う(ステップS801)。機器Aから問い合わせを受けると、機器Bは、公開値Yの算出にかかる時間Tb1及び共有鍵Kの算出にかかる時間Tb2を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tb(=Tb1+Tb2)を求める(ステップS802)。この演算所要時間Tbは、例えば次のようにして求められる。事前に機器B上で、変数n及び変数gの取り得る値の様々な組み合わせによる演算を複数回試験的に実行しておき、公開値Yの算出に関する最大値Time_maxY_all及び共有鍵Kの算出に関する最大値Time_maxK_allを個別に保存しておく。そして、次式(8−1)及び式(9−1)のように、これらの最大値に予め定めておいた固定値αを加えたものを、それぞれ演算所要時間Tb1及びTb2として求め、それらを加算して演算所要時間Tbを求める。
Tb1=Time_maxY_all+α …(8−1)
Tb2=Time_maxK_all+α …(9−1)
Tb1=Time_maxY_all+α …(8−1)
Tb2=Time_maxK_all+α …(9−1)
機器Bは、求めた演算所要時間Tbを機器Aに送信して、演算所要時間Tbが経過するまでに公開値Yを応答することを機器Aに予告する(ステップS803)。機器Aは、機器Bから演算所要時間Tbを受信すると、変数g及び変数nを生成して機器Bに通知する(ステップS804、S805)。これに対して、機器Bは、機器Aから変数g及び変数nを取得して、了解の応答を返送する(ステップS806、S807)。その後、機器Bは、秘密値bを生成し、上記式(2)の演算によって公開値Yを算出する(ステップS811、S812)。
機器Aは、機器Bから変数g及び変数nについて了解の応答を受信すると、秘密値aを生成し、上記式(1)の演算によって公開値Xを算出する(ステップS808、S809)。そして、機器Aは、算出した公開値Xを機器Bに送信する(ステップS813)。公開値Xの受信後、機器Bは、共有鍵Kを算出した後、公開値Yを機器Aに送信する(ステップS814、S816)。
機器Aは、公開値Xを機器Bへ送信すると(ステップS813)、機器Bからの応答待ち期限(タイムアウト時間)を、公開値Xの送信時から演算所要時間Tbが経過した時点に延長して設定する(ステップS815)。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS816)、DH法による公開値の応答と判断する。従って、機器A側でも共有鍵Kを正しく計算することができ(ステップS817)、機器A及び機器Bの両方で鍵交換が成功する。
以上のように、本発明の第6の実施形態に係る共有鍵交換方法によれば、機器Aによる公開値Xの算出と機器Bによる公開値Yの算出とが、並列的に行われるような場合でも、確実に鍵交換処理を成功させることができる。
なお、この第6の実施形態による応用手順は、機器Aによる公開値Xの算出と機器Bによる公開値Yの算出とが並列的に行われる手順であれば適用可能である。従って、図8のステップS814をステップS816の後に実行してもよい。また、演算所要時間の取得処理(ステップS801〜S803)を、変数g及び変数nの取得処理(ステップS804〜S807)の後に行ってもよい。
また、図8−Bに示すように、機器Bでの共有鍵Kの算出処理(ステップS838)の前に、公開値Yの送信処理(ステップS836)を行ってもよい、この場合には、機器Bは、公開値Yの算出にかかる演算所要時間Tb1だけを推定して、機器Aに送信しておく(ステップS822、S823)。そして、機器Aは、公開値Xの送信後、機器Bからの応答待ち期限(タイムアウト時間)を、この送信から演算所要時間Tb1が経過した時点に延長して設定する(ステップS835)。この処理により、機器Aは、機器Bからの公開値Yを、タイムアウトを生じさせることなく受信することができる(ステップS836)。
(第7の実施形態)
現状のIKEでは、機器Bが公開値Yを機器Aに通知した時に、共有鍵Kの算出まで完了しているべきか否かの規定はなく、機器Bの共有鍵Kの算出完了を機器A側でタイムアウト時間を設けて待つような規定もない。しかし、上記第3の実施形態(図5)のように、低性能である機器Bが、公開値Yの送信後に共有鍵Kを時間をかけて生成するような場合、次のような問題が生じることがある。例えば、機器A側が、共有鍵Kを算出した後にデータを共有鍵Kで暗号化して送信した場合、機器Bで共有鍵Kの算出が完了していないと、機器Bは受信した暗号化データを廃棄してしまう場合があるという問題がある。また、機器Aが、共有鍵Kを算出した後に機器Bに何らかのメッセージを送信し、共有鍵Kを使用した応答を機器Bから待っている場合、機器Bで共有鍵Kの算出が遅れていると、機器Aでの応答待ちのタイムアウトが発生してしまうという問題がある。そこで、本第7の実施形態では、公開値Yの送信後に機器Bが共有鍵Kを生成するまでタイムアウト時間を設ける共有鍵交換方法を説明する。
現状のIKEでは、機器Bが公開値Yを機器Aに通知した時に、共有鍵Kの算出まで完了しているべきか否かの規定はなく、機器Bの共有鍵Kの算出完了を機器A側でタイムアウト時間を設けて待つような規定もない。しかし、上記第3の実施形態(図5)のように、低性能である機器Bが、公開値Yの送信後に共有鍵Kを時間をかけて生成するような場合、次のような問題が生じることがある。例えば、機器A側が、共有鍵Kを算出した後にデータを共有鍵Kで暗号化して送信した場合、機器Bで共有鍵Kの算出が完了していないと、機器Bは受信した暗号化データを廃棄してしまう場合があるという問題がある。また、機器Aが、共有鍵Kを算出した後に機器Bに何らかのメッセージを送信し、共有鍵Kを使用した応答を機器Bから待っている場合、機器Bで共有鍵Kの算出が遅れていると、機器Aでの応答待ちのタイムアウトが発生してしまうという問題がある。そこで、本第7の実施形態では、公開値Yの送信後に機器Bが共有鍵Kを生成するまでタイムアウト時間を設ける共有鍵交換方法を説明する。
図9−A及び図9−Bは、本発明の第7の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図9−A及び図9−Bにおいて、機器Aと機器Bとの関係は、上記第1の実施形態と同様である。また、図9−A及び図9−BのステップS901〜S905の処理は、上記図3のステップS301〜S305の処理と同様である。
機器Aから公開値Xを受信すると(ステップS905)、機器Bは、公開値Yの算出にかかる時間Tb1及び共有鍵Kの算出にかかる時間Tb2を推定し、鍵交換処理のために機器B側で必要とする演算所要時間Tb1及びTb2を求める(ステップS906)。この演算所要時間Tb1及びTb2は、上記式(8−2)及び式(9−2)に従って、既知の変数g及び変数nを用いた事前の試験的な公開値Y及び共有鍵Kの算出によって求められる。
Tb1=Time_maxY[g,n]+α …(8−2)
Tb2=Time_maxK[g,n]+α …(9−2)
Tb1=Time_maxY[g,n]+α …(8−2)
Tb2=Time_maxK[g,n]+α …(9−2)
そして、機器Bは、求めた演算所要時間Tb1及びTb2を機器Aに送信して、演算所要時間Tb1が経過するまでに公開値Yを応答すること、及びその応答からさらに演算所要時間Tb2が経過するまでに共有鍵Kの算出が完了することを機器Aに予告する(ステップS907)。その後、機器Bは、秘密値bを生成し、上記式(2)の演算によって公開値Yを算出し、算出した公開値Yを機器Aに送信する(ステップS908、S909、S911)。そして、機器Bは、公開値Yの送信の後に共有鍵Kを算出する(ステップS912)。
機器Aは、機器Bから演算所要時間Tb1及びTb2を受信すると(ステップS907)、機器Bからの応答待ち期限(タイムアウト時間)を、この受信から演算所要時間Tb1が経過した時点に延長して設定する(ステップS910)。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS911)、DH法による公開値の応答と判断し、自分の共有鍵Kを生成する(ステップS913)。
図9−Aの例は、暗号化データが廃棄される問題に対応した方法である。この方法では、機器Aは、共有鍵Kを生成した後は、公開値Yを受信した時点から演算所要時間Tb2の経過を待って、機器Bに暗号化されたデータを送信する(ステップS914、S915)。この処理により、機器B側で暗号化データが廃棄されることを回避できる。
図9−Bの例は、機器A側で応答待ちがタイムアウトする問題に対応した方法である。この方法では、機器Aは、共有鍵Kを生成した後に何らかのメッセージを送信した後、機器Bからの応答待ち期限(タイムアウト時間)を、この送信から演算所要時間Tb2が経過した時点に延長して設定する(ステップS924、S925)。この処理により、機器Aは、機器Bから応答メッセージを受信することができる(ステップS926)。
図9−Bの例は、機器A側で応答待ちがタイムアウトする問題に対応した方法である。この方法では、機器Aは、共有鍵Kを生成した後に何らかのメッセージを送信した後、機器Bからの応答待ち期限(タイムアウト時間)を、この送信から演算所要時間Tb2が経過した時点に延長して設定する(ステップS924、S925)。この処理により、機器Aは、機器Bから応答メッセージを受信することができる(ステップS926)。
以上のように、本発明の第7の実施形態に係る共有鍵交換方法によれば、機器Bによる共有鍵Kの算出が公開値Yの送信後に行われるような場合でも、確実に鍵交換処理を成功させることができる。
なお、この第7の実施形態による応用手順は、低性能である機器Bによる共有鍵Kの算出が公開値Yの送信後に行われる手順であれば適用可能である。従って、図9−A及び図9−BのステップS906及びS907をステップS901の前に実行してもよいし、それに加えてさらにステップS908及びS909をステップS905の前に実行してもよい。
(第8の実施形態)
上記第1〜第7の実施形態では、機器B(レスポンダ)側が低性能である場合を説明したが、本第8の実施形態では、鍵交換処理を開始する機器A(イニシエータ)が低性能である場合の共有鍵交換方法を説明する。
上記第1〜第7の実施形態では、機器B(レスポンダ)側が低性能である場合を説明したが、本第8の実施形態では、鍵交換処理を開始する機器A(イニシエータ)が低性能である場合の共有鍵交換方法を説明する。
図10−A及び図10−Bは、本発明の第8の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図10−A及び図10−Bにおいて、機器Aは、機器Bに比べて処理能力が劣っている低性能の機器であるとする。また、機器A(イニシエータ)から鍵交換処理が開始されて、機器B(レスポンダ)との間で鍵の共有が実現されるものとする。
まず、図10−Aにおいて、鍵交換処理を開始すると、機器Aは、上記式(1)の演算による公開値Xの算出にかかる時間Ta1(秘密値aの生成にかかる時間も含む)を推定し、鍵交換処理のために機器A側で必要とする演算所要時間Ta(=Ta1)を求める(ステップS1001)。この演算所要時間Ta1は、例えば次のようにして求められる。事前に機器A上で、変数g及び変数nの取り得る値の様々な組み合わせによる演算を複数回試験的に実行しておき、その最大値Time_max_allを保存しておく。そして、次式(10)のように、この最大値に予め定めておいた固定値αを加えたものを、演算所要時間Ta1として求める。
Ta1=Time_max_all+α …(10)
Ta1=Time_max_all+α …(10)
機器Aは、求めた演算所要時間Ta1を機器Bに送信して、この演算所要時間Ta1が経過するまでに公開値Xを送信することを機器Bに予告する(ステップS1002)。次に、機器Aは、変数g及び変数nを生成して機器Bに通知する(ステップS1003、S1004)。これに対して、機器Bは、機器Aから変数g及び変数nを取得して了解の応答を返送する(ステップS1005、S1006)。機器Bから変数g及び変数nについて了解の応答を受信すると、機器Aは、秘密値aを生成し、上記式(1)の演算によって公開値Xを算出し、算出した公開値Xを機器Bに送信する(ステップS1007、S1008、S1010)。
機器Bは、機器Aに変数g及び変数nについて了解の応答を送信すると(ステップS1006)、機器Aからの応答待ち期限(タイムアウト時間)を、この送信から演算所要時間Ta1が経過した時点に延長して設定する(ステップS1009)。すなわち、機器Bは、機器Aから公開値Xを受信できなかったという判断を、最大演算所要時間Taが経過するまで待つようにする。そして、機器Bは、タイムアウト時間までに機器Aから公開値Xを受信すると(ステップS1010)、秘密値bを生成し、上記式(2)及び式(3)の演算によって公開値Y及び共有鍵Kをそれぞれ算出する(ステップS1011〜S1013)。そして、機器Bは、算出した公開値Yを機器Aに送信する(ステップS1014)。
図10−Aの例は、共有鍵Kの算出に対してメッセージ送信が発生しない場合を示したものである。この例では、機器Aは、機器Bから公開値Yを受信すると(ステップS1014)、DH法による公開値の応答と判断する。従って、機器A側でも共有鍵Kを正しく計算することができ(ステップS1015)、機器A及び機器Bの両方で鍵交換が成功する。
次に、図10−Bの例は、共有鍵Kの算出に対してメッセージ送信が発生する場合を示したものであり、機器Aが、公開値Yの受信後に共有鍵Kを時間をかけて生成するような場合に生じる問題に対応させた方法である。すなわち、機器Bが、公開値Yを送信した後に機器Aから共有鍵Kの算出完了の通知を待っている場合である。
この場合には、機器Aは、演算所要時間Ta1と同様にして、上記式(4)の演算による共有鍵Kの算出にかかる演算所要時間Ta2をさらに推定し(ステップS1021)、演算所要時間Ta2も機器Bに送信しておく(ステップS1022)。機器Bは、公開値Yの送信後、機器Aからの応答待ち期限(タイムアウト時間)を、この送信から演算所要時間Ta2が経過した時点に延長して設定する(ステップS1034、S1036)。この処理により、機器Bは、機器Aからの共有鍵Kの算出完了の応答メッセージを、タイムアウトを生じさせることなく受信することができる(ステップS1037)。
この場合には、機器Aは、演算所要時間Ta1と同様にして、上記式(4)の演算による共有鍵Kの算出にかかる演算所要時間Ta2をさらに推定し(ステップS1021)、演算所要時間Ta2も機器Bに送信しておく(ステップS1022)。機器Bは、公開値Yの送信後、機器Aからの応答待ち期限(タイムアウト時間)を、この送信から演算所要時間Ta2が経過した時点に延長して設定する(ステップS1034、S1036)。この処理により、機器Bは、機器Aからの共有鍵Kの算出完了の応答メッセージを、タイムアウトを生じさせることなく受信することができる(ステップS1037)。
以上のように、本発明の第8の実施形態に係る共有鍵交換方法によれば、鍵交換処理を開始する機器側が低性能であっても、この機器がまだ鍵交換処理の演算をしている間に対向する機器が応答なしと判断してしまうという従来の課題が生じないため、問題なく鍵交換を成功させることができる。
なお、この第8の実施形態では、上記第5の実施形態(図7)で示した応用手順に対応させて鍵交換処理を開始する機器側が低性能である場合の手順を説明した。しかし、この手順は、低性能の機器側における公開値Xや共有鍵Kの算出の前に、対向する機器が演算所要時間を取得できる手順であれば(第6の実施形態等)、同様に適用させることが可能である。
また、第8の実施形態では、鍵交換処理を開始する機器A(イニシエータ)が低性能である場合の共有鍵交換方法を説明したが、機器A(イニシエータ)及び対向する機器Bの両方が低性能であることも考えられ、この場合には、上述した各実施形態を適宜組み合わせて実現することができる。
(第9の実施形態)
上記第1〜第8の実施形態では、低性能の機器が、演算所要時間という時間情報を対向する機器へ通知し、対向する機器が、通知に応じてタイムアウト時間を延長させる共有鍵交換方法を説明した。次に、本第9の実施形態では、演算所要時間の通知を行わない共有鍵交換方法を説明する。
上記第1〜第8の実施形態では、低性能の機器が、演算所要時間という時間情報を対向する機器へ通知し、対向する機器が、通知に応じてタイムアウト時間を延長させる共有鍵交換方法を説明した。次に、本第9の実施形態では、演算所要時間の通知を行わない共有鍵交換方法を説明する。
図11は、本発明の第9の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図11において、機器Aと機器Bとの関係は、上記第1の実施形態と同様である。また、図11のステップS1101〜S1105の処理は、上記図3のステップS301〜S305の処理と同様である。
機器Aから公開値Xを受信すると(ステップS1105)、機器Bは、後で公開値Yを送信することの通知を機器Aに応答する(ステップS1106)。この通知の後、機器Bは、秘密値bの生成を開始して、上記式(2)及び式(3)の演算によって公開値Yの算出及び共有鍵Kの算出(ステップS1107〜S1109)を順次実行する。またこの算出と並行して、機器Bは、公開値Yの算出及び共有鍵Kの算出が完了するまで、機器Aから後述する状況確認/再送要求を受けるたびに上記通知を行う(ステップS1111、S1113、S1115)。
機器Aは、機器Bから公開値Yを受信するまで(ステップS1116)、機器Bから後で公開値Yが送信されることの通知を受けるたびに(ステップS1106、S1111、S1113、S1115)、所定の再送間隔T[秒]で状況確認/再送要求を行う(ステップS1110、S1112、S1114)。具体的には、機器Aは、再送間隔T[秒]を所定のタイムアウト時間より短く設定し、機器Bから後で公開値Yが送信されることの通知を受けると、それまでの時間計測をリセットして新たに時間計測を開始することを行う。このように設定すれば、タイムアウトの発生はなくなる。又は、後で公開値Yが送信されることの通知を機器Bから一度受けると、機器Aが、再送間隔Tを設定せずに無限に公開値Yの受信を待ちつづける処理に切り替えるようにしてもよい。
そして、機器Aは、機器Bから公開値Yを受信すると(ステップS1116)、DH法による公開値の応答と判断する。従って、機器A側でも共有鍵Kを正しく計算することができ(ステップS1117)、機器A及び機器Bの両方で鍵交換が成功する。
以上のように、本発明の第9の実施形態に係る共有鍵交換方法によれば、低性能の機器において鍵交換処理に必要な演算所要時間を事前に推定することなく、鍵交換を成功させることができる。
なお、この第9の実施形態では、上記第1の実施形態による手順に、状況確認/再送要求及び後で公開値Yが送信されることの通知を適用させた場合を説明したが、第2〜第8の実施形態による手順に適用させても同様の効果を奏することができる。ここで、第3の実施形態(図5)等のように公開値Yの算出後(ステップS509)に直ちに公開値Yを送信する(ステップS511)場合には、公開値Yを受信した機器Aは、その後機器Bに対して、共有鍵Kの算出が完了したかどうかの状況確認を行い、これに対して機器Bは、共有鍵Kの演算中であることを機器Aに回答すればよい。
また、図11のステップS1105及びS1106において、送受信の失敗(パケットロス)が起きることもある。よって、機器Aが、後で公開値Yが送信されることの通知(ステップS1106)を待つことなく、公開値Xの送信後(ステップS1105)に直ちに再送間隔Tの時間計測を開始するようにしてもよい。
なお、上記第1〜第9の実施形態では、DH法の鍵交換時に使用する演算が、離散対数問題を利用したべき乗演算/モジュロ演算である場合を説明したが、本発明の適用範囲はこの演算に限定されるものではない。例えば、DH法の変形として、楕円曲線に基づく数学的集合を用いた演算方法を用いてもよい。また、DH法に関する演算所要時間の推定方法として、事前に計算した結果を保存しておく方法を説明したが、この方法に限定するものではない。例えば、その時点のCPU使用率を測定し、CPU使用率が他のアプリケーション等の実行によって高い場合には、演算所要時間を長く推定してもよい。さらに、複数の機器との間の鍵交換が同時期に集中する可能性がある場合には、複数のDH法の処理がキューに溜まる可能性がある。そのため、DH法の処理待ちキュー等を設け、処理順番に応じて演算所要時間を長く推定してもよい。
また、上記第1〜第9の実施形態で説明した処理シーケンスでは、本発明の適用をDH法の演算と公開値のやり取りの部分に限定して説明したが、その他のDH法を利用する鍵交換プロトコル部分に適用してもよい。例えば、図19で説明したように、IKEのシーケンスでは2箇所(Phase1、2)でDH法の鍵交換を利用しているが、各実施形態で説明したメッセージを、IKEのその他のメッセージと連携させて実行してもよい。具体的には、図6のステップS601及びS603で行っている演算所要時間Tbの問い合わせ及び通知は、IKEのPhase1の各種パラメータの折衝(図19のステップS1901)の中で行ってもよい。
また、上記第1〜第9の実施形態では、高性能である機器が、低性能である機器側から演算所要時間の通知又は後で応答を送信することの通知を受ける場合を説明した。しかし、高性能である機器は、低性能である機器側からこのような通知を受けることなく、低性能である機器からの応答待ち期限(タイムアウト時間)の制御を行うことも可能である。以下に、この方法について説明する。
この方法では、高性能である機器が、低性能である機器へ所定のメッセージ(公開値の送信等)を送信してから、低性能である機器から応答を受信するまでの時間を計測することを行う。具体例としては、高性能である機器が、低性能である機器へ所定のメッセージを送信するときに、メッセージ送信時刻T1、低性能である機器を特定する情報(IPアドレス等)、及び処理中の鍵交換の種類を特定する情報(識別ID等)を、鍵交換情報として記録しておく。その後、高性能である機器が、低性能である機器から応答メッセージを受信したときのメッセージ受信時刻T2を取得する。高性能である機器は、応答メッセージに含まれる鍵交換情報を抽出して、予め記録しておいた対応する鍵交換情報の時刻T1を用いて、時間(T1−T2)を算出して記録しておく。この時間(T1−T2)の算出は、応答メッセージの受信期限を満了した後(タイムアウトして鍵交換が失敗した場合)でも行われる。そして、高性能である機器は、以降に同じ種類の鍵交換処理を実行する場合には、この算出した時間(T1−T2)に基づいてタイムアウト時間を設定する。
なお、この方法では、時間(T1−T2)を算出するまでの間は、予め定められているタイムアウト時間のデフォルト値によって交換処理が失敗する場合もあるが、次回から失敗しないようにタイムアウト時間を調整することができる。なお、失敗するのを避けたい場合には、タイムアウト時間のデフォルト値を十分に大きく設定しておけばよい。また、最初に算出した時間(T1−T2)を継続して使用してもよいし、鍵交換処理を行う毎に上述した計測を行って更新していってもよい。また、算出した時間(T1−T2)を必ず使用する必要がなく、デフォルト値よりも長い場合にだけタイムアウト時間を調整してもよい。さらに、算出した時間(T1−T2)がデフォルト値よりも短い場合には、タイムアウト時間を短縮してもよい。
この方法であると、既存の鍵交換プロトコルとの互換性があるため、1つの通信機器だけに本発明を実装させるだけで(もう一方の通信機器は既存の機器を使っても)、タイムアウトによる鍵交換失敗の問題を防ぐことができる。
(第10の実施形態)
以下に説明する第10及び第11の実施形態は、上述した第1の課題を解決すると共に第2の課題をも解決するための方法である。本発明では、第2の課題を解決するためにリキー処理(後述する)の開始タイミングを制御することを行っており、鍵交換処理の開始以前に演算所要時間のやり取りが行われる手順(第4の実施形態等)に適用可能である。その中で特徴的な2つの制御形態を、第10及び第11の実施形態によって説明する。
以下に説明する第10及び第11の実施形態は、上述した第1の課題を解決すると共に第2の課題をも解決するための方法である。本発明では、第2の課題を解決するためにリキー処理(後述する)の開始タイミングを制御することを行っており、鍵交換処理の開始以前に演算所要時間のやり取りが行われる手順(第4の実施形態等)に適用可能である。その中で特徴的な2つの制御形態を、第10及び第11の実施形態によって説明する。
実施形態の説明に先立って、リキー処理の概要を図12を参照して説明する。
背景技術でも述べたように、同じ共有鍵を長時間にわたって使用すると、その間に共有鍵が第三者によって解読されることが全く無いとは言えない。そこで、これに対応するために、作成する共有鍵に寿命を設定する。そして、現在使用中の共有鍵の寿命が満了になる前に所定のリキー処理によって次の新しい共有鍵を作成し、使用中の共有鍵の寿命が満了する前にこの新しい共有鍵に切り替えることを行う。本第10の実施形態では、このリキー処理の完了時刻(t_end)が、現在使用中の共有鍵の寿命満了時刻(end)よりも前になるように、リキー処理の開始時刻(t_start)を算出し、リキー処理を開始する方法である。なお、本発明を実現するためには、鍵寿命が、リキー処理の開始から完了までに必要な時間(処理手順に応じて、上述した演算所要時間Ta1、Ta2、Tb1及びTb2のいずれか又は組み合わせで定まる)以上に設定されている必要がある。この鍵寿命の設定は、一般的に図19の各種パラメータの折衝処理(ステップS1901)において行われる。
背景技術でも述べたように、同じ共有鍵を長時間にわたって使用すると、その間に共有鍵が第三者によって解読されることが全く無いとは言えない。そこで、これに対応するために、作成する共有鍵に寿命を設定する。そして、現在使用中の共有鍵の寿命が満了になる前に所定のリキー処理によって次の新しい共有鍵を作成し、使用中の共有鍵の寿命が満了する前にこの新しい共有鍵に切り替えることを行う。本第10の実施形態では、このリキー処理の完了時刻(t_end)が、現在使用中の共有鍵の寿命満了時刻(end)よりも前になるように、リキー処理の開始時刻(t_start)を算出し、リキー処理を開始する方法である。なお、本発明を実現するためには、鍵寿命が、リキー処理の開始から完了までに必要な時間(処理手順に応じて、上述した演算所要時間Ta1、Ta2、Tb1及びTb2のいずれか又は組み合わせで定まる)以上に設定されている必要がある。この鍵寿命の設定は、一般的に図19の各種パラメータの折衝処理(ステップS1901)において行われる。
図13は、本発明の第10の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図13において、機器Bは、機器Aに比べて処理能力が劣っている低性能の機器であるとする。また、機器A(イニシエータ)からリキー処理が開始されて、機器B(レスポンダ)との間で新たな鍵の共有が実現されるものとする。さらに、機器A及び機器Bは、リキー処理を実行する前に、リキー処理の演算に用いられる変数g及び変数nの値を予め知っているものとする(ステップS1306、S1307)。
リキー処理を開始するにあたり、機器Aは、まず機器Bに対して演算所要時間の問い合わせを行う(ステップS1301)。これと共に、機器Aは、公開値Xの算出にかかる時間Ta1及び共有鍵Kの算出にかかる時間Ta2を推定し、リキー処理のために機器A側で必要とする演算所要時間Ta(Ta1及びTa2)を求める(ステップS1302)。この演算所要時間Tb1及びTb2は、例えば次のようにして求められる。事前に機器A上で、変数g及び変数nの取り得る値の様々な組み合わせによる演算を複数回試験的に実行しておき、公開値Xの算出に関する最大値Time_maxX_all及び共有鍵Kの算出に関する最大値Time_maxK_allを個別に保存しておく。そして、次式(11)及び式(12)のように、これらの最大値に予め定めておいた固定値αを加えたものを、それぞれ演算所要時間Ta1及びTa2として求める。
Ta1=Time_maxX_all+α …(11)
Ta2=Time_maxK_all+α …(12)
Ta1=Time_maxX_all+α …(11)
Ta2=Time_maxK_all+α …(12)
一方、機器Aから問い合わせを受けた機器Bは、公開値Yの算出にかかる時間Tb1及び共有鍵Kの算出にかかる時間Tb2を推定し、リキー処理のために機器B側で必要とする演算所要時間Tb(Tb1及びTb2)を求める(ステップS1303)。この演算所要時間Tb1及びTb2は、例えば上記式(8−1)及び式(9−1)によって求められる。そして、機器Bは、求めた演算所要時間Tb1及びTb2を機器Aに送信する(ステップS1304)。
機器Aは、機器Bから演算所要時間Tb1及びTb2を受信すると(ステップS1304)、演算所要時間Tb1及びTb2と自分の演算所要時間Ta1及びTa2とに基づいて、次式(13)を満足する任意のリキー処理の開始時刻t_startを算定する(ステップS1305)。
t_start<end−(Ta1+Ta2+Tb1+Tb2)−α …(13)
t_start<end−(Ta1+Ta2+Tb1+Tb2)−α …(13)
ここで、endは、現在使用中の共有鍵の寿命満了時刻であり、一般的には機器Aと機器Bと同じ時刻に設定される。しかし、この時刻が異なることがまれにあり、その場合には機器Aにおける鍵の寿命満了時刻t_endAと、機器Bにおける鍵の寿命満了時刻t_endBとの差の絶対値分(|t_endB−t_endA|)だけ計算値に余裕を加えればよい。一般的には、秘密値、公開値及び共有鍵の演算に要する時間の数倍から10倍以上の時間を鍵寿命に設定する場合が多いので、ほとんど問題は生じない。
このため、機器Aは、演算所要時間の問い合わせを、ステップS1301〜S1305の処理に必要な時間(t_AB)を見込んで早めに開始しなければならないことになる。これを実現するためには、現在の共有鍵を生成した直後に、ステップS1301〜S1305を実行して、次のリキー処理の開始時刻t_startを予め算定しておけばよい。そして、時刻(t_start−t_AB)が来たら、ステップS1301〜S1305を再度実行して、その時の最新の演算所要時間を問い合わせて、開始時刻t_startを算定し直すようにしてもよい。
機器Aは、算定された開始時刻t_startが来るとリキー処理を開始する。まず、機器Aは、秘密値aを生成し、上記式(1)の演算によって公開値Xを算出し、算出した公開値Xを機器Bに送信する(ステップS1308〜S1310)。一方、機器Bは、機器Aから公開値Xを受信すると、秘密値bを生成し、上記式(2)及び式(3)の演算によって公開値Yを算出及び新たな共有鍵Kを算出する(ステップS1311〜S1313)。そして、機器Bは、算出した公開値Yを機器Aに送信する(ステップS1315)。
機器Aは、機器Bから受信した演算所要時間Tbに基づいて、機器Bからの応答待ち期限(タイムアウト時間)を、公開値Xの送信から演算所要時間Tb(=Tb1+Tb2)が経過した時点に延長して設定する(ステップS1314)。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS1315)、DH法による公開値の応答と判断する。従って、機器A側でも新たな共有鍵Kを正しく計算することができ(ステップS1316)、現在使用中の共有鍵の寿命が満了になる前(t_end)に、機器A及び機器Bの両方で新たな鍵交換、すなわちリキー処理が成功する。これ以降は、この新しい共有鍵Kが使用される。
以上のように、本発明の第10の実施形態に係る共有鍵交換方法によれば、各機器において鍵交換処理に必要な演算所要時間を事前に推定し、一方の機器がこの推定値に基づいてリキー処理の開始時刻を算定する。これにより、現在使用中の共有鍵の寿命が満了になる前に、リキー処理を成功させることができる。
なお、演算所要時間Ta1による公開値Xの演算(ステップS1308、S1309)と演算所要時間Tb1による公開値Yの演算(ステップS1311、S1312)とが並列的に行われる場合には、上記式(13)に代えて次式(14)を用いることができる。なお、MAX(Ta1、Tb1)は、Ta1とTb1の大きい方の値を示す。
t_start<end−MAX(Ta1、Tb1)
−(Ta2+Tb2)−α …(14)
t_start<end−MAX(Ta1、Tb1)
−(Ta2+Tb2)−α …(14)
また、演算所要時間Ta2による共有鍵Kの演算(ステップS1316)と演算所要時間Tb2による共有鍵Kの演算(ステップS1313)とが並列的に行われる場合には、上記式(13)に代えて次式(15)を用いることができる。なお、MAX(Ta2、Tb2)は、Ta2とTb2の大きい方の値を示す。
t_start<end−(Ta1+Tb1)
−MAX(Ta2、Tb2)−α …(15)
t_start<end−(Ta1+Tb1)
−MAX(Ta2、Tb2)−α …(15)
また、上記公開値の演算と共有鍵の演算との両方が並列的に行われる場合には、次式(16)を用いることができる。
t_start<end−MAX(Ta1、Tb1)
−MAX(Ta2、Tb2)−α …(16)
t_start<end−MAX(Ta1、Tb1)
−MAX(Ta2、Tb2)−α …(16)
(第11の実施形態)
図14は、本発明の第11の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図14において、機器Bは、機器Aに比べて処理能力が劣っている低性能の機器であるとする。この第11の実施形態では、それぞれの機器が自分の演算所要時間だけに基づいて、リキー処理の開始時刻t_startを推定する。従って、低性能の機器が、結果的にリキー処理のイニシエータになる。
図14は、本発明の第11の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図14において、機器Bは、機器Aに比べて処理能力が劣っている低性能の機器であるとする。この第11の実施形態では、それぞれの機器が自分の演算所要時間だけに基づいて、リキー処理の開始時刻t_startを推定する。従って、低性能の機器が、結果的にリキー処理のイニシエータになる。
機器Aは、公開値Xの算出にかかる時間Ta1及び共有鍵Kの算出にかかる時間Ta2を推定し、リキー処理のために機器A側で必要とする演算所要時間Ta(Ta1及びTa2)を求める(ステップS1401)。この演算所要時間Ta1及びTa2は、例えば上記式(11)及び式(12)によって求められる。また、機器Bは、公開値Yの算出にかかる時間Tb1及び共有鍵Kの算出にかかる時間Tb2を推定し、リキー処理のために機器B側で必要とする演算所要時間Tb(Tb1及びTb2)を求める(ステップS1402)。この演算所要時間Tb1及びTb2は、例えば上記式(8−1)及び式(9−1)によって求められる。
機器Aは、推定した演算所要時間Ta1及びTa2に基づいて、次式(17)を満足する任意のリキー処理の開始時刻t_startAを算定する(ステップS1403)。また、機器Bは、推定した演算所要時間Tb1及びTb2に基づいて、次式(18)を満足する任意のリキー処理の開始時刻t_startBを算定する(ステップS1404)。この式(17)及び式(18)では、対応する機器が同一の性能である場合を仮定しており、各式の右辺において演算所要時間をそれぞれ2倍にしている。なお、上述したように鍵の寿命満了時刻が機器Aと機器Bとで異なる場合には、式(17)及び式(18)の「end」をそれぞれ「end_A」及び「end_B」として演算すればよい。
t_startA<end−(Ta1+Ta2)×2−α …(17)
t_startB<end−(Tb1+Tb2)×2−α …(18)
t_startA<end−(Ta1+Ta2)×2−α …(17)
t_startB<end−(Tb1+Tb2)×2−α …(18)
この例では、機器Bが機器Aよりも低性能であるので、通常上記式(17)の右辺よりも式(18)の右辺の方が早い時間となる。従って、この場合、開始時刻t_startBが来ると、機器Bによってリキー処理が開始される。機器Bは、変数g及び変数nを生成して機器Aに通知し、リキー処理を開始したことを宣言する(ステップS1405、S1406)。この宣言によって、機器Aは、算定した自分のリキー処理の開始時刻t_startAに拘束されることなく各処理ステップを行うこととなる。機器Aは、機器Bから変数g及び変数nを取得して了解の応答を返送する(ステップS1407、S1408)。機器Aから変数g及び変数nについて了解の応答を受信すると、機器Bは、秘密値bを生成し、上記式(2)の演算によって公開値Yを算出し、算出した公開値Yを機器Aに送信する(ステップS1407、S1408、S1410)。なお、新たな変数g及び変数nを使用しない(前の数値を使用する)場合は、リキー処理開始の通知とその了解の応答を行うだけでよい。
機器Aは、機器Bに変数g及び変数nについて了解の応答を送信すると(ステップS1408)、機器Bからの応答待ち期限(タイムアウト時間)を、この送信から演算所要時間Tb1が経過した時点に延長して設定する(ステップS1411)。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS1412)、秘密値aを生成し、上記式(1)及び式(4)の演算によって公開値X及び共有鍵Kを算出し、算出した公開値Xを機器Bに送信する(ステップS1411〜S1414)。
機器Bは、機器Aから公開値Xを受信すると、DH法による公開値の応答と判断する。従って、機器B側でも共有鍵Kを正しく計算することができ(ステップS1415)、現在使用中の共有鍵の寿命が満了になる前に、機器A及び機器Bの両方で新たな鍵交換、すなわちリキー処理が成功する。これ以降は、この新しい共有鍵Kが使用される。
以上のように、本発明の第11の実施形態に係る共有鍵交換方法によれば、各機器において鍵交換処理に必要な演算所要時間を事前に推定し、各々の機器がこの推定値に基づいてリキー処理の開始時刻を算定して、開始時刻が早い機器が処理を開始する。これにより、お互いに対向する機器の演算所要時間を知ることなく、現在使用中の共有鍵の寿命が満了になる前に、リキー処理を成功させることができる。
なお、演算所要時間の推定は、機器A及び機器Bにおいて現在使用中又は過去に使用した鍵交換処理時に行った処理時間、又はCPU負荷値を所定の記憶部(図2のデータベース部203)にそれぞれ記憶しておき、その数値に基づいて行ってもよい。また、演算所要時間は、図14のステップS1401及びS1402の推定処理時における機器A及び機器Bの各CPU負荷値と、上記処理時間又はCPU負荷値とから推定してもよい。
なお、これまで鍵の寿命が時間の単位で規定されることを前提に説明してきたが、時間以外の単位で鍵の寿命を規定するシステムもある。例えば、鍵を使って暗号化したパケットのバイト数(累積数)の上限を設け、バイト数単位で鍵の寿命を規定するシステムである。この場合、寿命満了時刻をバイト数から推定し、上述した処理によってリキー処理の開始時刻を決定できる。具体的には、過去の履歴から、単位時間当たりの暗号通信パケットの送受信バイト数を求め、鍵の寿命のバイト数分だけ送受信にかかる時間を求め、寿命満了時刻として推定する。
(第12の実施形態)
以下に説明する第12の実施形態は、上述した第1及び第2の課題を解決すると共に第3の課題をも解決するための方法である。本発明では、第3の課題を解決するために、リキー処理の場合に限り、時間がかかる演算処理を負荷分散させることを行う。本発明は、上記第10及び第11の実施形態と同様に、鍵交換処理の開始以前に演算所要時間のやり取りが行われる手順に適用可能である。本第12の実施形態では、代表的な制御形態を説明する。
以下に説明する第12の実施形態は、上述した第1及び第2の課題を解決すると共に第3の課題をも解決するための方法である。本発明では、第3の課題を解決するために、リキー処理の場合に限り、時間がかかる演算処理を負荷分散させることを行う。本発明は、上記第10及び第11の実施形態と同様に、鍵交換処理の開始以前に演算所要時間のやり取りが行われる手順に適用可能である。本第12の実施形態では、代表的な制御形態を説明する。
まず、第12の実施形態で行う制御の概念を説明する。上記解決しようとする課題において、ネット家電のように低性能の機器で、DH法等の高負荷な演算処理を実行すると、他のアプリケーションの実行に影響を与えると述べた。しかし、これはDH法の演算処理を連続させて行う場合の話であり、実際の鍵交換処理は、常に連続実行させて最短時間で完了させる必要はない。具体的には、パケット通信を行う端末の要請等により鍵を新規に交換する場合には、鍵交換の遅延時間が端末のアプリケーションでの遅延としてユーザに知覚されてしまうので、できるだけ早く鍵交換を完了させる必要がある。一方、一旦鍵を交換した後で定期的に鍵を更新するリキー処理の場合は、現在の鍵を使用した通信を行いながら新しい鍵の交換を行うので、寿命満了までに完了すれば、鍵交換処理の開始から完了までの時間は長くてもよい。このことから、第12の実施形態では、鍵交換処理を最短時間で完了させるべきか否かを判定し、最短時間による処理が必要とされないリキー処理の場合は、高負荷の処理を小単位に分けて実行し、時間的に負荷分散させることを行う。
図15は、本発明の第12の実施形態に係る共有鍵交換方法を説明するための処理シーケンス図である。図15において、機器Bは、機器Aに比べて処理能力が劣っている低性能の機器であるとする。また、機器A(イニシエータ)から鍵交換処理が開始されて、機器B(レスポンダ)との間で鍵の共有が実現されるものとする。さらに、機器A及び機器Bは、鍵交換処理を実行する前に、鍵交換処理の演算に用いられる変数g及び変数nの値を予め知っているものとする(ステップS1506、S1507)。
まず、低性能である機器Bでは、事前に、DH法の公開値Y及び共有鍵Kの演算に伴う全処理を、複数の均等な処理単位(以下、小処理単位と呼ぶ)に分けておく。さらに、所定の単位時間に1小処理単位を実行した時のCPU使用率(Ucpu)を実測した結果を記録しておくものとする。また、機器Bが行うべき全ての小処理単位の数をTotalとする。さらに、機器Aと機器Bとの間で現在共有している鍵の寿命が、時刻endで満了することが分かっているものとする。
図15において、機器Aは、機器Bに鍵更新時の演算所要時間を問い合わせる(ステップS1501)。この問い合わせのタイミングは、時刻endから十分余裕を持ったタイミングで行うのが好ましく、新たに鍵交換処理を開始する時点でもよいし、鍵交換が完了した定常状態中であってもよい。機器Bは、機器Aから演算所要時間の問い合わせを受けると、その時点における他のアプリケーションの平均的なCPU使用率(Acpu)を測定する。そして、機器Bは、他のアプリケーションの処理を維持したまま、DH法の演算に使用できる残りのCPU使用率(Dcpu)、及び単位時間に実行可能な小処理単位の数numを推定し、次式(19)〜式(21)の演算によって演算所要時間Tbbを求める(ステップS1503)。
Dcpu=100−Acpu …(19)
num=Dcpu/Ucpu …(20)
Tbb=Total×Ucpu/Dcpu+α …(21)
機器Bは、求めた演算所要時間Tbbを、機器Aに送信する(ステップS1504)。
Dcpu=100−Acpu …(19)
num=Dcpu/Ucpu …(20)
Tbb=Total×Ucpu/Dcpu+α …(21)
機器Bは、求めた演算所要時間Tbbを、機器Aに送信する(ステップS1504)。
一方、機器A側でも、上記式(19)〜式(21)の演算に準じて、自分のDH法に伴う演算所要時間Taaを求めておく(ステップS1502)。そして、機器Aは、機器Bから演算所要時間Tbbを受信すると、演算所要時間Tbbと演算所要時間Taaとに基づいて、次式(22)を満足する鍵交換処理の開始時刻t_startを算定する(ステップS1505)。
t_start<end−(Taa+Tbb) …(22)
この算出が終わると、機器Aは、開始時刻t_startが到来するまで待機し、到来した時点で秘密値aを生成し、上記式(1)の演算によって公開値Xを算出し、算出した公開値Xを機器Bに送信する(ステップS1508〜S1510)。
t_start<end−(Taa+Tbb) …(22)
この算出が終わると、機器Aは、開始時刻t_startが到来するまで待機し、到来した時点で秘密値aを生成し、上記式(1)の演算によって公開値Xを算出し、算出した公開値Xを機器Bに送信する(ステップS1508〜S1510)。
機器Bは、機器Aから公開値Xを受信すると、その公開値Xに基づいてすでに存在する鍵の更新が要されているのか、新規に鍵を作成することが要求されているのかを判定する(ステップS1511)。具体的には、機器Bは、鍵の情報を記憶してデータベース(図2中のデータベース部203に対応)を検索し、対応する鍵が存在する場合は「更新」、存在しない場合は「新規作成」と判定する。この処理は、機器B側の判定部によって行われる(図2−Bを参照)。機器Bは、判定結果に応じて以後のDH法の演算の実行方法を変える。すなわち、鍵の「新規作成」と判定された場合には、機器Bとしての最短の時間で実行し、「鍵の更新」と判定された場合には、機器Aに通知した演算所要時間Tbbの時間をかけてゆっくり処理する。図15の処理シーケンスでは、要求が「鍵の更新」と判定された場合を示しており、機器Bは、単位時間当たりに、Dcpu/Ucpu個の小処理単位を実行し、演算所要時間Tbbの時間をかけて公開値Yを算出し、機器Aに送信する(ステップS1512〜1514)。
一方、機器Aは、機器Bからの応答待ち期限(タイムアウト時間)を、公開値Xの送信から演算所要時間Tbbが経過した時点に延長して設定する(ステップS1515)。そして、機器Aは、タイムアウト時間までに機器Bから公開値Yを受信すると(ステップS1516)、上記式(4)の演算によって新たな共有鍵Kを算出する(ステップS1517)。
以上のように、本発明の第12の実施形態によれば、鍵交換処理を最短時間で完了させるべきか否かを判定し、最短で完了させる必要がない鍵更新のような処理に限定して、鍵交換処理に伴う高負荷の演算を時間的に負荷分散させる。これにより、低性能の機器でも、鍵交換の処理が長期間にわたってCPUを占有することがなくなり、同じCPU上で動作する他のアプリケーションも正しく動作できるようになる。さらに、高負荷の演算を時間的に負荷分散する際に鍵の寿命を考慮することで、鍵交換の処理遅延時間が通常より長くなっても、現在行っている暗号化/認証処理等による通信を問題なく継続できる。なお、対向する機器への応答として公開値を送信するまでの遅延時間が長くなるが、鍵更新のように鍵交換の処理遅延の長さがユーザのパケット送受信に影響を与えないので、特に問題とはならない。
なお、一例として、機器Bにおいて、DH法の演算に必要なCPUの処理量がIm=200MI(MI=メガインストラクション)であり、複数の均等な処理単位、すなわち小処理単位として2MIに分ける場合、Totalの値は100(処理単位)である。機器BのCPUの処理能力が100MIPS(MIPS=MI/秒)の場合、小処理単位の2MIを単位時間の間に実行する時のCPU使用率Ucpuは、2%である。機器BのCPUの処理能力を他のアプリケーションに50MIPSだけ使用する場合、残りCPU使用率Dcpuは、50%である。従って、単位時間に実行可能なDH法の処理単位数Dcpu/Ucpuは、25(処理単位/秒)である。よって、Total×Ucpu/Dcpuは、100/25=4秒になる。20%の揺らぎなどの余裕を見込めば、遅延時間は、4.8秒とすればよい。
また、処理の負荷分散を効率よく行える方法を以下に説明する。
この方法では、鍵交換が終了したら、機器A及び機器Bは、可能な限り速やかに次の鍵更新処理に入る。まず、機器Bは、CPU使用量Imの推定を行う(ステップS1503)。CPU使用量Imは、例えば、機器Bが実施した鍵の作成処理の実行命令数(単位:MI)で表すことができる。前回のCPU使用量Imを記憶しておいて、その値を使用してもよい。機器Aは、現在時刻から鍵の寿命満了時刻(end)までの残り時間から演算所要時間Taaを差し引いた時間TWbを求め(ステップS1505)、これを機器Bへの割り当て時間TWbとして公開値Xと共に機器Bに通知する(ステップS1510)。機器Bは、単位時間当たりのCPU使用率(Im/TWb+β)をCPUに割り当てて(ステップS1511)、秘密値bの生成、公開値Yの演算及び共有鍵Kの演算を行う(ステップS1512〜S1514)。βは、処理の揺らぎや前後に必要な処理を行うための余裕分である。一般的に、時間TWbを大きくすれば、単位時間当たりのCPU使用率(Im/TWb+β)を、100%より十分小さい値にすることができる。そうすれば、残ったCPU使用率の部分を、鍵交換処理以外のアプリケーションに割り振る余裕ができる。演算所要時間Tbbの代わりに、機器B用の割り当て時間TWb+αが、タイムアウト待ち時間として設定される。この場合、ステップS1501は不要になる。
この方法では、鍵交換が終了したら、機器A及び機器Bは、可能な限り速やかに次の鍵更新処理に入る。まず、機器Bは、CPU使用量Imの推定を行う(ステップS1503)。CPU使用量Imは、例えば、機器Bが実施した鍵の作成処理の実行命令数(単位:MI)で表すことができる。前回のCPU使用量Imを記憶しておいて、その値を使用してもよい。機器Aは、現在時刻から鍵の寿命満了時刻(end)までの残り時間から演算所要時間Taaを差し引いた時間TWbを求め(ステップS1505)、これを機器Bへの割り当て時間TWbとして公開値Xと共に機器Bに通知する(ステップS1510)。機器Bは、単位時間当たりのCPU使用率(Im/TWb+β)をCPUに割り当てて(ステップS1511)、秘密値bの生成、公開値Yの演算及び共有鍵Kの演算を行う(ステップS1512〜S1514)。βは、処理の揺らぎや前後に必要な処理を行うための余裕分である。一般的に、時間TWbを大きくすれば、単位時間当たりのCPU使用率(Im/TWb+β)を、100%より十分小さい値にすることができる。そうすれば、残ったCPU使用率の部分を、鍵交換処理以外のアプリケーションに割り振る余裕ができる。演算所要時間Tbbの代わりに、機器B用の割り当て時間TWb+αが、タイムアウト待ち時間として設定される。この場合、ステップS1501は不要になる。
このようにすれば、機器Bにおいて、鍵交換処理に割く単位時間当たりのCPU処理量を常に低くできるので、他のアプリケーションに回せるCPU処理量を多めに確保しておける。また、上記単位時間当たりのCPU使用率(Im/TWb+β)を割り当ての最小量とし、他のアプリケーションの生起が少なくてCPU処理能力に余裕がある時間帯には、より大きいCPU使用率を割り当てて、早めに鍵交換処理を進めるようにしてもよい。
また、図15の手順が、機器Aと機器Bとで公開値の演算及び共有鍵の演算が並列的に行われる手順になっても、上述と同様に処理の負荷分散を効率よく行うことができる。この場合には、機器Bが、CPU使用量Imの推定を行い、現在時刻から鍵の寿命満了時刻までの残り時間TYbを算出し、単位時間当たりのCPU使用率(Im/TYb+β)をCPUに割り当てる。そして、機器Bが秘密値bの生成、公開値Yの演算及び共有鍵Kの演算を行う。一般的に、残り時間TYbを大きくすれば、単位時間当たりのCPU使用率(Im/TYb+β)を、100%より十分小さい値にすることができる。そうすれば、残ったCPU使用率の部分を、鍵交換処理以外のアプリケーションに割り振る余裕ができる。一方、機器Aは、自分のCPU使用量の推定を行う。前回のCPU使用量は、機器AにおいてもImである。機器Aは、現在時刻から鍵の寿命満了時刻までの残り時間TYaを算出し、単位時間当たりのCPU使用率(Im/TYa+β)をCPUに割り当てる。そして、機器Aは、秘密値aの生成、公開値Xの演算及び共有鍵Kの演算を行う。なお、機器AにおけるCPU使用量が、機器Bの場合とは異なる場合には、機器AにおけるCPU使用量を用いればよい。
なお、機器A及び機器Bの演算進行速度がほぼ同じになるので、公開値Xの通知及び公開値Yの通知は、ほぼ同じ時刻に行われることになる。よって、機器BのCPU処理能力が低くても、機器Bの共有鍵Kの演算完了が、鍵の寿命満了時刻に間に合うことになる。
(その他の応用実施形態)
上記第1〜第12で説明した実施形態は、暗号化/認証処理を施したデータを送受信する2つの通信機器の間で共有鍵を交換する場合の共有鍵交換方法について説明した。特に、DH法の方法やIKEの方法に特化して説明したが、相手の機器から受信した公開値と自分が生成した秘密値とに基づいて共有鍵を計算することができるものであれば、DH法やIKE以外の共有鍵交換方法に対しても適用可能である。
上記第1〜第12で説明した実施形態は、暗号化/認証処理を施したデータを送受信する2つの通信機器の間で共有鍵を交換する場合の共有鍵交換方法について説明した。特に、DH法の方法やIKEの方法に特化して説明したが、相手の機器から受信した公開値と自分が生成した秘密値とに基づいて共有鍵を計算することができるものであれば、DH法やIKE以外の共有鍵交換方法に対しても適用可能である。
例えば、図16に示すような、セッション共有鍵(又はセッション共有鍵を交換するための情報)を公開鍵で暗号化して配布するような場合である。この場合、機器B(ユーザ側)が低性能であると、ステップS1607(網掛け部分)で行われる処理の時間が長くなり、機器A(鍵発行局側)で応答受信がタイムアウトする可能性がある。従って、この場合には、例えば、機器Bが、ステップS1603を実行するまでに公開鍵暗号処理にかかる演算所要時間を機器Aに通知するか、ステップS1603の後に公開鍵による暗号化データの送信が遅れる旨を通知すればよい。
また、図17に示すような、鍵管理センタを経由させて機器A及び機器Bに鍵を配布するような場合である。この場合、図17のステップS1702〜S1705、S1713、S1715、S1716及びS1718(網掛け部分)の処理において処理の時間が長くなり、対向する機器で応答受信がタイムアウトする可能性がある。従って、この場合には、各機器が、該当するステップを実行するまでにその処理にかかる演算所要時間又は処理が遅れる旨を通知すればよい。
さらに、上記各実施形態では、本発明のタイムアウト時間の遅延制御を、高い負荷がかかる処理として鍵交換処理を一例に説明したが、鍵交換処理に伴うデジタル署名による認証や公開暗号鍵を利用した認証等にも適用させることができる。これらに応用した場合にも、認証処理において演算に時間がかかり応答が遅れる処理のタイムアウト時間を、予め求めた演算所要時間に基づいて延長することができる。
典型的には、上記各実施形態で説明した共有鍵交換方法は、記憶装置(ROM、RAM、ハードディスク等)に格納された上述した処理手順を実行可能な所定のプログラムデータが、CPUによって解釈実行されることで実現される。この場合、プログラムデータは、記録媒体を介して記憶装置内に導入されてもよいし、記録媒体上から直接実行されてもよい。なお、この記録媒体は、ROM、RAM、フレキシブルディスク、CD−ROM、DVD、メモリカード、ハードディスク等の記録媒体を言う。また、記憶媒体は、電話回線や搬送路等の通信媒体も含む概念である。
以下の方法及び装置は、特許請求の範囲として明示的にクレームはしていないが、上述の記載内容から導き出せる方法及び装置である。
方法1.前記他方の通信機器が、
前記所定の演算にかかる演算所要時間を推定する推定ステップと、
前記推定した演算所要時間を前記一方の通信機器へ送信する時間送信ステップとをさらに備え、
前記一方の通信機器が、前記演算所要時間を前記他方の通信機器から受信する受信ステップをさらに備えることを特徴とする、請求項2〜5に記載の共有鍵交換方法。
方法2.前記一方の通信機器が、前記他方の通信機器に前記演算所要時間の問い合わせを行うステップをさらに備え、
前記他方の通信機器が、前記一方の通信機器からの問い合わせに応じて、前記推定ステップ及び前記時間送信ステップを実行することを特徴とする、方法1に記載の共有鍵交換方法。
方法3.前記他方の通信機器が、推定する前記演算所要時間を事前に保存していることを特徴とする、方法1に記載の共有鍵交換方法。
方法4.前記事前に保存している前記演算所要時間は、過去の前記所定の演算にかかった最大時間であることを特徴とする、方法3に記載の共有鍵交換方法。
方法5.前記他方の通信機器が、次の応答タイミングまでに応答が遅れる内容の通知を、前記一方の通信機器に少なくとも1回送信するステップをさらに備え、
前記一方の通信機器は、前記他方の通信機器から前記通知を受信するステップをさらに備え、前記設定ステップで、前記通知に基づいて前記応答待ちの期限を設定することを特徴とする、請求項2〜5に記載の共有鍵交換方法。
方法6.前記一方の通信機器が、メッセージを送信してから前記他方の通信機器より前記所定の演算後の応答を受信するまでの時間を計測して、前記所定の演算にかかる時間を取得することを特徴とする、請求項2〜5に記載の共有鍵交換方法。
装置1.前記取得部は、
自己の公開値を算出して相手の通信機器に送信する公開値算出部と、
相手の通信機器から相手の公開値を受信して、当該相手の公開値に基づいて共有鍵を算出する共有鍵算出部とを含み、
前記設定部が、相手の通信機器において前記公開値の算出までにかかる時間又は前記共有鍵の算出までにかかる時間の少なくともいずれかに基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置2.前記取得部は、共有鍵を算出する共有鍵算出部を含み、
前記情報送信部が、前記共有鍵算出部で算出した共有鍵又はその共有鍵を生成するための情報に、所定の暗号化を施して相手の通信機器へ送信し、
前記設定部が、相手の通信機器において前記暗号化された共有鍵の復号にかかる時間、又は前記暗号化された共有鍵を生成するための情報の復号及び共有鍵の生成にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置3.任意のメッセージを送信した後、暗号化された共有鍵又は共有鍵を生成するための情報を相手の通信機器から受信する場合、前記設定部が、相手の通信機器において共有鍵又は共有鍵を生成するための情報の暗号化にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置4.認証のためのデジタル署名がされたデータを相手の通信機器へ送信する場合、前記設定部が、相手の通信機器においてデジタル署名がされたデータに従って本人性認証処理にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置5.認証のための公開鍵暗号を利用したデータを相手の通信機器へ送信する場合、前記設定部が、相手の通信機器において公開鍵暗号を利用したデータに従った本人性認証処理にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置6.前記設定部は、相手の通信機器から受信する前記所定の演算にかかる時間を推定した演算所要時間に基づいて、前記所定の演算にかかる時間を取得することを特徴とする、請求項19に記載の通信機器。
装置7.相手の通信機器に前記次の応答タイミングまでに行う所定の演算にかかる時間の問い合わせを行う問い合わせ送信部をさらに備える、請求項19に記載の通信機器。
装置8.前記時間送信部は、相手の通信機器からの問い合わせに応じて、前記演算所要時間を送信することを特徴とする、請求項27及び28に記載の通信機器。
装置9.推定する前記演算所要時間を事前に保存していることを特徴とする、請求項27及び28に記載の通信機器。
装置10.前記事前に保存している前記演算所要時間は、過去の前記所定の演算にかかった最大時間であることを特徴とする、装置9に記載の通信機器。
装置11.前記設定部は、メッセージを送信してから相手の通信機器より前記所定の演算後の応答を受信するまでの時間を計測して、前記所定の演算にかかる時間を取得することを特徴とする、請求項19に記載の通信機器。
装置12.相手の通信機器において、次の応答タイミングまでに前記公開値及び前記共有鍵の算出が実行される場合、
前記設定部が、相手の通信機器が前記公開値及び前記共有鍵を算出するまでにかかる合計時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項20に記載の通信機器。
装置13.相手の通信機器において、次の応答タイミングまでに前記公開値の算出が実行される場合、
前記設定部が、相手の通信機器が前記公開値を算出するまでにかかる時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項20に記載の通信機器。
装置14.相手の通信機器において、次の応答タイミングまでに前記共有鍵の算出が実行される場合、
前記設定部が、相手の通信機器が前記共有鍵を算出するまでにかかる時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項20に記載の通信機器。
装置15.前記共有鍵の算出完了後に完了通知を相手の通信機器に送信する完了送信部と、
相手の通信機器から前記完了通知を受けるまで、鍵交換処理失敗の判断を行わない完了受信部とをさらに備えることを特徴とする、請求項20に記載の通信機器。
前記所定の演算にかかる演算所要時間を推定する推定ステップと、
前記推定した演算所要時間を前記一方の通信機器へ送信する時間送信ステップとをさらに備え、
前記一方の通信機器が、前記演算所要時間を前記他方の通信機器から受信する受信ステップをさらに備えることを特徴とする、請求項2〜5に記載の共有鍵交換方法。
方法2.前記一方の通信機器が、前記他方の通信機器に前記演算所要時間の問い合わせを行うステップをさらに備え、
前記他方の通信機器が、前記一方の通信機器からの問い合わせに応じて、前記推定ステップ及び前記時間送信ステップを実行することを特徴とする、方法1に記載の共有鍵交換方法。
方法3.前記他方の通信機器が、推定する前記演算所要時間を事前に保存していることを特徴とする、方法1に記載の共有鍵交換方法。
方法4.前記事前に保存している前記演算所要時間は、過去の前記所定の演算にかかった最大時間であることを特徴とする、方法3に記載の共有鍵交換方法。
方法5.前記他方の通信機器が、次の応答タイミングまでに応答が遅れる内容の通知を、前記一方の通信機器に少なくとも1回送信するステップをさらに備え、
前記一方の通信機器は、前記他方の通信機器から前記通知を受信するステップをさらに備え、前記設定ステップで、前記通知に基づいて前記応答待ちの期限を設定することを特徴とする、請求項2〜5に記載の共有鍵交換方法。
方法6.前記一方の通信機器が、メッセージを送信してから前記他方の通信機器より前記所定の演算後の応答を受信するまでの時間を計測して、前記所定の演算にかかる時間を取得することを特徴とする、請求項2〜5に記載の共有鍵交換方法。
装置1.前記取得部は、
自己の公開値を算出して相手の通信機器に送信する公開値算出部と、
相手の通信機器から相手の公開値を受信して、当該相手の公開値に基づいて共有鍵を算出する共有鍵算出部とを含み、
前記設定部が、相手の通信機器において前記公開値の算出までにかかる時間又は前記共有鍵の算出までにかかる時間の少なくともいずれかに基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置2.前記取得部は、共有鍵を算出する共有鍵算出部を含み、
前記情報送信部が、前記共有鍵算出部で算出した共有鍵又はその共有鍵を生成するための情報に、所定の暗号化を施して相手の通信機器へ送信し、
前記設定部が、相手の通信機器において前記暗号化された共有鍵の復号にかかる時間、又は前記暗号化された共有鍵を生成するための情報の復号及び共有鍵の生成にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置3.任意のメッセージを送信した後、暗号化された共有鍵又は共有鍵を生成するための情報を相手の通信機器から受信する場合、前記設定部が、相手の通信機器において共有鍵又は共有鍵を生成するための情報の暗号化にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置4.認証のためのデジタル署名がされたデータを相手の通信機器へ送信する場合、前記設定部が、相手の通信機器においてデジタル署名がされたデータに従って本人性認証処理にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置5.認証のための公開鍵暗号を利用したデータを相手の通信機器へ送信する場合、前記設定部が、相手の通信機器において公開鍵暗号を利用したデータに従った本人性認証処理にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項19に記載の通信機器。
装置6.前記設定部は、相手の通信機器から受信する前記所定の演算にかかる時間を推定した演算所要時間に基づいて、前記所定の演算にかかる時間を取得することを特徴とする、請求項19に記載の通信機器。
装置7.相手の通信機器に前記次の応答タイミングまでに行う所定の演算にかかる時間の問い合わせを行う問い合わせ送信部をさらに備える、請求項19に記載の通信機器。
装置8.前記時間送信部は、相手の通信機器からの問い合わせに応じて、前記演算所要時間を送信することを特徴とする、請求項27及び28に記載の通信機器。
装置9.推定する前記演算所要時間を事前に保存していることを特徴とする、請求項27及び28に記載の通信機器。
装置10.前記事前に保存している前記演算所要時間は、過去の前記所定の演算にかかった最大時間であることを特徴とする、装置9に記載の通信機器。
装置11.前記設定部は、メッセージを送信してから相手の通信機器より前記所定の演算後の応答を受信するまでの時間を計測して、前記所定の演算にかかる時間を取得することを特徴とする、請求項19に記載の通信機器。
装置12.相手の通信機器において、次の応答タイミングまでに前記公開値及び前記共有鍵の算出が実行される場合、
前記設定部が、相手の通信機器が前記公開値及び前記共有鍵を算出するまでにかかる合計時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項20に記載の通信機器。
装置13.相手の通信機器において、次の応答タイミングまでに前記公開値の算出が実行される場合、
前記設定部が、相手の通信機器が前記公開値を算出するまでにかかる時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項20に記載の通信機器。
装置14.相手の通信機器において、次の応答タイミングまでに前記共有鍵の算出が実行される場合、
前記設定部が、相手の通信機器が前記共有鍵を算出するまでにかかる時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項20に記載の通信機器。
装置15.前記共有鍵の算出完了後に完了通知を相手の通信機器に送信する完了送信部と、
相手の通信機器から前記完了通知を受けるまで、鍵交換処理失敗の判断を行わない完了受信部とをさらに備えることを特徴とする、請求項20に記載の通信機器。
方法A−1.暗号化/改ざん認証処理が施されたデータを送受信するために、2つの通信機器間で行われる共有鍵を交換する共有鍵交換方法であって、
各々の通信機器が、
共有鍵を算出するために行う所定の演算にかかる演算所要時間を推定する推定ステップと、
相手の通信機器との間で共有鍵の交換を完了すべき時刻までに共有鍵の交換処理を完了させるための処理開始時刻を、前記演算所要時間に基づいて算定する算定ステップとを備え、
いずれか一方の通信機器が、前記処理開始時刻に鍵交換処理を開始する開始ステップをさらに備えることを特徴とする、共有鍵交換方法。
方法A−2.他方の通信機器が、前記推定ステップで推定した前記演算所要時間を、前記一方の通信機器へ送信する時間送信ステップをさらに備え、
前記一方の通信機器が、前記他方の通信機器から前記演算所要時間を受信するステップをさらに備え、前記算定ステップにおいて自己の前記演算所要時間と前記他方の通信機器の演算所要時間とに基づいて、前記処理開始時刻を算定することを特徴とする、方法A−1に記載の共有鍵交換方法。
方法A−3.前記一方の通信機器が、前記他方の通信機器に前記演算所要時間の問い合わせを行うステップをさらに備え、
前記他方の通信機器が、前記一方の通信機器からの問い合わせに応じて、前記推定ステップ及び前記時間送信ステップを実行することを特徴とする、方法A−2に記載の共有鍵交換方法。
方法A−4.前記算定ステップで算定した処理開始時刻が早い方の通信機器が、その処理開始時刻に前記開始ステップを実行することを特徴とする、方法A−1に記載の共有鍵交換方法。
方法A−5.前記通信機器が、共有鍵の算出が新規であるか更新であるかを判定する判定ステップをさらに備え、前記更新である場合には、前記共有鍵を算出するために行う所定の演算が所定の小単位に分割されて時間的に負荷分散されることを特徴とする、方法A−1〜A−4のいずれかに記載の共有鍵交換方法。
方法A−6.前記負荷分散は、前記共有鍵を算出するために行う所定の演算にかかる時間が長い方の通信機器が実行することを特徴とする、方法A−5に記載の共有鍵交換方法。
方法A−7.前記推定ステップは、共有鍵を算出するために自機器が行う所定の演算にかかる実時間の2倍の時間を前記演算所要時間として推定することを特徴とする、方法A−1に記載の共有鍵交換方法。
装置A−1.暗号化/改ざん認証処理が施されたデータを送受信するために、対向する相手の通信機器との間で共有鍵を交換する通信機器であって、
共有鍵を算出するために行う所定の演算にかかる演算所要時間を推定する推定部と、
相手の通信機器との間で共有鍵の交換を完了すべき時刻までに共有鍵の交換処理を完了させるための処理開始時刻を、前記演算所要時間に基づいて算定する算定部と、
前記処理開始時刻に鍵交換処理を開始する処理部とを備えることを特徴とする、通信機器。
装置A−2.相手の通信機器から前記演算所要時間を受信する受信部をさらに備え、
前記算定部が、自己の前記演算所要時間と相手の通信機器の演算所要時間とに基づいて、前記処理開始時刻を算定することを特徴とする、装置A−1に記載の通信機器。
装置A−3.前記推定部で推定した前記演算所要時間を、相手の通信機器へ送信する時間送信部をさらに備えることを特徴とする、装置A−1に記載の通信機器。
装置A−4.相手の通信機器に前記演算所要時間の問い合わせを行う問い合わせ部をさらに備えることを特徴とする、装置A−2に記載の通信機器。
装置A−5.相手の通信機器からの問い合わせに応じて、前記演算所要時間を相手の通信機器に送信することを特徴とする、装置A−3に記載の通信機器。
装置A−6.前記処理部は、算定した処理開始時刻が相手の通信機器の処理開始時刻よりも早い場合に、鍵交換処理を開始することを特徴とする、装置A−1に記載の通信機器。
装置A−7.共有鍵の算出が新規であるか更新であるかを判定する判定部をさらに備え、
更新である場合には、前記共有鍵を算出するために行う所定の演算が所定の小単位に分割されて時間的に負荷分散されることを特徴とする、装置A−1に記載の通信機器。
装置A−8.前記負荷分散は、前記共有鍵を算出するために行う所定の演算にかかる時間が長い場合に実行されることを特徴とする、装置A−7に記載の通信機器。
各々の通信機器が、
共有鍵を算出するために行う所定の演算にかかる演算所要時間を推定する推定ステップと、
相手の通信機器との間で共有鍵の交換を完了すべき時刻までに共有鍵の交換処理を完了させるための処理開始時刻を、前記演算所要時間に基づいて算定する算定ステップとを備え、
いずれか一方の通信機器が、前記処理開始時刻に鍵交換処理を開始する開始ステップをさらに備えることを特徴とする、共有鍵交換方法。
方法A−2.他方の通信機器が、前記推定ステップで推定した前記演算所要時間を、前記一方の通信機器へ送信する時間送信ステップをさらに備え、
前記一方の通信機器が、前記他方の通信機器から前記演算所要時間を受信するステップをさらに備え、前記算定ステップにおいて自己の前記演算所要時間と前記他方の通信機器の演算所要時間とに基づいて、前記処理開始時刻を算定することを特徴とする、方法A−1に記載の共有鍵交換方法。
方法A−3.前記一方の通信機器が、前記他方の通信機器に前記演算所要時間の問い合わせを行うステップをさらに備え、
前記他方の通信機器が、前記一方の通信機器からの問い合わせに応じて、前記推定ステップ及び前記時間送信ステップを実行することを特徴とする、方法A−2に記載の共有鍵交換方法。
方法A−4.前記算定ステップで算定した処理開始時刻が早い方の通信機器が、その処理開始時刻に前記開始ステップを実行することを特徴とする、方法A−1に記載の共有鍵交換方法。
方法A−5.前記通信機器が、共有鍵の算出が新規であるか更新であるかを判定する判定ステップをさらに備え、前記更新である場合には、前記共有鍵を算出するために行う所定の演算が所定の小単位に分割されて時間的に負荷分散されることを特徴とする、方法A−1〜A−4のいずれかに記載の共有鍵交換方法。
方法A−6.前記負荷分散は、前記共有鍵を算出するために行う所定の演算にかかる時間が長い方の通信機器が実行することを特徴とする、方法A−5に記載の共有鍵交換方法。
方法A−7.前記推定ステップは、共有鍵を算出するために自機器が行う所定の演算にかかる実時間の2倍の時間を前記演算所要時間として推定することを特徴とする、方法A−1に記載の共有鍵交換方法。
装置A−1.暗号化/改ざん認証処理が施されたデータを送受信するために、対向する相手の通信機器との間で共有鍵を交換する通信機器であって、
共有鍵を算出するために行う所定の演算にかかる演算所要時間を推定する推定部と、
相手の通信機器との間で共有鍵の交換を完了すべき時刻までに共有鍵の交換処理を完了させるための処理開始時刻を、前記演算所要時間に基づいて算定する算定部と、
前記処理開始時刻に鍵交換処理を開始する処理部とを備えることを特徴とする、通信機器。
装置A−2.相手の通信機器から前記演算所要時間を受信する受信部をさらに備え、
前記算定部が、自己の前記演算所要時間と相手の通信機器の演算所要時間とに基づいて、前記処理開始時刻を算定することを特徴とする、装置A−1に記載の通信機器。
装置A−3.前記推定部で推定した前記演算所要時間を、相手の通信機器へ送信する時間送信部をさらに備えることを特徴とする、装置A−1に記載の通信機器。
装置A−4.相手の通信機器に前記演算所要時間の問い合わせを行う問い合わせ部をさらに備えることを特徴とする、装置A−2に記載の通信機器。
装置A−5.相手の通信機器からの問い合わせに応じて、前記演算所要時間を相手の通信機器に送信することを特徴とする、装置A−3に記載の通信機器。
装置A−6.前記処理部は、算定した処理開始時刻が相手の通信機器の処理開始時刻よりも早い場合に、鍵交換処理を開始することを特徴とする、装置A−1に記載の通信機器。
装置A−7.共有鍵の算出が新規であるか更新であるかを判定する判定部をさらに備え、
更新である場合には、前記共有鍵を算出するために行う所定の演算が所定の小単位に分割されて時間的に負荷分散されることを特徴とする、装置A−1に記載の通信機器。
装置A−8.前記負荷分散は、前記共有鍵を算出するために行う所定の演算にかかる時間が長い場合に実行されることを特徴とする、装置A−7に記載の通信機器。
本発明の共有鍵交換方法は、ネットワークを介して秘匿性の高いデータを送受信する通信機器間等に利用可能であり、特に暗号化/認証用の秘密鍵を交換及び共有する場合等に有用である。
101、102 GW型機器
103〜106 端末
107 公衆網
108、109 LAN
110、111 ホスト型機器
201 共有鍵交換部
202 データベース(DB)管理部
203 データベース(DB)部
204 暗号化/認証処理部
205、206 通信プロトコル処理部
207 LANインタフェース(I/F)
208 WANインタフェース(I/F)
103〜106 端末
107 公衆網
108、109 LAN
110、111 ホスト型機器
201 共有鍵交換部
202 データベース(DB)管理部
203 データベース(DB)部
204 暗号化/認証処理部
205、206 通信プロトコル処理部
207 LANインタフェース(I/F)
208 WANインタフェース(I/F)
Claims (34)
- 暗号化/改ざん認証処理が施されたデータを送受信するために、2つの通信機器間で行われる共有鍵を交換する共有鍵交換方法であって、
少なくとも一方の通信機器が、
対向する他方の通信機器が共有鍵を取得するために必要な情報を、当該他方の通信機器に送信する情報送信ステップと、
前記他方の通信機器が次の応答タイミングまでに行う所定の演算にかかる時間に基づいて、前記他方の通信機器からの応答待ちの期限を設定する設定ステップとを備え、
前記他方の通信機器が、
前記所定の演算を行って前記情報から共有鍵を取得する取得ステップと、
前記応答タイミングで前記一方の通信機器へ所定の応答を送信する応答送信ステップとを備えることを特徴とする、共有鍵交換方法。 - 各々の前記通信機器は、自己の公開値を算出して相手の通信機器に送信し、また相手の通信機器から相手の公開値を受信して、当該相手の公開値に基づいて共有鍵を算出することで共有鍵の交換を実現し、
前記一方の通信機器の前記設定ステップが、前記他方の通信機器において前記公開値の算出までにかかる時間又は前記共有鍵の算出までにかかる時間の少なくともいずれかに基づいて、前記応答待ちの期限を設定することを特徴とする、請求項1に記載の共有鍵交換方法。 - 一方の通信機器が、自機器で生成した共有鍵又は共有鍵を生成するための情報に所定の暗号化を施して他方の通信機器へ送信し、他方の通信機器が、一方の通信機器から受信する暗号化された共有鍵を復号又は共有鍵を生成するための情報を復号して共有鍵を生成し、共有鍵取得の応答を一方の通信機器へ送信することで共有鍵の交換を実現し、
前記一方の通信機器の前記設定ステップが、前記他方の通信機器において前記暗号化された共有鍵の復号にかかる時間又は共有鍵を生成するための情報の復号及び共有鍵の生成にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項1に記載の共有鍵交換方法。 - 他方の通信機器が、前記一方の通信機器から要求メッセージを受信した後、共有鍵又は共有鍵を生成するための情報を、一方の通信機器から受信する公開鍵を用いて暗号化して一方の通信機器へ送信することで共有鍵の交換を実現し、
前記一方の通信機器の前記設定ステップが、前記他方の通信機器において前記共有鍵又は共有鍵を生成するための情報の暗号化にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項1に記載の共有鍵交換方法。 - 前記所定の演算は、共有鍵の取得に伴う認証処理のための演算、又は共有鍵の取得に伴う認証処理のための演算かつ共有鍵を取得するための演算であることを特徴とする、請求項1に記載の共有鍵交換方法。
- 一方の通信機器が、認証のためのデジタル署名がされたデータを他方の通信機器へ送信し、他方の通信機器が、一方の通信機器から受信するデジタル署名がされたデータに従って本人性認証処理を行うことで、認証処理を実現し、
前記一方の通信機器の前記設定ステップが、前記他方の通信機器において前記本人性認証処理にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項5に記載の共有鍵交換方法。 - 一方の通信機器が、認証のための公開鍵暗号を利用したデータを他方の通信機器へ送信し、他方の通信機器が、一方の通信機器から受信する公開鍵暗号を利用したデータに従って本人性認証処理を行うことで、認証処理を実現し、
前記一方の通信機器の前記設定ステップが、前記他方の通信機器において前記本人性認証処理にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項5に記載の共有鍵交換方法。 - 前記他方の通信機器が、
前記所定の演算にかかる演算所要時間を推定する推定ステップと、
前記推定した演算所要時間を前記一方の通信機器へ送信する時間送信ステップとをさらに備え、
前記一方の通信機器が、前記演算所要時間を前記他方の通信機器から受信する受信ステップをさらに備えることを特徴とする、請求項1に記載の共有鍵交換方法。 - 前記一方の通信機器が、前記他方の通信機器に前記演算所要時間の問い合わせを行うステップをさらに備え、
前記他方の通信機器が、前記一方の通信機器からの問い合わせに応じて、前記推定ステップ及び前記時間送信ステップを実行することを特徴とする、請求項8に記載の共有鍵交換方法。 - 前記他方の通信機器が、推定する前記演算所要時間を事前に保存していることを特徴とする、請求項8に記載の共有鍵交換方法。
- 前記他方の通信機器が、次の応答タイミングまでに応答が遅れる内容の通知を、前記一方の通信機器に少なくとも1回送信するステップをさらに備え、
前記一方の通信機器は、前記他方の通信機器から前記通知を受信するステップをさらに備え、前記設定ステップで、前記通知に基づいて前記応答待ちの期限を設定することを特徴とする、請求項1に記載の共有鍵交換方法。 - 前記一方の通信機器が、メッセージを送信してから前記他方の通信機器より前記所定の演算後の応答を受信するまでの時間を計測して、前記所定の演算にかかる時間を取得することを特徴とする、請求項1に記載の共有鍵交換方法。
- 前記他方の通信機器において、次の応答タイミングまでに前記公開値及び前記共有鍵の算出が実行される場合、
前記一方の通信機器の設定ステップが、前記他方の通信機器が前記公開値及び前記共有鍵を算出するまでにかかる合計時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項2に記載の共有鍵交換方法。 - 前記他方の通信機器において、次の応答タイミングまでに前記公開値の算出が実行される場合、
前記一方の通信機器の設定ステップが、前記他方の通信機器が前記公開値を算出するまでにかかる時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項2に記載の共有鍵交換方法。 - 前記他方の通信機器において、次の応答タイミングまでに前記共有鍵の算出が実行される場合、
前記一方の通信機器の設定ステップが、前記他方の通信機器が前記共有鍵を算出するまでにかかる時間に基づいて、前記公開値の送信又は前記共有鍵の算出完了に関する応答待ちの期限を設定することを特徴とする、請求項2に記載の共有鍵交換方法。 - 前記通信機器は、
前記共有鍵の算出完了後に完了通知を相手の通信機器に送信するステップと、
相手の通信機器から前記完了通知を受けるまで、鍵交換処理失敗の判断を行わないステップとをさらに備えることを特徴とする、請求項2に記載の共有鍵交換方法。 - IKEのメッセージシーケンスにおいて、前記情報送信ステップ、設定ステップ、取得ステップ及び応答送信ステップが実行されることを特徴とする、請求項2に記載の共有鍵交換方法。
- 暗号化/改ざん認証処理が施されたデータを送受信するために、対向する相手の通信機器との間で共有鍵を交換する通信機器であって、
相手の通信機器が共有鍵を取得するために必要な情報を、当該相手の通信機器に送信する情報送信部と、
相手の通信機器から応答を受信する受信部と、
相手の通信機器が次の応答タイミングまでに行う所定の演算にかかる時間に基づいて、前記受信部で受信する相手の通信機器からの応答の応答待ちの期限を設定する設定部とを備える、通信機器。 - 所定の演算を行って、相手の通信機器から受信する共有鍵を取得するために必要な情報から共有鍵を取得する取得部と、
所定の応答タイミングで、相手の通信機器へ所定の応答を送信する応答送信部とをさらに備える、請求項18に記載の通信機器。 - 前記取得部は、
自己の公開値を算出して相手の通信機器に送信する公開値算出部と、
相手の通信機器から相手の公開値を受信して、当該相手の公開値に基づいて共有鍵を算出する共有鍵算出部とを含み、
前記設定部が、相手の通信機器において前記公開値の算出までにかかる時間又は前記共有鍵の算出までにかかる時間の少なくともいずれかに基づいて、前記応答待ちの期限を設定することを特徴とする、請求項18に記載の通信機器。 - 前記取得部は、共有鍵を算出する共有鍵算出部を含み、
前記情報送信部が、前記共有鍵算出部で算出した共有鍵又はその共有鍵を生成するための情報に、所定の暗号化を施して相手の通信機器へ送信し、
前記設定部が、相手の通信機器において前記暗号化された共有鍵の復号にかかる時間、又は前記暗号化された共有鍵を生成するための情報の復号及び共有鍵の生成にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項18に記載の通信機器。 - 任意のメッセージを送信した後、暗号化された共有鍵又は共有鍵を生成するための情報を相手の通信機器から受信する場合、前記設定部が、相手の通信機器において共有鍵又は共有鍵を生成するための情報の暗号化にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項18に記載の通信機器。
- 認証のためのデジタル署名がされたデータを相手の通信機器へ送信する場合、前記設定部が、相手の通信機器においてデジタル署名がされたデータに従って本人性認証処理にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項18に記載の通信機器。
- 認証のための公開鍵暗号を利用したデータを相手の通信機器へ送信する場合、前記設定部が、相手の通信機器において公開鍵暗号を利用したデータに従った本人性認証処理にかかる時間に基づいて、前記応答待ちの期限を設定することを特徴とする、請求項18に記載の通信機器。
- 前記設定部は、相手の通信機器から受信する前記所定の演算にかかる時間を推定した演算所要時間に基づいて、前記所定の演算にかかる時間を取得することを特徴とする、請求項18に記載の通信機器。
- 暗号化/改ざん認証処理が施されたデータを送受信するために、対向する相手の通信機器との間で共有鍵を交換する通信機器であって、
相手の通信機器から共有鍵を取得するために必要な情報を受信する受信部と、
前記受信部で受信した情報から共有鍵を取得するまでに要する時間に関する情報を、相手の通信機器へ送信する時間送信部と、
所定の演算を行って、前記受信部で受信した情報から共有鍵を取得する取得部と、
所定の応答タイミングで、相手の通信機器へ所定の応答を送信する応答送信部とを備える、通信機器。 - 次の応答タイミングまでに行う所定の演算にかかる演算所要時間を推定する推定部をさらに備え、
前記時間送信部は、前記推定部で推定された演算所要時間を相手の通信機器へ送信することを特徴とする、請求項26に記載の通信機器。 - 次の応答タイミングまでに行う所定の演算にかかる演算所要時間を推定する推定部と、
前記推定部で推定された演算所要時間を相手の通信機器へ送信する時間送信部とをさらに備える、請求項19に記載の通信機器。 - 相手の通信機器に前記次の応答タイミングまでに行う所定の演算にかかる時間の問い合わせを行う問い合わせ送信部をさらに備える、請求項18に記載の通信機器。
- 次の応答タイミングまでに応答が遅れる内容の通知を、相手の通信機器に少なくとも1回送信する遅延通知送信部をさらに備える、請求項19に記載の通信機器。
- 前記時間送信部は、次の応答タイミングまでに応答が遅れる内容の通知を、相手の通信機器に少なくとも1回送信することを特徴とする、請求項26に記載の通信機器。
- 前記設定部は、メッセージを送信してから相手の通信機器より前記所定の演算後の応答を受信するまでの時間を計測して、前記所定の演算にかかる時間を取得することを特徴とする、請求項18に記載の通信機器。
- 暗号化/改ざん認証処理が施されたデータを送受信するために行われる共有鍵を交換する方法を、2つの通信機器間で実現させるためのプログラムであって、
少なくとも一方の通信機器に、
対向する他方の通信機器が共有鍵を取得するために必要な情報を、当該他方の通信機器に送信する情報送信ステップと、
前記他方の通信機器が次の応答タイミングまでに行う所定の演算にかかる時間に基づいて、前記他方の通信機器からの応答待ちの期限を設定する設定ステップとを実行させ、
前記他方の通信機器が、
前記所定の演算を行って前記情報から共有鍵を取得する取得ステップと、
前記応答タイミングで前記一方の通信機器へ所定の応答を送信する応答送信ステップとを実行させるための、プログラム。 - 暗号化/改ざん認証処理が施されたデータを送受信するために行われる共有鍵を交換する方法を2つの通信機器間で実現させるためのプログラムが記録された、コンピュータ読み取り可能な記録媒体であって、
少なくとも一方の通信機器に、
対向する他方の通信機器が共有鍵を取得するために必要な情報を、当該他方の通信機器に送信する情報送信ステップと、
前記他方の通信機器が次の応答タイミングまでに行う所定の演算にかかる時間に基づいて、前記他方の通信機器からの応答待ちの期限を設定する設定ステップとを実行させ、
前記他方の通信機器が、
前記所定の演算を行って前記情報から共有鍵を取得する取得ステップと、
前記応答タイミングで前記一方の通信機器へ所定の応答を送信する応答送信ステップとを実行させるためのプログラムを記録する、記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004013546A JP2004248270A (ja) | 2003-01-24 | 2004-01-21 | 共有鍵交換方法及び通信機器 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003015866 | 2003-01-24 | ||
JP2004013546A JP2004248270A (ja) | 2003-01-24 | 2004-01-21 | 共有鍵交換方法及び通信機器 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004248270A true JP2004248270A (ja) | 2004-09-02 |
Family
ID=33032057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004013546A Pending JP2004248270A (ja) | 2003-01-24 | 2004-01-21 | 共有鍵交換方法及び通信機器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004248270A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006345408A (ja) * | 2005-06-10 | 2006-12-21 | Oki Electric Ind Co Ltd | メッセージ認証システム,メッセージ送信装置,メッセージ受信装置,メッセージ送信方法,メッセージ受信方法およびプログラム |
JP2007093693A (ja) * | 2005-09-27 | 2007-04-12 | Yokogawa Electric Corp | 暗号化通信方法および通信装置 |
JP2009065625A (ja) * | 2007-09-10 | 2009-03-26 | Oki Electric Ind Co Ltd | 暗号化データ通信方法と暗号化データ通信システム |
US8166153B2 (en) * | 2004-03-19 | 2012-04-24 | Ricoh Company, Ltd. | Remote control system and controlled apparatus therein capable of sending e-mail if communication request fails |
JP2012119917A (ja) * | 2010-11-30 | 2012-06-21 | Canon Inc | 通信装置、制御方法及びプログラム |
WO2012081156A1 (ja) * | 2010-12-15 | 2012-06-21 | パナソニック株式会社 | アレイ管理装置、アレイ管理方法及び集積回路 |
WO2015004831A1 (ja) * | 2013-07-12 | 2015-01-15 | パナソニックIpマネジメント株式会社 | 暗号通信装置、暗号通信方法およびそのコンピュータプログラム |
JP2017028456A (ja) * | 2015-07-21 | 2017-02-02 | キヤノン株式会社 | 通信装置、制御方法、および、プログラム |
-
2004
- 2004-01-21 JP JP2004013546A patent/JP2004248270A/ja active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8166153B2 (en) * | 2004-03-19 | 2012-04-24 | Ricoh Company, Ltd. | Remote control system and controlled apparatus therein capable of sending e-mail if communication request fails |
JP2006345408A (ja) * | 2005-06-10 | 2006-12-21 | Oki Electric Ind Co Ltd | メッセージ認証システム,メッセージ送信装置,メッセージ受信装置,メッセージ送信方法,メッセージ受信方法およびプログラム |
JP4665617B2 (ja) * | 2005-06-10 | 2011-04-06 | 沖電気工業株式会社 | メッセージ認証システム,メッセージ送信装置,メッセージ受信装置,メッセージ送信方法,メッセージ受信方法およびプログラム |
US8209536B2 (en) | 2005-06-10 | 2012-06-26 | Oki Electric Industry Co., Ltd. | Message authentication system, message transmission apparatus and message reception apparatus |
JP2007093693A (ja) * | 2005-09-27 | 2007-04-12 | Yokogawa Electric Corp | 暗号化通信方法および通信装置 |
JP2009065625A (ja) * | 2007-09-10 | 2009-03-26 | Oki Electric Ind Co Ltd | 暗号化データ通信方法と暗号化データ通信システム |
JP2012119917A (ja) * | 2010-11-30 | 2012-06-21 | Canon Inc | 通信装置、制御方法及びプログラム |
WO2012081156A1 (ja) * | 2010-12-15 | 2012-06-21 | パナソニック株式会社 | アレイ管理装置、アレイ管理方法及び集積回路 |
WO2015004831A1 (ja) * | 2013-07-12 | 2015-01-15 | パナソニックIpマネジメント株式会社 | 暗号通信装置、暗号通信方法およびそのコンピュータプログラム |
JPWO2015004831A1 (ja) * | 2013-07-12 | 2017-03-02 | パナソニックIpマネジメント株式会社 | 暗号通信装置、暗号通信方法およびそのコンピュータプログラム |
JP2017028456A (ja) * | 2015-07-21 | 2017-02-02 | キヤノン株式会社 | 通信装置、制御方法、および、プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1441485A2 (en) | Common key exchanging method and communication device | |
JP5893765B2 (ja) | コンテンツセントリックネットワーキング | |
Aiello et al. | Efficient, DoS-resistant, secure key exchange for internet protocols | |
JP5634427B2 (ja) | 鍵生成装置、鍵生成方法およびプログラム | |
JP5494603B2 (ja) | セキュリティ処理代行システム | |
US20040161110A1 (en) | Server apparatus, key management apparatus, and encrypted communication method | |
WO2009076811A1 (zh) | 密钥协商方法、用于密钥协商的系统、客户端及服务器 | |
US20170149748A1 (en) | Secure Group Messaging and Data Steaming | |
JP4764368B2 (ja) | 通信を確立してメッセージを中継する装置、通信を確立する方法およびプログラム | |
CN106817219B (zh) | 一种协商会话秘钥的方法及装置 | |
Pérez et al. | Application layer key establishment for end-to-end security in IoT | |
WO2018127118A1 (zh) | 一种身份认证方法及装置 | |
CN110808834B (zh) | 量子密钥分发方法和量子密钥分发系统 | |
JP2004364303A (ja) | メッセージを暗号化及び復号化するためのリンク鍵を確立する方法及びシステム | |
JP2005268903A (ja) | 暗号鍵共有装置、暗号鍵共有方法、プログラム及び通信機器 | |
CN108011856B (zh) | 一种传输数据的方法和装置 | |
JP2004248270A (ja) | 共有鍵交換方法及び通信機器 | |
JP2012100206A (ja) | 暗号通信中継システム、暗号通信中継方法および暗号通信中継用プログラム | |
CN108040071A (zh) | 一种VoIP音视频加密密钥动态切换方法 | |
JP3854954B2 (ja) | データ共有装置 | |
WO2009109133A1 (zh) | 恢复连接的方法和装置 | |
CN110417722B (zh) | 一种业务数据通信方法、通信设备及存储介质 | |
JP2007074180A (ja) | 通信システム及び通信方式 | |
EP3522443B1 (en) | Communication apparatus, communication method, and program | |
Tiloca | Efficient protection of response messages in DTLS-based secure multicast communication |