JP3699618B2 - 暗号鍵取得方法及び暗号鍵交換装置 - Google Patents
暗号鍵取得方法及び暗号鍵交換装置 Download PDFInfo
- Publication number
- JP3699618B2 JP3699618B2 JP27042699A JP27042699A JP3699618B2 JP 3699618 B2 JP3699618 B2 JP 3699618B2 JP 27042699 A JP27042699 A JP 27042699A JP 27042699 A JP27042699 A JP 27042699A JP 3699618 B2 JP3699618 B2 JP 3699618B2
- Authority
- JP
- Japan
- Prior art keywords
- random number
- encryption key
- value
- generated
- new
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
この発明は、特にインターネット上で行う暗号通信に用いて好適な、共通鍵暗号方式を利用した暗号通信を行う際に用いる暗号鍵交換方法および暗号鍵交換装置に関する。
【0002】
【従来の技術】
従来より、通信端末装置(クライアント)が電話網を介して最寄りのインターネット接続点に接続(いわゆるダイアルアップ接続)し、さらに、インターネットを介してサーバ側のネットワーク(例えば企業LAN(Local Area Network))に接続する場合において、インターネット上を安全に通過するために仮想私設網(Virtual Private Network:VPN)を構築するいわゆるダイアルアップVPNが知られている。仮想私設網とは、暗号技術や、認証技術、トンネリング技術などを利用して、インターネット上においても専用線と同様の安全性および利便性を有する通信を実現する技術である。このような仮想私設網機能を実現するネットワークコンポーネントをセキュリティゲートウェイ(Security GateWay:SGW)という。
【0003】
暗号技術としては、公開鍵暗号方式と共通(秘密)鍵暗号方式が広く知られている。
公開鍵暗号方式は、暗号化と復号化で異なる鍵を使用する方式であり、鍵の一方を広く一般に公開し(公開鍵)、他方をクライアントが保有して秘密鍵として管理する。この方式では、公開鍵で暗号化された情報は秘密鍵でしか復号できず、秘密鍵で暗号化された情報は公開鍵でしか復号できないという特徴がある。代表的なものとしては、RSAなどが知られている。
一方、共通鍵暗号方式は、暗号化と復号化で共通の鍵を使用する方式であり、通信を行う2点間で共通鍵を秘密に管理する。
一般的に、公開鍵暗号方式は共通鍵暗号方式に比べて著しく処理負荷が高いので、共通鍵暗号方式が広く普及しているが、共通鍵暗号方式を用いた場合には、一定量のサンプルデータがあれば一定の時間をかけて解読することが可能であると、一般的に言われている。
すなわち、暗号を終端する2点間において共有する共通鍵として常に同じものを使用して暗号通信を行うと、一定の時間をかけて暗号を第三者に解読されてしまうおそれがある。従って、セキュリティゲートウェイ21とクライアント30間で新しいセッションを生成する際や、一定時間あるいは一定データ転送毎に新たな共通鍵を生成して交換する必要がある。
【0004】
【発明が解決しようとする課題】
ところで、一般的に仮想私設網を終端するセキュリティゲートウェイの負荷としては、
▲1▼パケットルーティング処理や、暗号処理など転送パケット量に比例する負荷▲2▼共通鍵暗号方式の通信を行うために鍵交換を行う負荷
などが代表的なものである。
ここで、クライアント側がモバイル端末の場合には、移動網側がボトルネックとなって、1ユーザが送受するパケット量(スループット)は多くないという特徴がある。
従って、上述した▲1▼の負荷が問題とならず、セキュリティゲートウェイ1台に収容可能なユーザ数が増えることになる。しかしながら、鍵交換に伴う負荷は、収容ユーザ数に比例するので、クライアント側がモバイル端末の場合には、セキュリティゲートウェイ負荷は、相対的に鍵交換に伴う負荷比率が増加する。
【0005】
ここで、従来の鍵交換技術としては、インターネット・キー・エクスチェンジ(Internet Key Exchange:IKE)という、インターネット標準の鍵交換アルゴリズムがある。IKEは、ディフィーヘルマンの鍵交換法をベースにしており、次のような鍵交換を行う。
予め通信を行う2点間では、大きな素数nと生成元gを決定しておく。そして、一方はn未満の正の乱数r1発生させ、他方はn未満の正の乱数r2発生させる。
乱数r1発生させた側は、gr1mod(n)を計算し、乱数r2発生させた側はgr2mod(n)を計算して、インターネット上で交換する。
そして、乱数r1発生させた側は、自己で計算したgr1mod(n)と他方から受信したgr2mod(n)を用いてgr1r2mod(n)を計算し、乱数r2発生させた側は、自己で計算したgr2mod(n)と他方から受信したgr1mod(n)を用いてgr1r2mod(n)を計算し、この両者が得たgr1r2mod(n)を合意した鍵とする。
【0006】
しかしながら、上述したIKEでは、gr1r2mod(n)を取得するために膨大な量の計算が必要になるという問題がある。この演算で十分な暗号として強度の鍵を得るためには、nの値として、300桁程度の素数を用いる必要があるからである。
特にセキュリティゲートウェイ側は、通常の暗号パケットの送信に加えて、全てのクライアントに対して、鍵交換に伴う計算を行わなければならないので、極めて負荷が大きいという問題がある。
また、ユーザにとっても、計算に時間がかかるので、暗号セッション設定時に数十秒を要するという問題がある。
【0007】
一方、クライアントの公開鍵暗号で共有鍵を暗号化して配送するという方式も知られているが、クライアントの公開鍵を一元管理するサーバが必要になるという問題がある。この公開鍵を管理するサーバがクラッカーの攻撃対象となりやすく、厳重な防御手段が必要となって結果的にコストが高くなってしまうからである。
【0008】
本発明は、上述した課題を解決するためになされたものであり、鍵管理サーバを必要とせず、かつ、計算量が少ない暗号鍵交換方法および暗号鍵交換装置を提供することを目的としている。
【0009】
【課題を解決するための手段】
上述した課題を解決するために、請求項1に記載の発明は、複数種類の種値のセットを記憶した第1の装置と、前記第1の装置に記憶されているものと同じ種値のセットを記憶した第2の装置との間で共有される暗号鍵の取得方法であって、前記第1の装置が、暗号鍵を取得するための所定の一方向性関数の入力値とすべき1つの種値を、自装置に記憶された前記複数種類の種値のうちから選択すると共に、予め定められた規則に従って前記第2の装置との間でやり取りした情報を基に、前記一方向性関数を適用する回数を決定し、前記選択した種値を入力値として前記一方向性関数を前記決定した回数だけ適用することにより、前記第2の装置との間で最初に共有する暗号鍵を取得する初期暗号鍵取得段階と、前記第1の装置が、前記規則に従って前記第2の装置との間で再びやり取りした情報を基に、前記一方向性関数を適用する新たな回数を決定する新規回数決定段階と、前記第1の装置が、前記初期暗号鍵取得段階で選択しなかった種値の1つを自装置に記憶された複数種類の種値のうちから選択する新規種値選択段階と、前記第1の装置が、前記初期暗号鍵取得段階において前記一方向性関数を前記決定した回数よりも所定値少ない回数だけ適用した状態で得ていた適用結果と前記新規種値選択段階で選択した種値とを入力値として、前記一方向性関数を前記新規回数決定段階で決定した回数だけ適用することにより、前記第2の装置との間で新たに共有する暗号鍵を取得する新規暗号鍵取得段階とを有する。
【0010】
請求項2に記載の発明は、請求項1に記載の暗号鍵取得方法において、前記第1の装置は、前記新規回数決定段階、新規種値選択段階、及び新規暗号鍵取得段階を繰返すことで新たに共有する暗号鍵を順次取得し、2回目以降に行われる各新規種値選択段階では、前記第1の装置が、直前に行った新規種値選択段階で選択しなかった種値の1つを自装置に記憶された複数種類の種値のうちから選択し、2回目以降に行われる各新規暗号鍵取得段階では、前記第1の装置が、直前に行った新規暗号鍵取得段階において前記一方向性関数を前記決定した回数よりも所定値少ない回数だけ適用した状態で得ていた適用結果と前記新規種値選択段階で選択した種値とを入力値として、前記一方向性関数を前記新規回数決定段階で決定した回数だけ適用する。
【0011】
請求項3に記載の発明は、請求項2に記載の暗号鍵取得方法において、前記第1の装置は、2種類の異なる種値のセットを記憶し、前記繰返される各新規種値選択段階では、、前記第1の装置は、前記2種類の種値を交互に選択する。
請求項4に記載の発明は、請求項2に記載の暗号鍵取得方法において、前記初期暗号鍵取得段階では、前記第1の装置が、前記第2の装置との間で乱数を交換し、交換した乱数に所定の演算を行うことで前記一方向性関数を適用する回数を決定する。
請求項5に記載の発明は、請求項2に記載の暗号鍵取得方法において、前記新規回数決定段階では、前記第1の装置が、前記第2の装置との間で乱数を交換し、交換した乱数に所定の演算を行うことで前記前記一方向性関数を適用する新たな回数を決定する。
【0012】
請求項6に記載の発明は、請求項1又は2に記載の暗号鍵取得方法において、前記初期暗号鍵取得段階は、前記第2の装置が、自ら発生した第2の乱数値に所定のハッシュ関数を適用して得た暗号化乱数を前記第1の装置へ送信する段階と、前記第1の装置が、前記第2の装置から暗号化乱数を受信した後、自ら発生した第1の乱数値を前記第2の装置へ送信する段階と、前記第2の装置が、前記第1の装置から第1の乱数値を受信した後、前記発生した第2の乱数値を前記第1の装置へ送信する段階と、前記第1の装置が、前記第2の装置から第2の乱数値を受信した後、受信した第2の乱数値に前記ハッシュ関数を適用して得た暗号化乱数が前記第2の装置から受信した暗号化乱数と一致するか判断し、両暗号化乱数が一致すると判断したとき、前記発生した第1の乱数値と前記受信した第2の乱数値とに所定のビット演算を行うことで前記一方向性関数を適用する回数を決定する段階とを有する。
請求項7に記載の発明は、請求項1又は2に記載の暗号鍵取得方法において、前記新規回数決定段階は、前記第2の装置が、自ら発生した第2の乱数値に所定のハッシュ関数を適用して得た暗号化乱数を前記第1の装置へ送信する段階と、前記第1の装置が、前記第2の装置から暗号化乱数を受信した後、自ら発生した第1の乱数値を前記第2の装置へ送信する段階と、前記第2の装置が、前記第1の装置から第1の乱数値を受信した後、前記発生した第2の乱数値を前記第1の装置へ送信する段階と、前記第1の装置が、前記第2の装置から第2の乱数値を受信した後、受信した第2の乱数値に前記ハッシュ関数を適用して得た暗号化乱数が前記第2の装置から受信した暗号化乱数と一致するか判断し、両暗号化乱数が一致すると判断したとき、前記発生した第1の乱数値と前記受信した第2の乱数値とに所定のビット演算を行うことで前記一方向性関数を適用する新たな回数を決定する段階とを有する。
【0013】
請求項8に記載の発明は、他装置と鍵交換を行い共通鍵暗号方式を用いて情報を送受信する暗号鍵交換装置であって、前記他装置と共通する複数の種値を記憶する種値記憶手段と、一方向性関数の適用回数を前記他装置と鍵共有を行う毎に共通して決定する適用回数決定手段と、前記複数の種値のいずれかを入力値として、決定した前記回数だけ前記一方向性関数を適用した値を前記他装置との共通鍵とする鍵共有手段とを備え、前記鍵共有手段は、前記一方向性関数を直前に適用した回数から所定値減算した回数適用した値を第1の入力値とし、直前の鍵共有段階で用いられなかったいずれかの前記複数の種値から前記他装置との間において共通する規則に従って選択した値とを第2の入力値として、決定された前記適用回数だけ前記一方向性関数を適用した算出値を前記他装置との共通鍵とすることを特徴とする。
【0014】
請求項9に記載の発明は、請求項8記載の暗号鍵交換装置において、前記複数の種値は2種類の異なる値であり、前記鍵共有手段は、前記2種類の種値を交互に選択することを前記他装置との間において共通する規則とすることを特徴とする。
請求項10に記載の発明は、請求項8記載の暗号鍵交換装置において、前記適用回数決定手段は、自装置において発生させた乱数を前記他装置において発生させた乱数と交換し、自装置で発生させた乱数と他装置にて発生させた乱数とに所定の演算を行って前記一方向性関数の適用回数を決定することを特徴とする。
【0015】
請求項11に記載の発明は、請求項8記載の暗号鍵交換装置において、前記適用回数決定手段は、乱数を発生させる乱数発生手段と、前記乱数発生手段が発生させた乱数を入力値として前記一方向性関数を適用して生成した暗号化乱数を前記他装置に送信する暗号化乱数送信手段と、前記暗号化乱数の送信に応じて前記他装置から送信された乱数を受信する乱数受信手段と、前記乱数受信手段における受信に応じて、前記乱数発生手段が発生させた乱数を送信する乱数送信手段とを備え、前記乱数発生手段が発生させた乱数と前記乱数受信手段が受信した乱数とに所定の演算を行って前記一方向性関数の適用回数を決定することを特徴とする。
請求項12に記載の発明は、請求項8記載の暗号鍵交換装置において、前記適用回数決定手段は、乱数を発生させる乱数発生手段と、前記他装置が発生させた乱数を入力値として前記一方向性関数を適用して生成した暗号化乱数を前記他装置から受信する暗号化乱数受信手段と、前記乱数発生手段が発生した乱数を前記暗号化乱数の受信に応じて前記他装置へ送信する乱数送信手段と、前記乱数の送信に応じて前記他装置が発信した乱数を受信する乱数受信手段とを備え、前記乱数受信手段が受信した乱数を入力値として前記一方向性関数を適用して生成した暗号化乱数が、前記暗号化乱数受信手段が受信した暗号化乱数と一致する場合に、前記乱数発生手段が発生した乱数と前記乱数受信手段が受信した乱数とに所定の演算を行って前記一方向性関数の適用回数を決定することを特徴とする。
【0016】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施の形態について説明する。
【0017】
[1.実施形態の概要]
[1−1.実施形態の構成]
図1は実施形態の全体構成を示す図である。図1に示すように、本実施形態では、インターネット10に仮想私設網11が設定されており、企業LAN20に対してクライアント30が接続できるようにようになっている。セキュリティゲートウェイ21は、仮想私設網11を終端するサーバである。
本実施形態では、クライアント30はモバイル端末であり、図示を略した移動通信網やゲートウェイサーバなどを介してい10に接続されている。
従来技術においても説明したように、インターネット10におけるパケットの盗聴等を防止するために公開鍵暗号方式を用いると、共通鍵暗号方式用いた場合と比較して著しく処理負荷が高いので、本実施形態では、セキュリティゲートウェイ21とクライアント30との間の通信には共通鍵暗号方式を用いる。従って、セキュリティゲートウェイ21とクライアント30は、共通鍵を交換して共有する必要がある。
しかしながら、鍵を平文のままインターネット10上で送信すると、鍵データそのものを盗聴される可能性があるので、本実施形態では、後に詳しく説明するように、セキュリティゲートウェイ21とクライアント30間で予め共有する種値を入力値とした一方向性関数を所定回数適用したものを共通鍵として共有するものとし、新たな共通鍵を生成する際には、一方向性関数の適用回数をインターネット10上で交換するようにしている。
【0018】
[1−2.一方向性関数]
次に、図2を参照しながら、本実施形態で用いる一方向性関数について説明する。
一方向性関数とは、関数値y=f(x)の逆関数x=f-1(y)を求めることが極めて困難な関数である。例えば、従来技術で説明したディフィーヘルマン法では、関数値gr1r2mod(n)から、変数値r1,r2を求めることが極めて困難であるという、整数の特徴を基礎においている。
本実施形態では、一方向性関数として計算の容易なハッシュ関数を用いる。ハッシュ関数とは、任意長の入力データを圧縮して固定長のデータを出力する特殊な関数であり、主として改ざん防止や認証などに用いられている。
ハッシュ関数としては、インターネット標準の一方向性ハッシュ関数であるMD5や、SHA−1などが知られている。
【0019】
本実施形態では、図2に示すように、任意の2入力型の一方向性ハッシュ関数を“Hn(S,a)”と表記する。ここで、2入力型ハッシュ関数“Hn(S,a)”とは、例えば、二つの種S,aをbit結合するなどの処理により、通常のハッシュ関数H(X)へ二つの入力値を利用可能としたものである。また、“n”はハッシュ関数“H(S,a)”の適用回数を示し、“S”および“a”は入力値を示している。なお、このハッシュ関数は、図2に示すように、
Hn+1(S,a)=H(Hn(S,a),a)
Hn(S,a)=H(Hn−1(S,a),a)
と表す。この場合に、一方向性は、Hn−1→Hnの方向に作用し、Hn−1からHnを求めることは容易であるが、HnからHn−1を求めることは極めて困難となる。
本実施形態では、この一方向性を利用して、前回の共通鍵生成時に“Hn”を用いた場合には、新たな共通鍵を生成する際には“Hn−1”を用いることによって、仮に前回の共通鍵生成に用いた“Hn”が解読された場合であっても、次回の共通鍵を算出することを極めて困難にする。
【0020】
[2.鍵交換アルゴリズム]
次に、上述した一方向性関数を用いた本実施形態における鍵交換アルゴリズムについて説明する。先に簡単に説明したように、セキュリティゲートウェイ21とクライアント30間で予め共有する種値を入力値とした一方向性関数を所定回数適用して共通鍵をそれぞれ生成し、その後インターネット10上で新たに交換した回数をハッシュ関数に適用して共通鍵をそれぞれ生成する。
以下、セキュリティゲートウェイ21とクライアント30間でそれぞれ共通鍵を生成するアルゴリズムと、インターネット10上で交換する一方向性関数適用回数を決定するアルゴリズムについて、それぞれ詳しく説明する。
【0021】
[2−1.共通鍵生成アルゴリズム]
まず、図3を参照しながら、本実施形態における共通鍵生成アルゴリズムについて説明する。
セキュリティゲートウェイ2およびクライアント30は、種となる2種類のデータ“s1”および“s2”をそれぞれ予め記憶している。この種“s1”および“s2”は、ハッシュ関数“Hn(S,a)”の入力値となるデータとなる。ハッシュ関数の適用回数“n”は、セキュリティゲートウェイ2およびクライアント30間でネゴシエーションによって決定するものとし、共通鍵を生成する度に新たに決定される値である。なお、ネゴシエーションについては、一方向性関数適用回数決定アルゴリズムとして後に詳しく説明する。
【0022】
図3においては、1回目の共通鍵共有から3回目までの共通鍵共有までを例示している。図3中、“K1”は1回目の共通鍵であり、“K2”は2回目の共通鍵であり、“K3”は3回目の共通鍵である。また、“n1”は1回目のハッシュ関数適用回数であり、“n2”は2回目のハッシュ関数適用回数であり、“n3”は3回目のハッシュ関数適用回数である。
まず、1回目の共通鍵“K1”は、次式によって決定される。
K1=Hn1(s1)
すなわち、種“s1”を入力値としてハッシュ関数を“n1”回適用することによって生成される。
【0023】
次に、2回目の共通鍵“K2”は、次式によって決定される。
K2=Hn2(Hn1−1(s1)、s2)
すなわち、前回(1回目)共通鍵を生成した際に用いた“Hn1”から求めることが極めて困難な“Hn1−1”を用いることによって、仮に前回の共通鍵K1(すなわちHn1)が解読された場合であっても、新たな共通鍵生成には、“Hn1−1”を入力値として使用するので、Hn1から、Hn2(すなわちK2)算出されないようにしている(一方向性)。
なお、入力値のもう一つには、前回(1回目)共通鍵を生成した際に用いた種“s1”とは異なる種“s2”を用いている。仮に、入力値のもう一つに前回(1回目)共通鍵を生成した際に用いた種“s1”と同じ種“s1”を用いると、
となり、前回(1回目)の共通鍵“K1=Hn1(s1)”から容易に計算可能となってしまうからである。
また、ハッシュ関数の適用回数は、新たに生成した“n2”が用いられ、後に説明するように適用回数自体もインターネット10上では第三者が入手困難になっているので、更に共通鍵が第三者に解読される可能性が低くなる。
【0024】
3回目の共通鍵“K3”は、次式によって決定される。
K3=Hn3(Hn2−1(s2)、s1)
すなわち、ハッシュ関数の入力値には、前回(2回目)共通鍵を生成した際に用いた“Hn2”から求めることが極めて困難な“Hn2−1”および、前回(2回目)共通鍵を生成した際に用いた種“s2”とは異なる種“s1”を用い、ハッシュ関数の適用回数には、新たに生成した“n3”が用いられる。
【0025】
図3においては、1回目の共通鍵共有から3回目までの共通鍵共有までしか例示されていないが、以後同様に、ハッシュ関数の入力値には、前回共通鍵を生成した際に用いた“Hn”から求めることが極めて困難な“Hn−1”および、前回共通鍵を生成した際に用いた種とは異なる種を用い、ハッシュ関数の適用回数には、新たに生成した回数が用いられる。
従来技術で説明した関数値gr1r2mod(n)を求める処理と比較すると、2入力型一方向ハッシュ関数を所定回数適用する処理は極めて軽いので、セキュリティゲートウェイ21およびクライアント30における処理負担が大幅に軽減される。
【0026】
[2−2.一方向性関数適用回数決定アルゴリズム]
次に、図4〜図6を参照しながら、セキュリティゲートウェイ21およびクライアント30間でネゴシエーションを行って一方向性関数適用回数を決定するためのアルゴリズムについて説明する。なお、図4〜図6には、1回目の共通鍵生成時における例を示している。
【0027】
[2−2−1.例1]
例1は、一方が適用回数“n1”を生成して、他方に送信するものである。図4に示す例では、セキュリティゲートウェイ21が適用回数“n1”を生成している。セキュリティゲートウェイ21は、乱数“Ry1”を発生し、この乱数“Ry1”に所定のビット演算を行うことによって、新たな適用回数“n1”を生成してクライアント30に送信する。
しかしながら、一方が常に新たな適用回数“n”を生成することは、セキュリティ上の問題がある。使用されるすべての適用回数“n1”“n2”……を予めセキュリティゲートウェイ21が所有することができるようになるからである。
【0028】
[2−2−2.例2]
そこで、例2は、セキュリティゲートウェイ21およびクライアント30がそれぞれ乱数を発生させて、お互いに乱数を交換するようにしている。図5に示す例では、セキュリティゲートウェイ21が乱数“Ry1”を発生させ、クライアント30が乱数“Rx1”を発生させている。そして、インターネット10上で乱数“Rx1”および“Ry1”を交換し、セキュリティゲートウェイ21およびクライアント30は、それぞれ、自己で発生させた乱数と他方から送信された乱数とに所定のビット演算を行って新たな適用回数“n1”を生成する。
乱数“Rx1”および“Ry1”を交換することによって、セキュリティゲートウェイ21およびクライアント30は、いずれも乱数“Rx1”および“Ry1”を保有するので、共通する適用回数“n1”を得ることができる。
【0029】
この例では、セキュリティゲートウェイ21およびクライアント30は、それぞれ乱数を発生させているので、例1で示唆したような予め一方が適用回数を所有しうるという問題は解消できる。
しかしながら、乱数を交換する際に、一方が他方よりも先に送信する場合には、次のような問題がある。例えば、図5に示すように、まずクライアント30が乱数“Rx1”をセキュリティゲートウェイ21に送信し、セキュリティゲートウェイ21は乱数“Rx1”を受信した後に乱数“Ry1”をクライアント30に送信するような場合を考える。
仮にセキュリティゲートウェイ21が、予め適用回数“n1”を所有していたとすると、クライアント30から送信された乱数“Rx1”と適用回数“n1”とから乱数“Ry1”となるべき値を逆算して、クライアント30に送信することが可能となる。
従って、例2においても、使用されるすべての適用回数“n1”“n2”……を予めセキュリティゲートウェイ21が所有することができるようになってしまう。
【0030】
[2−2−3.例3]
そこで、例3では、セキュリティゲートウェイ21およびクライアント30がそれぞれ乱数を発生させて、お互いに乱数を交換するのだが、まず一方が自己で発生させた乱数を他方に送信し、他方が発生させた乱数を受信した後に、再度自己で発生させた乱数を送信するようにしている。
このとき、乱数をすべて平文で送信すると、最初に乱数を他方に送信する側では、使用されるすべての適用回数“n1”“n2”……を予め所有することはできないが、後に乱数を他方に送信する側では、使用されるすべての適用回数“n1”“n2”……を予め所有することができることになってしまう。
そこで、例3では、先に送信する乱数にハッシュ関数を適用した暗号化乱数を他方に送信する。
図6に示す例では、セキュリティゲートウェイ21が乱数“Ry1”を発生させ、乱数“Ry1”を入力値としてハッシュ関数を適用した暗号化乱数(図中、H(Ry1)と示している)をクライアント30に送信する。この時点では、クライアント30は、セキュリティゲートウェイ21が発生させた乱数“Ry1”を暗号化乱数“H(Ry1)”から算出することができないので、予め所有している適用回数から算出した乱数をセキュリティゲートウェイ21に送信することはできない。
クライアント30は、発生させた乱数“Rx1”を、暗号化乱数“H(Ry1)”を受信した後に平文でセキュリティゲートウェイ21に送信し、セキュリティゲートウェイ21は、クライアント30から乱数“Rx1”受信した後に、乱数“Ry1”を平文で送信する。
【0031】
クライアント30は、先に受信した暗号化乱数“H(Ry1)”と、2回目に受信した乱数“Ry1”を入力値としてハッシュ関数を適用した暗号化乱数“H(Ry1)”が一致した場合には、例2と同様に自己で発生させた乱数“Rx1”と他方から送信された乱数“Ry1”とに所定のビット演算を行って新たな適用回数“n1”を生成する。
先に乱数を送信する側であるセキュリティゲートウェイ21は、他方のクライアント30から乱数“Rx1”を受信すると、自己で発生させた乱数“Ry1”と他方から送信された乱数“Rx1”とに所定のビット演算を行って新たな適用回数“n1”を生成する。
例3においても、乱数“Rx1”および“Ry1”を交換することによって、セキュリティゲートウェイ21およびクライアント30は、いずれも乱数“Rx1”および“Ry1”を保有するので、共通する適用回数“n1”を得ることができる。
さらに、一方は他方に先だって乱数を送信し、他方から乱数を受信した後に、先に送信した乱数を再度送信するので、例2において説明したような、予め一方が適用回数を所有しておくという可能性がなくなる。
また、最初に乱数を他方に送信する側は、発生させた乱数を暗号化した暗号化乱数を他方に送信することによって、後に乱数を送信する側は他方が発生させた乱数をその時点では算出することができないので、例2において説明したような、予め一方が適用回数を所有しておくという可能性がなくなる。
【0032】
本実施形態で説明した共通鍵交換方法によれば、鍵そのものをインターネット10上で交換するのではなく、ハッシュ関数の適用回数を交換するので、共通鍵そのものが盗聴される危険性が減少する。
適用回数につては、暗号通信を行う2点間でネゴシエーションして毎回新たに決定するので、一方が予め適用回数を決定しておこくとができず、第三者は、Rx1、Ry1を盗聴することにより、適用回数を取得することができたとしても、S1、S2の値を取得しない限り、適用回数から、暗号鍵を計算することはできない。
このように、ハッシュ関数の適用回数は毎回変更される上、一方向性を利用した値および、予め2点間で秘密に共有した複数の種を入力値として用いるので、一度共通鍵が解読されても、その後生成される共通鍵を解読するのは極めて困難となり、セキュリティが向上する。
しかも、暗号化の演算としては、ハッシュ関数やビット演算などの比較的軽い処理を用いて実現できるので、管理サーバを必要とせず、かつ、計算量が少ない暗号鍵交換が可能となる。
【0033】
[3.変形例]
本発明は、上述した実施形態に限定されるものではなく、以下のような各種の変形が可能である。
【0034】
上記実施形態では、本発明にかかる暗号鍵交換方法をモバイルVPNに適用した場合を例として説明しているが、これに限らず、2点間で行う暗号通信に広く適用可能である。なお、暗号鍵交換装置としては、従来から用いられているコンピュータなどの演算装置を用いて実現可能であるので構成については詳細な説明を省略した。
【0035】
上記実施形態では、一方向性関数としてハッシュ関数をあげて説明したが、逆関数を求めることが極めて困難な関数であればハッシュ関数に限らず他の関数を用いても良い。また、2入力型ハッシュ関数についても、上記実施形態で説明した例に限らず、他の方法で実現しても構わない。
【0036】
また、適用回数のネゴシエーション例として上記実施形態では例1〜3をあげて説明したが、毎回新たな適用回数を生成できれば必ずしもこれらに限定されるものではない。
種についても、上記実施形態では2種類のデータをあげて説明しているが、複数であれば数は限定されない。また、一方向性関数の入力値として種を交互に使用することも限定されるものではなく、暗号通信を行う2点間で、前回と異なる種を用いるパターンの一致がなされていれば、どのようなパターンでも構わない。
【0037】
【発明の効果】
以上説明したように、本発明によれば、鍵管理サーバを必要とせず、かつ、計算量が少ない暗号鍵交換が可能となる。
【図面の簡単な説明】
【図1】 実施形態の全体構成を示す図である。
【図2】 実施形態で用いるハッシュ関数について説明する図である。
【図3】 実施形態における鍵交換アルゴリズムを説明する図である。
【図4】 ハッシュ関数適用回数決定アルゴリズムの例を示す図である(例1)。
【図5】 ハッシュ関数適用回数決定アルゴリズムの例を示す図である(例2)。
【図6】 ハッシュ関数適用回数決定アルゴリズムの例を示す図である(例3)。
【符号の説明】
10……インターネット、
11……仮想私設網、
20……企業LAN、
21……セキュリティゲートウェイ、
30……クライアント。
Claims (12)
- 複数種類の種値のセットを記憶した第1の装置と、前記第1の装置に記憶されているものと同じ種値のセットを記憶した第2の装置との間で共有される暗号鍵の取得方法であって、
前記第1の装置が、暗号鍵を取得するための所定の一方向性関数の入力値とすべき1つの種値を、自装置に記憶された前記複数種類の種値のうちから選択すると共に、予め定められた規則に従って前記第2の装置との間でやり取りした情報を基に、前記一方向性関数を適用する回数を決定し、前記選択した種値を入力値として前記一方向性関数を前記決定した回数だけ適用することにより、前記第2の装置との間で最初に共有する暗号鍵を取得する初期暗号鍵取得段階と、
前記第1の装置が、前記規則に従って前記第2の装置との間で再びやり取りした情報を基に、前記一方向性関数を適用する新たな回数を決定する新規回数決定段階と、
前記第1の装置が、前記初期暗号鍵取得段階で選択しなかった種値の1つを自装置に記憶された複数種類の種値のうちから選択する新規種値選択段階と、
前記第1の装置が、前記初期暗号鍵取得段階において前記一方向性関数を前記決定した回数よりも所定値少ない回数だけ適用した状態で得ていた適用結果と前記新規種値選択段階で選択した種値とを入力値として、前記一方向性関数を前記新規回数決定段階で決定した回数だけ適用することにより、前記第2の装置との間で新たに共有する暗号鍵を取得する新規暗号鍵取得段階と
を有する暗号鍵取得方法。 - 請求項1に記載の暗号鍵取得方法において、
前記第1の装置は、前記新規回数決定段階、新規種値選択段階、及び新規暗号鍵取得段階を繰返すことで新たに共有する暗号鍵を順次取得し、
2回目以降に行われる各新規種値選択段階では、
前記第1の装置が、直前に行った新規種値選択段階で選択しなかった種値の1つを自装置に記憶された複数種類の種値のうちから選択し、
2回目以降に行われる各新規暗号鍵取得段階では、
前記第1の装置が、直前に行った新規暗号鍵取得段階において前記一方向性関数を前記決定した回数よりも所定値少ない回数だけ適用した状態で得ていた適用結果と前記新規種値選択段階で選択した種値とを入力値として、前記一方向性関数を前記新規回数決定段階で決定した回数だけ適用する
暗号鍵取得方法。 - 請求項2に記載の暗号鍵取得方法において、
前記第1の装置は、2種類の異なる種値のセットを記憶し、
前記繰返される各新規種値選択段階では、
前記第1の装置が、
前記2種類の種値を交互に選択することを特徴とする
暗号鍵交換方法。 - 請求項1又は2に記載の暗号鍵取得方法において、
前記初期暗号鍵取得段階では、
前記第1の装置が、
前記第2の装置との間で乱数を交換し、交換した乱数に所定の演算を行うことで前記一方向性関数を適用する回数を決定することを特徴とする
暗号鍵取得方法。 - 請求項1又は2に記載の暗号鍵取得方法において、
前記新規回数決定段階では、
前記第1の装置が、
前記第2の装置との間で乱数を交換し、交換した乱数に所定の演算を行うことで前記前記一方向性関数を適用する新たな回数を決定することを特徴とする
暗号鍵取得方法。 - 請求項1又は2に記載の暗号鍵取得方法において、
前記初期暗号鍵取得段階は、
前記第2の装置が、自ら発生した第2の乱数値に所定のハッシュ関数を適用して得た暗号化乱数を前記第1の装置へ送信する段階と、
前記第1の装置が、前記第2の装置から暗号化乱数を受信した後、自ら発生した第1の乱数値を前記第2の装置へ送信する段階と、
前記第2の装置が、前記第1の装置から第1の乱数値を受信した後、前記発生した第2の乱数値を前記第1の装置へ送信する段階と、
前記第1の装置が、前記第2の装置から第2の乱数値を受信した後、受信した第2の乱数値に前記ハッシュ関数を適用して得た暗号化乱数が前記第2の装置から受信した暗号化乱数と一致するか判断し、両暗号化乱数が一致すると判断したとき、前記発生した第1の乱数値と前記受信した第2の乱数値とに所定のビット演算を行うことで前記一方向性関数を適用する回数を決定する段階と
を有する暗号鍵取得方法。 - 請求項1又は2に記載の暗号鍵取得方法において、
前記新規回数決定段階は、
前記第2の装置が、自ら発生した第2の乱数値に所定のハッシュ関数を適用して得た暗号化乱数を前記第1の装置へ送信する段階と、
前記第1の装置が、前記第2の装置から暗号化乱数を受信した後、自ら発生した第1の乱数値を前記第2の装置へ送信する段階と、
前記第2の装置が、前記第1の装置から第1の乱数値を受信した後、前記発生した第2の乱数値を前記第1の装置へ送信する段階と、
前記第1の装置が、前記第2の装置から第2の乱数値を受信した後、受信した第2の乱数値に前記ハッシュ関数を適用して得た暗号化乱数が前記第2の装置から受信した暗号化乱数と一致するか判断し、両暗号化乱数が一致すると判断したとき、前記発生した第1の乱数値と前記受信した第2の乱数値とに所定のビット演算を行うことで前記一方向性関数を適用する新たな回数を決定する段階と
を有する暗号鍵取得方法。 - 他装置と鍵交換を行い共通鍵暗号方式を用いて情報を送受信する暗号鍵交換装置であって、
前記他装置と共通する複数の種値を記憶する種値記憶手段と、
一方向性関数の適用回数を前記他装置と鍵共有を行う毎に共通して決定する適用回数決定手段と、
前記複数の種値のいずれかを入力値として、決定した前記回数だけ前記一方向性関数を適用した値を前記他装置との共通鍵とする鍵共有手段と
を備え、
前記鍵共有手段は、
前記一方向性関数を直前に適用した回数から所定値減算した回数適用した値を第1の入力値とし、直前の鍵共有段階で用いられなかったいずれかの前記複数の種値から前記他装置との間において共通する規則に従って選択した値とを第2の入力値として、決定された前記適用回数だけ前記一方向性関数を適用した算出値を前記他装置との共通鍵とすることを特徴とする
暗号鍵交換装置。 - 請求項8記載の暗号鍵交換装置において、
前記複数の種値は2種類の異なる値であり、
前記鍵共有手段は、
前記2種類の種値を交互に選択することを前記他装置との間において共通する規則とすることを特徴とする
暗号鍵交換装置。 - 請求項8記載の暗号鍵交換装置において、
前記適用回数決定手段は、
自装置において発生させた乱数を前記他装置において発生させた乱数と交換し、自装置で発生させた乱数と他装置にて発生させた乱数とに所定の演算を行って前記一方向性関数の適用回数を決定することを特徴とする
暗号鍵交換装置。 - 請求項8記載の暗号鍵交換装置において、
前記適用回数決定手段は、
乱数を発生させる乱数発生手段と、
前記乱数発生手段が発生させた乱数を入力値として前記一方向性関数を適用して生成した暗号化乱数を前記他装置に送信する暗号化乱数送信手段と、
前記暗号化乱数の送信に応じて前記他装置から送信された乱数を受信する乱数受信手段と、
前記乱数受信手段における受信に応じて、前記乱数発生手段が発生させた乱数を送信する乱数送信手段と
を備え、
前記乱数発生手段が発生させた乱数と前記乱数受信手段が受信した乱数とに所定の演算を行って前記一方向性関数の適用回数を決定することを特徴とする
暗号鍵交換装置。 - 請求項8記載の暗号鍵交換装置において、
前記適用回数決定手段は、
乱数を発生させる乱数発生手段と、
前記他装置が発生させた乱数を入力値として前記一方向性関数を適用して生成した暗号化乱数を前記他装置から受信する暗号化乱数受信手段と、
前記乱数発生手段が発生した乱数を前記暗号化乱数の受信に応じて前記他装置へ送信する乱数送信手段と、
前記乱数の送信に応じて前記他装置が発信した乱数を受信する乱数受信手段と
を備え、
前記乱数受信手段が受信した乱数を入力値として前記一方向性関数を適用して生成した暗号化乱数が前記暗号化乱数受信手段が受信した暗号化乱数と一致する場合に、前記乱数発生手段が発生した乱数と前記乱数受信手段が受信した乱数とに所定の演算を行って前記一方向性関数の適用回数を決定することを特徴とする
暗号鍵交換装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27042699A JP3699618B2 (ja) | 1999-09-24 | 1999-09-24 | 暗号鍵取得方法及び暗号鍵交換装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27042699A JP3699618B2 (ja) | 1999-09-24 | 1999-09-24 | 暗号鍵取得方法及び暗号鍵交換装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001094548A JP2001094548A (ja) | 2001-04-06 |
JP3699618B2 true JP3699618B2 (ja) | 2005-09-28 |
Family
ID=17486120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27042699A Expired - Fee Related JP3699618B2 (ja) | 1999-09-24 | 1999-09-24 | 暗号鍵取得方法及び暗号鍵交換装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3699618B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005236348A (ja) * | 2004-02-17 | 2005-09-02 | Matsushita Electric Ind Co Ltd | 無線システム、無線装置、無線通信方法、及びプログラム |
JP2006121215A (ja) * | 2004-10-19 | 2006-05-11 | Fuji Electric Holdings Co Ltd | 鍵交換方法、及び、鍵交換処理装置 |
KR101092543B1 (ko) * | 2004-11-12 | 2011-12-14 | 삼성전자주식회사 | 브로드캐스트 암호화를 위한 사용자 키 관리 방법 |
JP2009284086A (ja) * | 2008-05-20 | 2009-12-03 | Tokai Rika Co Ltd | 暗号鍵更新システム及び暗号鍵更新方法 |
US8971530B2 (en) | 2009-06-24 | 2015-03-03 | Intel Corporation | Cryptographic key generation using a stored input value and a stored count value |
-
1999
- 1999-09-24 JP JP27042699A patent/JP3699618B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001094548A (ja) | 2001-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5633933A (en) | Method and apparatus for a key-management scheme for internet protocols | |
US7424615B1 (en) | Mutually authenticated secure key exchange (MASKE) | |
US6754678B2 (en) | Securely and autonomously synchronizing data in a distributed computing environment | |
US7221757B2 (en) | Method and system for accelerated data encryption | |
CN110011795B (zh) | 基于区块链的对称群组密钥协商方法 | |
JP4527358B2 (ja) | 鍵供託を使用しない、認証された個別暗号システム | |
US6026167A (en) | Method and apparatus for sending secure datagram multicasts | |
JP5544355B2 (ja) | 共有の秘密の確認の方法およびシステム | |
JPH1155243A (ja) | 鍵管理方式におけるペア鍵の実装、閉ユーザグループにおける完全秘密転送の達成、及びデータグラムマルチキャスト送信のための方法、及び装置 | |
JPH088895A (ja) | インターネット手順のキー管理のための方法ならびにその装置 | |
US20230188325A1 (en) | Computer-implemented system and method for highly secure, high speed encryption and transmission of data | |
JPH0918469A (ja) | 暗号通信装置、システム及び暗号装置 | |
US10630476B1 (en) | Obtaining keys from broadcasters in supersingular isogeny-based cryptosystems | |
CN111656728B (zh) | 一种用于安全数据通信的设备、系统和方法 | |
JP3172396B2 (ja) | 暗号通信装置及び暗号通信システム | |
JP3699618B2 (ja) | 暗号鍵取得方法及び暗号鍵交換装置 | |
JP3854954B2 (ja) | データ共有装置 | |
JP2002527992A (ja) | n人の加入者用の共通の暗号用の鍵の確立方法 | |
JP2006140743A (ja) | 共通鍵配送方法 | |
US10880278B1 (en) | Broadcasting in supersingular isogeny-based cryptosystems | |
Ahmedova et al. | Generation and distribution secret encryption keys with parameter | |
AU2002323203B2 (en) | Method and system for accelerated data encryption | |
WO1999049613A1 (en) | Cryptographic key-recovery mechanism | |
Issad et al. | Secure Hybrid Crypto-system AES/RSA on FPGA for Data Communication | |
CN114362926B (zh) | 基于密钥池的量子保密通信网络密钥管理通信系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050125 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050328 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050705 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050708 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080715 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090715 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090715 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100715 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110715 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110715 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120715 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120715 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130715 Year of fee payment: 8 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |