JP2006121215A - 鍵交換方法、及び、鍵交換処理装置 - Google Patents
鍵交換方法、及び、鍵交換処理装置 Download PDFInfo
- Publication number
- JP2006121215A JP2006121215A JP2004304597A JP2004304597A JP2006121215A JP 2006121215 A JP2006121215 A JP 2006121215A JP 2004304597 A JP2004304597 A JP 2004304597A JP 2004304597 A JP2004304597 A JP 2004304597A JP 2006121215 A JP2006121215 A JP 2006121215A
- Authority
- JP
- Japan
- Prior art keywords
- key
- key exchange
- random number
- hash function
- seed
- 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
【課題】 安全性を確保しつつ、少ない処理負荷で鍵交換を可能にする鍵交換方法、及び、鍵交換処理装置を提供する。
【解決手段】 鍵交換処理置10の乱数生成部1−6が種から乱数を生成する。一方向性ハッシュ関数部1−8が、生成された乱数で示される回数分、ハッシュ関数により繰返し演算を行うことにより、種から鍵を算出する。鍵交換部1−2が、算出された鍵を他の鍵交換処理装置と交換する。
【選択図】 図1
【解決手段】 鍵交換処理置10の乱数生成部1−6が種から乱数を生成する。一方向性ハッシュ関数部1−8が、生成された乱数で示される回数分、ハッシュ関数により繰返し演算を行うことにより、種から鍵を算出する。鍵交換部1−2が、算出された鍵を他の鍵交換処理装置と交換する。
【選択図】 図1
Description
本発明は、暗号化通信を行うための鍵を交換する鍵交換方法、及び、鍵交換処理装置に関する。
第三者に知られることなく、安全に2者間、もしくはそれ以上の間で安全な通信を行うために、データを暗号化して伝送されることがよく行われる。その時に利用される暗号技術として現在広く利用されている方法を大きく分類すると、共通鍵暗号方式と、公開鍵暗号方式との2通りが存在する。
公開鍵暗号方式は、各端末により秘密に保持され、かつ、データを暗号化するための秘密鍵と、暗号化されたデータを復号化ための公開鍵とを用いた暗号化方式である(例えば、特許文献1参照)。一方、共通鍵暗号方式は、共通鍵と呼ばれる2者間でのみ共有しているデータをもとに、秘密にしたいデータを第三者に分からないデータに変換する方式である。この共通鍵暗号方式は、公開鍵暗号方式に比べ、一般的に暗号化スピードが速いという長所がある。このため、今後の伝送路の高速化に対応するためにも、通常のトラフィックデータに対する暗号化方式として共通鍵暗号方式を採用するのが適している。ところが、暗号化を行う時に最も重要なパラメータである共通鍵は第三者に知られてはならず、かつ、トラフィックデータの通信を開始する以前に何らかの安全な手段で共有しておかなくてはならない。これを解決する手段として、D−H(Diffie−Hellman)鍵交換方式(Diffe,W.and Hellman M.E.::New directions is cryptography, IEEE Trans.on Inform.Theory,Vol.I T‐22,No.6,pp.644‐654,1976)が提案されている。
公開鍵暗号方式は、各端末により秘密に保持され、かつ、データを暗号化するための秘密鍵と、暗号化されたデータを復号化ための公開鍵とを用いた暗号化方式である(例えば、特許文献1参照)。一方、共通鍵暗号方式は、共通鍵と呼ばれる2者間でのみ共有しているデータをもとに、秘密にしたいデータを第三者に分からないデータに変換する方式である。この共通鍵暗号方式は、公開鍵暗号方式に比べ、一般的に暗号化スピードが速いという長所がある。このため、今後の伝送路の高速化に対応するためにも、通常のトラフィックデータに対する暗号化方式として共通鍵暗号方式を採用するのが適している。ところが、暗号化を行う時に最も重要なパラメータである共通鍵は第三者に知られてはならず、かつ、トラフィックデータの通信を開始する以前に何らかの安全な手段で共有しておかなくてはならない。これを解決する手段として、D−H(Diffie−Hellman)鍵交換方式(Diffe,W.and Hellman M.E.::New directions is cryptography, IEEE Trans.on Inform.Theory,Vol.I T‐22,No.6,pp.644‐654,1976)が提案されている。
端末Txと端末Tyの間で鍵を共有する場合、次のようにして鍵を共有する。まず、大きな素数Pと任意数Aを2者間で共有しておく。このPとAは秘密ではなく、第三者にしられてもよい。次に、端末Txと端末Tyの双方がそれぞれ、任意数x及びyを選択する。これらの値から、端末Tx、端末Tyの双方で、次式により公開情報XとYを計算する(a(mod b)は、aをbで割った余りを表す。以下、このような表記を行う)。
端末Tx :X=Ax(mod P)
端末Ty :Y=Ay(mod P)
端末Tx :X=Ax(mod P)
端末Ty :Y=Ay(mod P)
次に、このXとYの値を、それぞれの通信相手に送信し、次式によりKxy、Kyxを計算する。
端末Tx :Kxy=Yx(mod P)
端末Ty :Kyx=Xy(mod P)
この二つの値は、次式よりKxy=Kyxとなることが分かり、共有秘密情報として扱うことができ、共通鍵等に使用することが可能となる。
Kxy=Yx(mod P)
Kyx=Xy(mod P)
端末Tx :Kxy=Yx(mod P)
端末Ty :Kyx=Xy(mod P)
この二つの値は、次式よりKxy=Kyxとなることが分かり、共有秘密情報として扱うことができ、共通鍵等に使用することが可能となる。
Kxy=Yx(mod P)
Kyx=Xy(mod P)
上記のように、秘密情報x及びyを、計算により求められた公開情報X及びYから求めることは、計算量的に非常に困難である。これは一般的に離散対数問題と呼ばれる。
離散対数問題とは、pを素数として、a<pなるaと正整数xに対し、y=axmod pなるxを求めることが不可能に近い関数問題のことをいう。この離散対数問題は一方向性関数の一つである。一方向性関数とは、関数fと、当該関数fにxを代入して算出された値yとが与えられていた場合に、xを求めることが困難な関数fのことをいう。
離散対数問題とは、pを素数として、a<pなるaと正整数xに対し、y=axmod pなるxを求めることが不可能に近い関数問題のことをいう。この離散対数問題は一方向性関数の一つである。一方向性関数とは、関数fと、当該関数fにxを代入して算出された値yとが与えられていた場合に、xを求めることが困難な関数fのことをいう。
さらに、秘密情報x及びyのサイズとして、通常数100ビット程度〜2000ビット程度を使用するため、鍵の総当り攻撃にも強い。しかしながら、近年計算機の性能の向上により、鍵を推定するために必要な処理時間が短縮されつつある。したがって、共通鍵を推定されることを防ぐために、あるタイミングで新たな共通鍵に変更するといったことがよく行われる。図5には、従来の鍵管理システムの構成を示す。従来の鍵管理システムでは、鍵管理サーバが各端末の鍵管理を行い、定期的にインターネットを介して鍵を各機器に配信し、各端末の鍵を変更していた。また、保守管理サーバが端末機器を監視し、鍵が破られたときに鍵管理サーバは迅速に鍵の交換を行っていた。このような中央集権的なシステムは維持管理費用が発生し、商品売買等の利益追求型ビジネスモデル(BtoC(Business to Consumer))にしか利用できない。しかし、今後IPv6環境でのネットワークが進展してくるとCtoC(Consumer to Consumer)型のNPO(非営利団体)型モデルが発展すると考えられる。このような場合には鍵管理サーバが運営するビジネスモデルは考えられず、端末同士で鍵交換を行うシステムとなる。
特開2003−124927号公報
IPv6環境下での組込機器の鍵管理に関しては、解決しなければならない問題点が多い。一例をあげると、組込機器がIPv6環境下での暗号通信のための標準プロトコルであるIPSec(Internet Protocol Security)を用いる際には、SA(Security Association)の確立及び通信相手の認証にIKE(internet key exchange)プロトコルを利用している。RFC(Request For Comments)では、IKEにおける通信相手の認証に関しては、事前共有鍵方式、デジタル署名認証方式、公開鍵暗号化方式、改良公開鍵暗号方式の4種類が規定されているが、現状では事前共有鍵方式のみが利用されている。このIKEにおいては、定期的に端末間の共通鍵を変更する必要があるが、このときの交換方法としてD−H鍵交換方式が使用されている。D−H鍵交換方式においては多倍長剰余演算を行う必要があるため、CPU処理能力の低い組込機器が2048ビット長の離散対数を処理するのは実現性がない。このように、多倍長剰余演算であるD−H鍵交換方式の組み込み機器への導入は、コストパフォーマンスの上からは略不可能である。
また、一般的な8ビットCPUを有する装置においてD−H鍵交換方式を用いた場合、鍵交換に450秒程度の処理時間が報告されている。CPU処理能力の低い装置においても、処理負荷をかけずに安全に鍵交換を行う仕組みが必要となる。
この発明は上記の問題点を解決するためになされたものであり、安全性を確保しつつ、少ない処理負荷で鍵交換を可能にする鍵交換方法、及び、鍵交換処理装置を提供することを目的とする。
この発明は上記の問題点を解決するためになされたものであり、安全性を確保しつつ、少ない処理負荷で鍵交換を可能にする鍵交換方法、及び、鍵交換処理装置を提供することを目的とする。
上記課題を解決するために、請求項1に記載の発明は、2つの鍵交換処理装置間で暗号化通信を行うための鍵を交換する鍵交換方法において、前記2つの鍵交換処理装置が、乱数生成の基となるデータである種から乱数を生成する乱数生成ステップと、前記2つの鍵交換処理装置が、前記乱数生成ステップにおいて生成された乱数で示される回数分ハッシュ関数による繰返し演算を行うことにより、前記種から鍵を算出する一方向性ハッシュ関数ステップと、前記2つの鍵交換処理装置同士が、前記一方向性ハッシュ関数ステップにおいて算出された鍵を交換する鍵交換ステップとを有することを特徴とする鍵交換方法を提供する。
この方法によれば、鍵交換処理装置は、多倍長演算を行う必要のないハッシュ関数を用いて、乱数で示される回数分演算を行うことにより鍵を算出するため、安全性を確保しつつ、少ない処理負荷で鍵交換を行うことができる。
この方法によれば、鍵交換処理装置は、多倍長演算を行う必要のないハッシュ関数を用いて、乱数で示される回数分演算を行うことにより鍵を算出するため、安全性を確保しつつ、少ない処理負荷で鍵交換を行うことができる。
請求項2に記載の発明は、請求項1に記載の鍵交換方法において、前記鍵交換ステップにおいて交換された鍵同士の値が等しい場合に、前記乱数生成ステップから前記鍵交換ステップまでの処理を所定回数繰り返すことを特徴とする。
この方法によれば、ハッシュ関数により算出された鍵をさらにハッシュ関数を用いて複数回演算を行うことにより、第三者に種や共通鍵を推定されることがより困難となり、安全性を高めることができる。
この方法によれば、ハッシュ関数により算出された鍵をさらにハッシュ関数を用いて複数回演算を行うことにより、第三者に種や共通鍵を推定されることがより困難となり、安全性を高めることができる。
請求項3に記載の発明は、請求項1又は2に記載の鍵交換方法において、前記鍵交換ステップにおいて交換された鍵同士の値が等しい場合に、該交換された鍵のハッシュ関数による演算前の値を前記2つの鍵交換処理装置間における共通鍵として用いることを特徴とする。
この方法によれば、2つの鍵交換処理装置間で交換した鍵を直接共通鍵として使用しないことで、鍵交換時に鍵を第三者に傍受された場合の安全性を高めることができる。
この方法によれば、2つの鍵交換処理装置間で交換した鍵を直接共通鍵として使用しないことで、鍵交換時に鍵を第三者に傍受された場合の安全性を高めることができる。
請求項4に記載の発明は、請求項2又は3に記載の鍵交換方法において、前記一方向性ハッシュ関数ステップにおける処理を繰り返す場合に、今回使用する種から鍵を算出する代わりに、今回使用する種と、前回算出された鍵のハッシュ関数による演算前の値と、を結合したメッセージから鍵を算出することを特徴とする。
この方法によれば、演算が複雑となるため、第三者に種や共通鍵を容易に推定されることがなくなり、安全性を高めることができる。
この方法によれば、演算が複雑となるため、第三者に種や共通鍵を容易に推定されることがなくなり、安全性を高めることができる。
請求項5に記載の発明は、他の装置と暗号化通信を行うための鍵を交換する鍵交換処理装置において、乱数生成の基となるデータである種を複数保持するパラメータ保持手段と、前記パラメータ保持手段により保持されている複数の種の中から1つの種を選択する種選択手段と、前記種選択手段により選択された種から乱数を生成する乱数生成手段と、前記乱数生成手段により生成された乱数で示される回数分ハッシュ関数による繰返し演算を行うことにより、前記種から鍵を算出する一方向性ハッシュ関数手段と、前記一方向性ハッシュ関数手段により算出された鍵を他の装置と交換する鍵交換手段とを備えることを特徴とする鍵交換処理装置を提供する。
この構成によれば、鍵交換処理装置は、多倍長演算を行う必要のないハッシュ関数を用いて、乱数で示される回数分演算を行うことにより鍵を算出するため、安全性を確保しつつ、少ない処理負荷で高速に鍵交換を行うことができる。
この構成によれば、鍵交換処理装置は、多倍長演算を行う必要のないハッシュ関数を用いて、乱数で示される回数分演算を行うことにより鍵を算出するため、安全性を確保しつつ、少ない処理負荷で高速に鍵交換を行うことができる。
このように本発明によれば、鍵交換処理装置は、多倍長演算を行う必要のないハッシュ関数を用いて、乱数で示される回数分演算を行うことにより鍵を算出するため、安全性を確保しつつ、少ない処理負荷で鍵交換を行うことができる。
以下、図を参照して、発明の実施の形態について説明する。
図1は、本発明の実施の形態に係る鍵交換処理装置1の構成を示すブロック図である。同図に示すように、鍵交換処理装置1は、CPU処理制御部1−1と、鍵交換部1−2と、暗号化/復号化処理部1−3と、通信処理部1−4と、種選択部1−5と、乱数生成部1−6と、パラメータ保持部1−7と、一方向性ハッシュ関数部1−8と、通信インターフェース(I/F)回路1−9とを含んで構成されている。鍵交換処理装置1は、比較的CPU処理能力の低い組込機器であり、例えば、携帯電話機、PDA(Personal Digital Assistance)、ICカード等が含まれる。
図1は、本発明の実施の形態に係る鍵交換処理装置1の構成を示すブロック図である。同図に示すように、鍵交換処理装置1は、CPU処理制御部1−1と、鍵交換部1−2と、暗号化/復号化処理部1−3と、通信処理部1−4と、種選択部1−5と、乱数生成部1−6と、パラメータ保持部1−7と、一方向性ハッシュ関数部1−8と、通信インターフェース(I/F)回路1−9とを含んで構成されている。鍵交換処理装置1は、比較的CPU処理能力の低い組込機器であり、例えば、携帯電話機、PDA(Personal Digital Assistance)、ICカード等が含まれる。
CPU処理制御部1−1は、CPU(Central Processing Unit)で構成され、鍵交換処理装置1全体の制御を行う。パラメータ保持部1−7は、ROM(Read Only Memory)、RAM(Random Access Memory)等のデータを記憶する記憶媒体で構成され、乱数生成の基となるデータである複数の種(シード)や、相手の鍵交換処理装置1のアドレスと対応する共有秘密情報及び共通鍵を保持する。
種選択部1−5は、パラメータ保持部1−7に保持されている複数の種の中から、乱数生成用の種を選択する。種を選択する方法としては、例えば、2つの鍵交換処理装置1の間において事前に通信を行うことにより、使用する種と、当該種を使用する順番とをあらかじめ取り決めておく方法がある。また、他の方法としては、パラメータ保持部1−7に保持されている複数の種のうちの最大値と、所定の乱数値との2進数の論理和の値を種とする方法がある。
乱数生成部1−6は、パラメータ保持部1−7に保持されている種に基づいて、鍵交換処理に必要となる任意数を生成する。このときに乱数生成部1−6は、あらかじめROMに記憶されている擬似乱数生成用の関数を用いて擬似乱数を生成する。ここで、擬似乱数とは、基になる種の値によって生成される乱数の値が一定となる乱数のことである。
乱数生成部1−6は、パラメータ保持部1−7に保持されている種に基づいて、鍵交換処理に必要となる任意数を生成する。このときに乱数生成部1−6は、あらかじめROMに記憶されている擬似乱数生成用の関数を用いて擬似乱数を生成する。ここで、擬似乱数とは、基になる種の値によって生成される乱数の値が一定となる乱数のことである。
一方向性ハッシュ関数部1−8は、あらかじめROMに記憶されているハッシュ関数を用いて演算を行う。具体的には、一方向性ハッシュ関数部1−8は、1回目の鍵交換で交換する鍵を生成する際には、乱数生成部1−6により生成された乱数で示される回数分、ハッシュ関数により繰返し演算を行うことにより、種から鍵を算出する。すなわち、一方向性ハッシュ関数部1−8は、種をハッシュ関数に代入してハッシュ値を算出し、当該算出されたハッシュ値を再度ハッシュ関数に代入して次のハッシュ値を算出する、といったハッシュ値を算出する処理を、乱数回数分繰り返す。
また、一方向性ハッシュ関数部1−8は、2回目の繰返し以降に鍵を算出する際には、1回目のように今回使用する種から鍵を算出する代わりに、今回使用する種と、前回算出された鍵のハッシュ関数による1回の演算前の値と、を結合したデータから鍵を算出する。
鍵の「ハッシュ関数による1回の演算前の値」とは、鍵を1回ハッシュ関数で逆算した値、すなわち、当該鍵を算出するためにハッシュ関数による演算が実施された回数よりも、1回少なくハッシュ関数による演算が実施されて算出された値のことである。一方向性ハッシュ関数部1−8は、演算の履歴をRAMに記憶しておくことで、当該値を容易に取得することができる。
鍵の「ハッシュ関数による1回の演算前の値」とは、鍵を1回ハッシュ関数で逆算した値、すなわち、当該鍵を算出するためにハッシュ関数による演算が実施された回数よりも、1回少なくハッシュ関数による演算が実施されて算出された値のことである。一方向性ハッシュ関数部1−8は、演算の履歴をRAMに記憶しておくことで、当該値を容易に取得することができる。
具体的な数式で示すと、鍵の交換回数をn(nは2以上の整数)回とした場合、一方向性ハッシュ関数部1−8は、以下の式を用いてi(1≦i≦n、iは整数)回目の鍵の値を算出する。
Ki=HNi(Si) (i=1の場合)
Ki=HNi(HN(i-1)-1(S(i−1))、Si) (2≦i≦nの場合)
(Ki:i回目に算出される鍵、Si:i回目に使用される種、Ni:i回目に使用される乱数値、H(x):ハッシュ関数、HNi(x):ハッシュ関数によるNi回の繰返し演算、H(x、y):xとyとを結合したメッセージのハッシュ関数代入による演算)
Ki=HNi(Si) (i=1の場合)
Ki=HNi(HN(i-1)-1(S(i−1))、Si) (2≦i≦nの場合)
(Ki:i回目に算出される鍵、Si:i回目に使用される種、Ni:i回目に使用される乱数値、H(x):ハッシュ関数、HNi(x):ハッシュ関数によるNi回の繰返し演算、H(x、y):xとyとを結合したメッセージのハッシュ関数代入による演算)
なお、鍵交換処理装置1は、n回目に一方向性ハッシュ関数部1−8が交換した鍵同士の値が等しい場合には、当該交換された鍵のハッシュ関数による1回の演算前の値を2つの鍵交換処理装置1の間における共通鍵として用いる。当該共通鍵は以下の式で表される。
Kn-1=HNn-1(HN(n-1)-1(S(n−1))、Sn)
(Kn-1:Knのハッシュ関数による1回の演算前の値)
Kn-1=HNn-1(HN(n-1)-1(S(n−1))、Sn)
(Kn-1:Knのハッシュ関数による1回の演算前の値)
ここで、ハッシュ関数とは、オリジナルのメッセージを、一般的にそれよりも短い固定長のハッシュ値(メッセージダイジェスト)に変換する関数である。ハッシュ関数によってオリジナルのメッセージはデータ量の少ないハッシュ値に変換されるため、鍵交換処理装置1が当該算出されたハッシュ値を用いて各種処理を行う場合に処理負荷を軽減することができる。代表的なハッシュ関数としては、SHA−1、MD−5が存在する。
ハッシュ関数とは一方向性関数の一種である。一方向性関数とは、図2に示すように、ハッシュ関数による演算でHn-1からHnを算出することは簡単であるが、HnをHn-1へ戻すことが困難な関数である。
鍵交換部1−2は、一方向性ハッシュ関数部1−8により算出された鍵を、他の鍵交換処理装置1と交換する。
暗号/復号化処理部1−3は、共通鍵を用いたデータの暗号化/復号化処理を行う。通信処理部1−4は、送信パケットの構築や受信パケットの解析を行う。
鍵交換部1−2は、一方向性ハッシュ関数部1−8により算出された鍵を、他の鍵交換処理装置1と交換する。
暗号/復号化処理部1−3は、共通鍵を用いたデータの暗号化/復号化処理を行う。通信処理部1−4は、送信パケットの構築や受信パケットの解析を行う。
(第1動作例)
次に、図3を参照しながら、鍵交換処理装置1aと鍵交換処理装置1bとの間で行われる鍵交換方法の動作例を説明する。
ここでは、あらかじめ乱数生成用の種として種S1、種S2の2つが用意され、各鍵交換処理装置1a、1bのパラメータ保持部1−7に保持されているものとする。また、本動作例における鍵交換の回数を2回とする。また、鍵交換処理装置1aと鍵交換処理装置1bとは同じ動作を行うため、以下の説明においては、鍵交換処理装置1a,1bの両方の機能部の動作を説明しているものとする。
次に、図3を参照しながら、鍵交換処理装置1aと鍵交換処理装置1bとの間で行われる鍵交換方法の動作例を説明する。
ここでは、あらかじめ乱数生成用の種として種S1、種S2の2つが用意され、各鍵交換処理装置1a、1bのパラメータ保持部1−7に保持されているものとする。また、本動作例における鍵交換の回数を2回とする。また、鍵交換処理装置1aと鍵交換処理装置1bとは同じ動作を行うため、以下の説明においては、鍵交換処理装置1a,1bの両方の機能部の動作を説明しているものとする。
まず、1回目の鍵交換処理においては、種選択部1−5は、種S1を鍵交換処理装置1a,1b間で利用することに取り決める。乱数生成部1−6は、種S1に基づいて乱数N1をお互いに発生させる(ステップS11)。
次に、一方向性ハッシュ関数部1−8は、関数HN1を用いて種S1から鍵K1を生成する(ステップS12)。具体的には、一方向性ハッシュ関数部1−8は、ハッシュ関数を用いて種S1からハッシュ値を算出し、さらに、ハッシュ関数を用いて当該算出されたハッシュ値から新たなハッシュ値を算出する、というハッシュ関数による繰返し演算を、乱数N1で示される数値回数分行うことにより、鍵K1を算出する。
次に、一方向性ハッシュ関数部1−8は、関数HN1を用いて種S1から鍵K1を生成する(ステップS12)。具体的には、一方向性ハッシュ関数部1−8は、ハッシュ関数を用いて種S1からハッシュ値を算出し、さらに、ハッシュ関数を用いて当該算出されたハッシュ値から新たなハッシュ値を算出する、というハッシュ関数による繰返し演算を、乱数N1で示される数値回数分行うことにより、鍵K1を算出する。
鍵交換部1−2は、算出された鍵K1を鍵交換処理装置1a,1bの間で交換する(ステップS13)。交換された鍵K1同士の値が同じであれば、2回目に進む。
2回目の鍵交換処理においては、種選択部1−5は、種S2を2回目に使用する種として選択する。乱数生成部1−6は、種S2から乱数N2を生成する(ステップS14)。
次に、一方向性ハッシュ関数部1−8は、鍵K1のハッシュ関数による1回の演算前の値HN1-1(S1)と種S2とを結合したメッセージ(HN1-1(S1)、S2)を生成する。一方向性ハッシュ関数部1−8は、関数HN2にメッセージ(HN1-1(S1)、S2)を代入することにより鍵K2を算出する(ステップS15)。具体的には、一方向性ハッシュ関数部1−8は、乱数N2で示される数値回数分ハッシュ関数による演算を実施することにより、メッセージ(HN1-1(S1)、S2)から鍵K2を算出する。
2回目の鍵交換処理においては、種選択部1−5は、種S2を2回目に使用する種として選択する。乱数生成部1−6は、種S2から乱数N2を生成する(ステップS14)。
次に、一方向性ハッシュ関数部1−8は、鍵K1のハッシュ関数による1回の演算前の値HN1-1(S1)と種S2とを結合したメッセージ(HN1-1(S1)、S2)を生成する。一方向性ハッシュ関数部1−8は、関数HN2にメッセージ(HN1-1(S1)、S2)を代入することにより鍵K2を算出する(ステップS15)。具体的には、一方向性ハッシュ関数部1−8は、乱数N2で示される数値回数分ハッシュ関数による演算を実施することにより、メッセージ(HN1-1(S1)、S2)から鍵K2を算出する。
鍵交換部1−2は、算出した鍵K2を鍵交換処理装置1a,1bの間で交換する(ステップS16)。
交換した鍵K2同士の値が同じであれば、鍵交換処理装置1a,1bは、鍵K2のハッシュ関数による1回の演算前の値、すなわち、鍵K2より1回少なくハッシュ関数による演算が実施された値K2‐1を互いの共通鍵として利用する(ステップS17)。
交換した鍵K2同士の値が同じであれば、鍵交換処理装置1a,1bは、鍵K2のハッシュ関数による1回の演算前の値、すなわち、鍵K2より1回少なくハッシュ関数による演算が実施された値K2‐1を互いの共通鍵として利用する(ステップS17)。
この方式は、種S1,S2が悪意の第三者に知られなければ、一方向性ハッシュ関数が多倍長演算を行う必要がなく処理負荷が少ないことと、可逆性の困難さとにより、装置1a,1b間の鍵共有を高速かつ安全に行うことを可能とする。
なお、本動作例においては、説明を簡単にするため、種をS1とS2との2種類としていることより、生成可能な鍵は種類であるため実用的ではない。
なお、本動作例においては、説明を簡単にするため、種をS1とS2との2種類としていることより、生成可能な鍵は種類であるため実用的ではない。
(第2動作例)
次に図4を参照しながら、第2動作例に係る鍵交換方法を説明する。本動作例は、実用的な例であり、鍵交換処理装置1a,1bのパラメータ保持部1−7は、乱数生成用の種を数千〜数万種記憶している。その種の最小値がS1であり最大値がSnであるものとする。また、本動作例における鍵の交換回数は2回であるものとする。
次に図4を参照しながら、第2動作例に係る鍵交換方法を説明する。本動作例は、実用的な例であり、鍵交換処理装置1a,1bのパラメータ保持部1−7は、乱数生成用の種を数千〜数万種記憶している。その種の最小値がS1であり最大値がSnであるものとする。また、本動作例における鍵の交換回数は2回であるものとする。
まず、本動作例における1回目のデータ交換処理においては、鍵交換処理装置1aからある毎回変る不確定情報に基く乱数シード(種)を鍵交換処理装置1bへ送信する(ステップS21)。乱数生成部1−6は、乱数シードに基づいて乱数N1を生成する(ステップS22)。種選択部1−5は、あらかじめパラメータ保持部1−7に記憶している種のテーブルの最大値Snと乱数N1とで2進数の論理和(AND)を取ることにより、パラメータ保持部1−7から種S1と種Snとの間の種Sxを選択する(ステップS23)。
2回目のデータ交換処理においては、乱数生成部1−6が、種Sxから乱数N2を生成する(ステップS24)。一方向性ハッシュ関数部1−8は、種Sxをメッセージとして、ハッシュ関数による演算を乱数N1が示す数値回数分実施することにより、種Sxから鍵K1を算出する(ステップS25)。
鍵交換部1−2は、鍵K1を鍵交換処理装置1a,1bの間で交換し(ステップS26)、鍵K1同士の値が同じであれば3回目へ進む。
鍵交換部1−2は、鍵K1を鍵交換処理装置1a,1bの間で交換し(ステップS26)、鍵K1同士の値が同じであれば3回目へ進む。
3回目のデータ交換処理においては、種選択部1−5は、種の最大値Snと乱数N2とで2進数の論理和(AND)を取ることにより、パラメータ保持部1−7から種Syを選択する(ステップS27)。次に、乱数生成部1−6は、種Syから乱数N3を生成する(ステップS28)。
次に、一方向性ハッシュ関数部1−8は、鍵K1のハッシュ関数による1回の演算前の値HN2-1(Sx)と、種Syとを結合したメッセージを生成する。一方向性ハッシュ関数部1−8は、結合したメッセージ(HN2-1(Sx)、Sy)を関数HN3に代入して鍵K2を算出する(ステップS29)。具体的には、一方向性ハッシュ関数部1−8は、乱数N3で示される数値回数分ハッシュ関数による演算を実施することにより、メッセージ(HN2-1(Sx)、Sy)から鍵K2を算出する。
次に、一方向性ハッシュ関数部1−8は、鍵K1のハッシュ関数による1回の演算前の値HN2-1(Sx)と、種Syとを結合したメッセージを生成する。一方向性ハッシュ関数部1−8は、結合したメッセージ(HN2-1(Sx)、Sy)を関数HN3に代入して鍵K2を算出する(ステップS29)。具体的には、一方向性ハッシュ関数部1−8は、乱数N3で示される数値回数分ハッシュ関数による演算を実施することにより、メッセージ(HN2-1(Sx)、Sy)から鍵K2を算出する。
鍵交換部1−2は、鍵K2を鍵交換処理装置1a,1bの間で交換する(ステップS30)。交換した鍵K2同士の値が同じである場合には、鍵交換処理装置1a,1bは、鍵K2のハッシュ関数による1回の演算前の値K2-1を互いの共通鍵として利用する(ステップS31)。
このように、鍵交換処理装置1a,1bは、D−H方式のように多倍長剰余演算を行う必要のないハッシュ関数を用いて、乱数で示される回数分演算を行うことにより鍵を算出するため、安全性を確保しつつ、少ない処理負荷で鍵交換を行うことができる。このような鍵交換方式を用いた場合には、従来のD‐H方式による処理時間に対し約10000倍程度処理時間を短縮することができ、鍵交換の高速化を実現することができる。特に、組込機器におけるCPUのパフォーマンスは著しく能力的に制限されており、鍵生成や鍵交換処理をハードウェアによって実現する場合にはコストアップとなるが、本発明においてはソフトウェアにより実現することができる。
このように、鍵交換処理装置1a,1bは、D−H方式のように多倍長剰余演算を行う必要のないハッシュ関数を用いて、乱数で示される回数分演算を行うことにより鍵を算出するため、安全性を確保しつつ、少ない処理負荷で鍵交換を行うことができる。このような鍵交換方式を用いた場合には、従来のD‐H方式による処理時間に対し約10000倍程度処理時間を短縮することができ、鍵交換の高速化を実現することができる。特に、組込機器におけるCPUのパフォーマンスは著しく能力的に制限されており、鍵生成や鍵交換処理をハードウェアによって実現する場合にはコストアップとなるが、本発明においてはソフトウェアにより実現することができる。
なお、上述した動作例においては鍵の交換回数を2回として説明したが、これに限定されることはなく、3回以上鍵交換を行っても構わない。多くの回数鍵交換を行うほど、ハッシュ関数により演算される回数が増えるため、処理負荷は増加するが安全性を高めることができる。
また、上述した実施形態においては、2回目の鍵交換のための鍵K2を算出するための関数を1回目と異なる関数としたが、2回目においても1回目と同一の関数を用いて鍵を算出してもよい。しかしながら、2回目において、例えば、図3のステップS15に示すように、種S2のみを関数HN2に代入して演算を行うよりも、メッセージ(HN1-1(S1)、S2)を関数HN2に代入して演算を行った方が、メッセージがハッシュ関数により演算される回数が増加し演算が複雑となるため、安全性を高めることができる。
また、上述した実施形態においては、2回目の鍵交換のための鍵K2を算出するための関数を1回目と異なる関数としたが、2回目においても1回目と同一の関数を用いて鍵を算出してもよい。しかしながら、2回目において、例えば、図3のステップS15に示すように、種S2のみを関数HN2に代入して演算を行うよりも、メッセージ(HN1-1(S1)、S2)を関数HN2に代入して演算を行った方が、メッセージがハッシュ関数により演算される回数が増加し演算が複雑となるため、安全性を高めることができる。
また、図3に示す動作例では、メッセージを結合する際に、2回目に使用する種S2に対して、1回目に算出した鍵K1の、ハッシュ関数による1回の演算前の値であるHN1-1(S1)を結合したが、1回の演算前の値に限定されず、例えば、乱数N1が3以上である場合には2回前でもよいし、乱数N1が偶数の場合には乱数値の1/2回前の値でも構わない。
また、図3に示す動作例では、鍵K2のハッシュ関数による1回の演算前の値であるK2-1を共通鍵としたが、これに限定されず、鍵K2交換時に鍵K2が第三者に傍受された場合の対策として、第三者が鍵K2から予測することが不可能な値を共通鍵とすればよい。例えば、乱数N2が2以上の場合には、共通鍵を鍵K2のハッシュ関数による2回の演算前の値K2-2としても構わない。また、鍵K2交換時に鍵K2が傍受される可能性が低い場合には、鍵K2をそのまま共通鍵として用いることも可能である。
特に組込機器において、高速で安全な鍵交換に利用することができる。
1 鍵交換処理装置
1−1 CPU処理制御部
1−2 鍵交換部
1−3 暗号/復号化処理部
1−4 通信処理部
1−5 種選択部
1−6 乱数生成部
1−7 パラメータ保持部
1−8 一方向性ハッシュ関数部
1−9 通信I/F回路
1−1 CPU処理制御部
1−2 鍵交換部
1−3 暗号/復号化処理部
1−4 通信処理部
1−5 種選択部
1−6 乱数生成部
1−7 パラメータ保持部
1−8 一方向性ハッシュ関数部
1−9 通信I/F回路
Claims (5)
- 2つの鍵交換処理装置間で暗号化通信を行うための鍵を交換する鍵交換方法において、
前記2つの鍵交換処理装置が、乱数生成の基となるデータである種から乱数を生成する乱数生成ステップと、
前記2つの鍵交換処理装置が、前記乱数生成ステップにおいて生成された乱数で示される回数分ハッシュ関数による繰返し演算を行うことにより、前記種から鍵を算出する一方向性ハッシュ関数ステップと、
前記2つの鍵交換処理装置同士が、前記一方向性ハッシュ関数ステップにおいて算出された鍵を交換する鍵交換ステップと
を有することを特徴とする鍵交換方法。 - 前記鍵交換ステップにおいて交換された鍵同士の値が等しい場合に、前記乱数生成ステップから前記鍵交換ステップまでの処理を所定回数繰り返すことを特徴とする
請求項1に記載の鍵交換方法。 - 前記鍵交換ステップにおいて交換された鍵同士の値が等しい場合に、該交換された鍵のハッシュ関数による演算前の値を前記2つの鍵交換処理装置間における共通鍵として用いることを特徴とする
請求項1又は2に記載の鍵交換方法。 - 前記一方向性ハッシュ関数ステップにおける処理を繰り返す場合に、
今回使用する種から鍵を算出する代わりに、今回使用する種と、前回算出された鍵のハッシュ関数による演算前の値と、を結合したメッセージから鍵を算出することを特徴とする
請求項2又は3に記載の鍵交換方法。 - 他の装置と暗号化通信を行うための鍵を交換する鍵交換処理装置において、
乱数生成の基となるデータである種を複数保持するパラメータ保持手段と、
前記パラメータ保持手段により保持されている複数の種の中から1つの種を選択する種選択手段と、
前記種選択手段により選択された種から乱数を生成する乱数生成手段と、
前記乱数生成手段により生成された乱数で示される回数分ハッシュ関数による繰返し演算を行うことにより、前記種から鍵を算出する一方向性ハッシュ関数手段と、
前記一方向性ハッシュ関数手段により算出された鍵を他の装置と交換する鍵交換手段と
を備えることを特徴とする鍵交換処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004304597A JP2006121215A (ja) | 2004-10-19 | 2004-10-19 | 鍵交換方法、及び、鍵交換処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004304597A JP2006121215A (ja) | 2004-10-19 | 2004-10-19 | 鍵交換方法、及び、鍵交換処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006121215A true JP2006121215A (ja) | 2006-05-11 |
Family
ID=36538715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004304597A Pending JP2006121215A (ja) | 2004-10-19 | 2004-10-19 | 鍵交換方法、及び、鍵交換処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006121215A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019093478A1 (ja) * | 2017-11-10 | 2019-05-16 | 日本電信電話株式会社 | 鍵交換装置、鍵交換システム、鍵交換方法、及び鍵交換プログラム |
CN112131221A (zh) * | 2020-09-18 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种跟踪数据处理方法、装置、设备及存储介质 |
WO2022269914A1 (ja) * | 2021-06-25 | 2022-12-29 | 日本電気株式会社 | 端末装置、暗号化情報変換装置、照合システム、入力情報暗号化方法、暗号化情報変換方法、照合方法、入力情報暗号化プログラム、及び暗号化情報変換プログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999035786A1 (fr) * | 1998-01-07 | 1999-07-15 | Sony Corporation | Systeme, dispositif et procede de traitement de donnees |
JP2001094548A (ja) * | 1999-09-24 | 2001-04-06 | Ntt Docomo Inc | 暗号鍵交換方法および暗号鍵交換装置 |
-
2004
- 2004-10-19 JP JP2004304597A patent/JP2006121215A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999035786A1 (fr) * | 1998-01-07 | 1999-07-15 | Sony Corporation | Systeme, dispositif et procede de traitement de donnees |
JP2001094548A (ja) * | 1999-09-24 | 2001-04-06 | Ntt Docomo Inc | 暗号鍵交換方法および暗号鍵交換装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019093478A1 (ja) * | 2017-11-10 | 2019-05-16 | 日本電信電話株式会社 | 鍵交換装置、鍵交換システム、鍵交換方法、及び鍵交換プログラム |
JPWO2019093478A1 (ja) * | 2017-11-10 | 2020-11-19 | 日本電信電話株式会社 | 鍵交換装置、鍵交換システム、鍵交換方法、及び鍵交換プログラム |
US11483145B2 (en) | 2017-11-10 | 2022-10-25 | Nippon Telegraph And Telephone Corporation | Key exchange device, key exchange system, key exchange method, and key exchange program for exchanging a key with another device |
CN112131221A (zh) * | 2020-09-18 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种跟踪数据处理方法、装置、设备及存储介质 |
WO2022269914A1 (ja) * | 2021-06-25 | 2022-12-29 | 日本電気株式会社 | 端末装置、暗号化情報変換装置、照合システム、入力情報暗号化方法、暗号化情報変換方法、照合方法、入力情報暗号化プログラム、及び暗号化情報変換プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6720424B1 (ja) | 鍵共有デバイス及び方法 | |
JP7019730B2 (ja) | キー交換デバイス及び方法 | |
JP5572610B2 (ja) | セキュリティ強化のための転置データ変換 | |
US20110307698A1 (en) | Masking the output of random number generators in key generation protocols | |
JP5544355B2 (ja) | 共有の秘密の確認の方法およびシステム | |
US11658815B2 (en) | System and method for performing key operations during a multi-party computation process | |
Sengupta et al. | Message mapping and reverse mapping in elliptic curve cryptosystem | |
US20090245515A1 (en) | Method, system, and program product for asymmetric key generation | |
US10615961B2 (en) | Method and encryption node for encrypting message | |
JP3854954B2 (ja) | データ共有装置 | |
CN117318986A (zh) | 一种基于多重加密的数据传输方法及系统 | |
JP3695526B2 (ja) | 暗号鍵更新方法 | |
CN117134906A (zh) | 多方隐私求交方法及相关装置 | |
EP2395698B1 (en) | Implicit certificate generation in the case of weak pseudo-random number generators | |
WO2019220900A1 (ja) | 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム | |
JP2006121215A (ja) | 鍵交換方法、及び、鍵交換処理装置 | |
JP2020052215A (ja) | 公開鍵暗号システム、公開鍵暗号方法、公開鍵暗号プログラム | |
EP3871363A2 (en) | Computing key rotation period for block cipher-based encryption schemes system and method | |
Li | Optimization of rainbow tables for practically cracking GSM A5/1 based on validated success rate modeling | |
Kumar et al. | Exploration and Implementation of RSA-KEM Algorithm | |
CN114362926B (zh) | 基于密钥池的量子保密通信网络密钥管理通信系统及方法 | |
Subashri et al. | Confidentiality of VoIP data using efficient ECDH key exchanging mechanism | |
US7016500B1 (en) | Code exchange protocol | |
CN110249334B (zh) | 设备间高效安全通信的系统和方法 | |
Jain et al. | Analysis of Different Cryptographic Algorithms in Cloud-Based Multi-robot Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070914 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101207 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110406 |