説明

共通鍵生成システム及び共通鍵生成方法

【課題】共通鍵の受け渡しを行わずに、三者以上の間で安全に共通鍵を共有することができる共通鍵生成システム及び共通鍵生成方法を提供すること。
【解決手段】サーバSVは、N個の秘密鍵S、除数D及びN個の中間鍵Rを生成し、除数Dを送信していないクライアント端末CLiに送信する。クライアント端末CLiは、N個の中間鍵Rを更新してサーバSVに送信する。サーバSVは、クライアント端末CLiからN個の中間鍵Rを受信したことに応じて、N個の秘密鍵Sを置換してN個の中間鍵Rを更新し、除数Dを送信していないクライアント端末CLiに送信する。サーバSVは、秘密鍵Sの置換回数がN−1回であるとき、N個の中間鍵を更新せずにN台のクライアント端末CLに送信する。クライアント端末CLiは、N個の中間鍵Rのみを受信した場合に、当該クライアント端末CLiに対応する中間鍵Rに基づいて共通鍵Cを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、共通鍵生成システム及び共通鍵生成方法に関する。
【背景技術】
【0002】
近年、インターネット等のネットワークをデータの交換手段として利用することが急速に広まっている。しかしながら、インターネット等のネットワークでは、データを交換する際に複数のサーバ及び通信回線を経由してデータが転送される。このため、データを転送するサーバ及び通信回線等では、データの盗聴や、データの改ざんや、なりすましをすることが可能となり、セキュリティ問題に発展している。このようなセキュリティ問題に対応するため、暗号化技術が提案されており、例えば、簡易的な暗号化方式として、共通鍵暗号方式が知られている。
【0003】
共通鍵暗号方式では、例えば、特許文献1に示されるように、生成した共通鍵を、2者間で所有する。続いて、送信者は、共通鍵を用いてデータの暗号化を行い、暗号化されたデータを閲覧者に送信する。閲覧者は、データを受信すると、共通鍵を用いて暗号化されたデータを復号する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−278258号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に示される共通鍵交換方式は、2者間において共通鍵を生成する方式であり、三者以上の間において、共通鍵を生成する方法については示されていない。このため、三者以上の間において、安全に共通鍵を生成することができる共通鍵生成システム及び共通鍵生成方法の提供が望まれている。
【0006】
本発明は、共通鍵の受け渡しを行わずに、三者以上の間で安全に共通鍵を共有することができる共通鍵生成システム及び共通鍵生成方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る共通鍵生成システムは、サーバと、N台のクライアント端末とが通信可能に接続された共通鍵生成システムであって、前記サーバは、1個の基数、1個の除数及びN個の秘密鍵を生成するサーバ側鍵情報生成手段と、前記N個の秘密鍵それぞれについて、基数を底とし、当該秘密鍵を指数とした冪乗に対して前記除数で除算した場合に生成されるN個の剰余をN個の中間鍵とするサーバ側中間鍵生成手段と、前記N台のクライアント端末と前記N個の中間鍵の送受信を行うサーバ側通信制御手段と、前記クライアント端末からN個の中間鍵を前記サーバ側通信制御手段によって受信したことに応じて、N個の秘密鍵それぞれについて他の秘密鍵の値に置換し、受信したN個の中間鍵それぞれについて、当該中間鍵を底とし、置換されたN個の秘密鍵のうち当該中間鍵に対応する秘密鍵を指数とした場合の剰余を前記除数で除算した場合に生成されるN個の剰余をN個の中間鍵とすることにより、N個の中間鍵を更新するサーバ側中間鍵更新手段と、を備え、前記N台のクライアント端末それぞれは、前記サーバから前記除数を受信すると共に前記N個の中間鍵の送受信を行う端末側通信制御手段と、前記端末側通信制御手段により前記除数及び前記N個の中間鍵を受信したことに応じて、私有鍵を生成する私有鍵生成手段と、前記私有鍵生成手段により前記私有鍵を生成したことに応じて、前記クライアント端末に対応する中間鍵の値を変更せずに更新したとみなすと共に、当該中間鍵以外のN−1個の中間鍵それぞれについて、当該中間鍵を底とし、当該私有鍵を指数とした冪乗に対して前記除数で除算した場合に生成されるN個の剰余を前記N個の中間鍵とすることにより、N個の中間鍵を更新する端末側中間鍵更新手段と、前記端末側通信制御手段により前記N個の中間鍵のみを受信したことに応じて、前記クライアント端末に対応する中間鍵を底とし、前記私有鍵を指数とした冪乗に対して前記除数で除算した場合に生成される剰余を共通鍵とする共通鍵生成手段と、を備え、前記サーバ側中間鍵更新手段は、N個の秘密鍵それぞれについて、i番目の秘密鍵(iは1からN−1のいずれか)をi+1番目の秘密鍵に置換すると共にN番目の秘密鍵を1番目の秘密鍵に置換することで、前記他の秘密鍵の値に置換し、前記サーバ側通信制御手段は、前記サーバ側中間鍵更新手段により前記N個の中間鍵を更新したことに応じて前記クライアント端末に当該N個の中間鍵を送信し、前記クライアント端末から前記N個の中間鍵を受信した場合に前記N個の中間鍵が置換された回数がN−1回であるとき、N台のクライアント端末全てに対して前記N個の中間鍵を送信する。
【0008】
本発明に係る共通鍵生成方法は、サーバと、N台のクライアント端末とが通信可能に接続された共通鍵生成システムにおいて共通鍵を生成する方法であって、前記サーバが、1個の基数、1個の除数及びN個の秘密鍵を生成するサーバ側鍵生成ステップと、前記N個の秘密鍵それぞれについて、前記基数を底とし、当該秘密鍵を指数とした冪乗に対して前記除数で除算した場合に生成されるN個の剰余をN個の中間鍵としてN個の中間鍵を生成するサーバ側中間鍵生成ステップと、前記N台のクライアント端末のうち、前記除数を送信していない、いずれか1のクライアント端末に前記N個の中間鍵を送信する第1サーバ側送信ステップと、前記クライアント端末それぞれが、前記サーバから前記除数及び前記N個の中間鍵を受信する第1端末側受信ステップと、前記第1端末側受信ステップにおいて前記除数及び前記N個の中間鍵を受信したことに応じて私有鍵を生成する私有鍵生成ステップと、前記私有鍵生成ステップにおいて前記私有鍵が生成されたことに応じて、前記クライアント端末に対応する中間鍵の値を変更せずに更新したとみなすと共に、当該中間鍵以外のN−1個の中間鍵それぞれについて、当該中間鍵を底とし、当該私有鍵を指数とした冪乗に対して前記除数で除算した場合に生成されるN個の剰余を前記N個の中間鍵とすることにより、N個の中間鍵を更新する端末側中間鍵更新ステップと、前記端末側中間鍵更新ステップにおいて前記N個の中間鍵が更新されたことに応じて当該N個の中間鍵を前記サーバに送信する端末側送信ステップと、を含み、前記サーバは、前記クライアント端末から、N個の中間鍵を受信するサーバ側受信ステップと、前記サーバ側受信ステップにおいて前記N個の中間鍵を受信したことに応じて、N個の秘密鍵それぞれについて、i番目の秘密鍵(iは1からN−1のいずれか)をi+1番目の秘密鍵に置換すると共にN番目の秘密鍵を1番目の秘密鍵に置換することで、他の秘密鍵の値に置換する置換ステップと、前記置換ステップにおいて前記N個の秘密鍵が置換されたことに応じて、前記サーバ側受信ステップにおいて受信したN個の中間鍵それぞれについて、当該中間鍵を底とし、置換されたN個の秘密鍵のうち当該中間鍵に対応する秘密鍵を指数とした場合の剰余を前記除数で除算した場合に生成されるN個の剰余をN個の中間鍵とすることにより、N個の中間鍵を更新するサーバ側中間鍵更新ステップと、前記サーバ側中間鍵更新ステップにより更新されたN個の中間鍵を、前記除数を送信していない、いずれか1のクライアント端末に前記N個の中間鍵を送信する第2サーバ側送信ステップと、前記サーバ側受信ステップにおいて、前記クライアント端末から前記N個の中間鍵を受信した場合に前記N個の中間鍵が置換された回数がN−1回であるとき、N台のクライアント端末全てに対して前記N個の中間鍵を送信する第3サーバ側送信ステップを更に含み、前記クライアント端末は、前記サーバから前記N個の中間鍵のみ受信する第2端末側受信ステップと、前記第2端末側受信ステップにおいて前記N個の中間鍵のみ受信したことに応じて、記クライアント端末に対応する中間鍵を底とし、前記私有鍵を指数とした冪乗に対して前記除数で除算した場合に生成される剰余を共通鍵とする共通鍵生成ステップと、を更に含む。
【発明の効果】
【0009】
本発明によれば、共通鍵の受け渡しを行わずに、三者以上の間で安全に共通鍵を共有することができる。
【図面の簡単な説明】
【0010】
【図1】本実施形態に係る共通鍵生成システムの全体概要を示す図である。
【図2】本実施形態に係る第1共通鍵生成装置の機能構成を示す図である。
【図3】本実施形態に係る第2共通鍵生成装置の機能構成を示す図である。
【図4】本実施形態に係るサーバに係る処理の流れを示すフローチャートである。
【図5】本実施形態に係るクライアント端末に係る処理の流れを示すフローチャートである。
【図6】本実施形態に係る冪剰余算出部における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について図を参照しながら説明する。
【0012】
[機能構成]
図1は、本実施形態に係る共通鍵生成システム1の全体概要を示す図である。共通鍵生成システム1は、複数のクライアント端末それぞれで共通鍵を生成するシステムである。共通鍵生成システム1は、サーバSVと、N台のクライアント端末(CL1、CL2、・・・CLN)とを備える。ここで、N台のクライアント端末(CL1、CL2、・・・CLN)をまとめて、クライアント端末CLとする。サーバSVと、N台のクライアント端末CLとは、LAN(Local Area Network)やインターネット等のコンピュータネットワークにより構成される通信ネットワークNにより、通信可能に接続されている。
【0013】
このサーバSVでは、基数B、除数D、及びN個の秘密鍵S、S、・・・S(以下、N個の秘密鍵をまとめて秘密鍵Sともいう)を生成し、基数B、除数D、及び秘密鍵Sに基づいてN個の中間鍵Rを生成し、クライアント端末CLに、除数D、及び中間鍵Rを送信する。また、クライアント端末CLでは、除数D及び中間鍵Rを受信すると共に私有鍵Pを生成し、中間鍵Rを更新して、中間鍵RをサーバSVに送信する。サーバSVでは、その後、秘密鍵Sをシフトすると共に、中間鍵Rを更新し、全てのクライアント端末CLと中間鍵の送受信を繰り返す。その後、サーバSVは、全てのクライアント端末CLに対して中間鍵Rを送信する。その後、N台のクライアント端末CLは、除数D、私有鍵P及び中間鍵Rから共通鍵Cを生成する。
本実施形態における各部は、コンピュータ及びその周辺装置が備えるハードウェア並びにこのハードウェアを制御するソフトウェアによって構成される。
【0014】
図2は、本実施形態に係るサーバSVの機能構成を示す図である。
サーバSVは、コンピュータであり、サーバ側制御部10と、サーバ側記憶部11と、サーバ側通信部12と、サーバ側表示部13と、サーバ側入力部14とを備える。
【0015】
サーバ側制御部10は、CPU等により構成されており、サーバSVの全体を制御する。サーバ側制御部10の詳細な機能については、後述する。サーバ側記憶部11は、メモリ(RAM、ROM等)、ハードディスクドライブ(HDD)及び光ディスク(CD、DVD等)ドライブ等により構成されており、サーバSVをコンピュータとして動作させるための各種プログラムやデータを記憶する。サーバ側通信部12は、各種有線及び無線インターフェース装置等により構成され、クライアント端末CLと通信を行う。サーバ側表示部13は、液晶ディスプレイ、プラズマディスプレイ等の各種ディスプレイにより構成され、各種機能に係る情報を表示する。サーバ側入力部14は、キーボード及びマウス等により構成され、操作者からの操作を受け付ける。
【0016】
サーバ側制御部10は、サーバ側鍵情報生成手段としてのサーバ側鍵情報生成部110と、第1冪剰余算出手段としての冪剰余算出部120と、サーバ中間鍵生成手段としてのサーバ側中間鍵生成部130と、サーバ側通信制御手段としてのサーバ側通信制御部140と、サーバ側中間鍵更新手段としてのサーバ側中間鍵更新部150と、を備える。
【0017】
サーバ側鍵情報生成部110は、共通鍵を生成する情報となる1個の基数B、1個の除数Dを生成する。具体的には、サーバ側鍵情報生成部110は、基数Bとして任意の自然数を生成し、除数Dとして、桁数が大きい自然数(例えば、20桁以上の自然数)を生成する。また、サーバ側鍵情報生成部110は、N個の秘密鍵S、S、・・・Sとして、「1」以上であり、それぞれが異なる(同一でもよい)自然数を生成する。N個の秘密鍵それぞれには、番号が付されている。具体的には、秘密鍵Sには1、Sには2、Sにはiというように番号が付されている。ここで、Sをi番目の秘密鍵という。サーバ側鍵情報生成部110は、生成された基数B、除数D、及びN個の秘密鍵Sをサーバ側記憶部11に記憶させる。
【0018】
冪剰余算出部120は、底、除数、及び指数の入力を受け付け、この底の指数乗を、除数で除算した場合の剰余を算出し、この算出した剰余を出力する。冪剰余算出部120は、入力受付手段としての入力受付部121と、初期設定手段としての初期設定部122と、変換手段としての変換部123と、計数手段としての計数部124と、基数算出手段としての基数算出部125と、剰余算出手段としての剰余算出部126と、シフト手段としてのシフト部127と、反復実行手段としての反復実行部128と、出力手段としての出力部129と、を備える。また、冪剰余算出部120は、第1中間値Aと、第2中間値Mとを有する。
【0019】
入力受付部121は、底、除数、及び指数の入力を受け付ける。ここで、入力受付部121により受け付けられた底、除数、及び指数を、それぞれ底A、除数B、指数eとする。
【0020】
初期設定部122は、第1中間値Aの初期値を底Aとし、第2中間値Mの初期値を1に設定する。
変換部123は、指数eを、10進数から2進数に変換する。
【0021】
計数部124は、変換部123により2進数に変換された指数eのビット数を計数する。
【0022】
基数算出部125は、2進数で表現された指数eの右端の値(ビット)が1である場合、第1中間値Aを第2中間値Mで乗算して得られた値を除数Bで除算した場合の剰余を第1中間値Aとすることにより、第1中間値Aを更新する。
【0023】
なお、第1中間値Aと第2中間値Mとの乗算は、以下のように行われる。すなわち、基数算出部125は、第1中間値A及び第2中間値Mを、以下の(1)式に示すように、複数桁(例えば、1桁目〜5桁目、6桁目〜10桁目等、5桁ずつ)に区切り、10の冪乗により構成される多項式、すなわち、初項を10の冪乗(例えば10の5乗)の0乗、公比を当該10の冪乗(例えば10の5乗)とした数列の和で表される多項式に変換する。
【数1】

【0024】
ここで、a…aは、第1中間値Aを満たすためにそれぞれの項に付される係数であり、b…bは、第2中間値Mを満たすためにそれぞれの項に付される係数である。
【0025】
続いて、基数算出部125は、10の冪乗の和に変換された第1中間値A及び第2中間値Mの多項式を乗算して、(2)式に示すように展開する。その後、展開された値に含まれるそれぞれの項を合計することにより、第1中間値Aと第2中間値Mとを乗算した値を算出する。
【数2】

【0026】
剰余算出部126は、2進数に変換された指数eの右端の値(ビット)にかかわらず、第1中間値Aを2乗した値を除数Bで除算した場合の剰余を第2中間値Mとすることにより、第2中間値Mを更新する。なお、第1中間値Aの2乗の計算は、第1中間値Aと第2中間値Mとの乗算と同様に、第1中間値Aを、初項を10の冪乗(例えば10の5乗)の0乗、公比を当該10の冪乗(例えば10の5乗)とした数列の和で表される多項式に変換し、この多項式の第1中間値Aを2乗することにより計算される。
【0027】
シフト部127は、2進数に変換された指数eを右シフトする。具体的には、シフト部127は、2進数に変換された指数eを1ビット右に論理シフトする演算(論理シフト演算)を行う。
【0028】
反復実行部128は、計数部124により計数されたビット数の値を反復回数とし、基数算出部125、剰余算出部126、及びシフト部127に係る処理が、基数算出部125、剰余算出部126、シフト部127の順に、反復回数実行されるように制御する。具体的には、記憶部に初期値を0とするカウンタを設けておき、反復実行部128は、基数算出部125、剰余算出部126、及びシフト部127に係る処理が終了したことに応じて、カウンタに1加算(インクリメント)する。その後、反復実行部128は、カウンタの値が反復回数に達するまで、基数算出部125、剰余算出部126、シフト部127、インクリメントに係る処理を実行する制御を行い、カウンタの値が反復回数に達した場合に、反復実行を終了する。
【0029】
出力部129は、反復実行部128により、基数算出部125、剰余算出部126、及びシフト部127に係る処理が反復回数実行された後、第2中間値Mを剰余として出力する。
【0030】
サーバ側中間鍵生成部130は、サーバ側鍵情報生成部110によって基数B、除数D、及びN個の秘密鍵Sが生成されたことに応じて、N個の秘密鍵それぞれについて、基数Bを底とし、当該秘密鍵を指数とした冪乗を、除数Dで除算した場合のN個の剰余をN個の中間鍵とすることにより、N個の中間鍵を生成する。
【0031】
まず、サーバ側中間鍵生成部130は、基数Bを底、除数Dを除数、1番目の秘密鍵Sを指数とし、これら底、除数、及び指数を冪剰余算出部120に入力することにより、冪剰余算出部120から、基数Bを底とし、秘密鍵Sを指数とした冪乗を除数Dで除算した場合の剰余を得る。続いて、サーバ側中間鍵生成部130は、得られた剰余を中間鍵Rとする。
【0032】
続いて、サーバ側中間鍵生成部130は、秘密鍵S、S、・・・Sについても秘密鍵Sにおいて中間鍵Rを算出した手順と同様の手順で、中間鍵R、R、・・・Rを算出する。ここで、生成されたN個の中間鍵R、R、・・・Rをまとめて中間鍵Rという。続いて、サーバ側中間鍵生成部130は、生成されたN個の中間鍵Rをサーバ側記憶部11に記憶させる。
【0033】
サーバ側通信制御部140は、サーバ側通信部12を介して各種情報を送受信する。
具体的には、サーバ側通信制御部140は、サーバ側鍵情報生成部110により生成された除数Dと、サーバ側中間鍵生成部130により生成されたN個の中間鍵Rとを、N台のクライアント端末CLのうち、いずれか一の端末に送信する。また、サーバ側通信制御部140は、送信するクライアント端末に対して、1からNのうちいずれか1の番号を端末番号として送信する。
【0034】
また、サーバ側通信制御部140は、サーバ側鍵情報生成部110により生成された除数Dとサーバ側中間鍵更新部150により更新された中間鍵Rとを、N台のクライアント端末CLのうち、除数Dを送信していない、いずれか一の端末に送信する。
【0035】
また、サーバ側通信制御部140は、後述の置換回数がN−1回になった場合、サーバ側中間鍵更新部150により更新されたN個の中間鍵RをN台のクライアント端末CLのすべてに送信する。
【0036】
また、サーバ側通信制御部140は、N台のクライアント端末CLから、N台のクライアント端末それぞれで更新された中間鍵Rを受信する。
【0037】
サーバ側中間鍵更新部150は、サーバ側通信制御部140によって、N台のクライアント端末CLのいずれかから中間鍵Rを受信した場合において、サーバ側記憶部11に記憶されている秘密鍵の置換回数がN−1回より小さいとき、秘密鍵Sの内容を置換する。
【0038】
具体的には、サーバ側中間鍵更新部150は、秘密鍵Sの値を他の秘密鍵の値に置換する。すなわち、サーバ側中間鍵更新部150は、i(Nを除く)番目の秘密鍵Sを、i+1番目の秘密鍵Si+1に置換する。また、サーバ側中間鍵更新部150は、N番目の秘密鍵Sの値を1番目の秘密鍵Sの値に置換する。サーバ側中間鍵更新部150は、N個の秘密鍵Sの内容を置換した回数を置換回数としてサーバ側記憶部11に記憶させる。
【0039】
また、サーバ側中間鍵更新部150は、秘密鍵Sを置換した後、N個の中間鍵Rそれぞれについて、当該中間鍵Rを底とし、当該中間鍵Rに対応する秘密鍵を指数とした冪乗を、除数Dで除算した場合の剰余を当該中間鍵Rに置き換えることで、中間鍵Rを更新する。
【0040】
具体的には、サーバ側中間鍵更新部150は、中間鍵Rを底、除数Dを除数、中間鍵Rに対応する秘密鍵Sを指数とし、これら底、除数、及び指数を冪剰余算出部120に入力することにより、冪剰余算出部120から、中間鍵Rを底とし、秘密鍵Sを指数とした冪乗を除数Dで除算した場合の剰余を得る。続いて、サーバ側中間鍵更新部17は、中間鍵Rの値を得られた剰余の値に置換することで中間鍵Rを更新する。
【0041】
続いて、サーバ側中間鍵更新部150は、中間鍵R、R、・・・Rについても、それぞれ対応する秘密鍵S、S、・・・Sを指数とし、除数Dとした場合の冪剰余を算出することで、中間鍵Rを算出した手順と同様の手順で、中間鍵R、R、・・・Rを更新する。
【0042】
図3は、本実施形態に係るクライアント端末CLiの機能構成を示す図である。ここで、クライアント端末CL1、CL2、・・・CLNの有する機能は同一であるので、クライアント端末CLi(iは、1からNの間の任意の数である)の機能構成に図示するものとする。ここで、クライアント端末CLは、私有鍵Pを保有することが可能であり、クライアント端末CLiに対応する私有鍵を、私有鍵Piとする。
【0043】
クライアント端末CLiは、サーバSVと同様にコンピュータであり、端末側制御部20と、端末側記憶部21と、端末側通信部22と、端末側表示部23と、端末側入力部24と、を備える。
【0044】
端末側制御部20は、CPU等により構成されており、クライアント端末CLiの全体を制御する。端末側制御部20の詳細な機能については、後述する。端末側記憶部21は、メモリ、ハードディスクドライブ及び光ディスクドライブ等により構成されており、クライアント端末CLiをコンピュータとして動作させるための各種プログラムやデータを記憶する。端末側通信部22は、各種有線及び無線インターフェース装置等により構成され、サーバSVと通信を行う。端末側表示部23は、液晶ディスプレイ、プラズマディスプレイ等の各種ディスプレイにより構成され、各種機能に係る情報を表示する。端末側入力部24は、キーボード及びマウス等により構成され、操作者からの操作を受け付ける。
【0045】
端末側制御部20は、端末側通信制御手段としての端末側通信制御部210と、私有鍵生成手段としての私有鍵生成部220と、第2冪剰余算出手段としての冪剰余算出部230と、端末側中間鍵更新手段としての端末側中間鍵更新部240と、共通鍵生成手段としての共通鍵生成部250と、を備える。
【0046】
端末側通信制御部210は、端末側通信部22を介して各種情報を送受信する。
具体的には、端末側通信制御部210は、サーバSVからN個の中間鍵Rと、除数Dと、端末番号を受信する。
また、端末側通信制御部210は、端末側中間鍵更新部240により中間鍵Rが更新されたことに応じて、更新された中間鍵RをサーバSVに送信する。
【0047】
私有鍵生成部220は、端末側通信制御部210によりサーバSVから中間鍵Rを初めて受信した場合に私有鍵Piを生成する。私有鍵Piは、「1」以上の任意の自然数である。
【0048】
冪剰余算出部230は、サーバSVの冪剰余算出部120と同等の機能を有する。すなわち、冪剰余算出部230は、冪剰余算出部120が備える入力受付部121、初期設定部122、変換部123、計数部124、基数算出部125、剰余算出部126、シフト部127、反復実行部128及び出力部129と同等の機能を有する、入力受付部231、初期設定部232、変換部233、計数部234、基数算出部235、剰余算出部236、シフト部237、反復実行部238及び出力部239を備える。
【0049】
端末側中間鍵更新部240は、端末側通信制御部210によりサーバSVから中間鍵Rを初めて受信し、私有鍵生成部220により私有鍵Piが生成されたことに応じて、当該クライアント端末CLiに対応している中間鍵Rを除いたN−1個の中間鍵Rについて、当該中間鍵Rを底とし、私有鍵Piを指数とした冪乗を、端末側通信制御部210によって受信した除数Dで除算した場合の剰余を当該中間鍵Rに置き換えることで、中間鍵Rを更新する。ここで、クライアント端末CLiに対応している中間鍵Rは、端末番号に対応している中間鍵である。例えば、端末番号が2である場合、中間鍵Rがクライアント端末CLiに対応する。
【0050】
まず、端末側中間鍵更新部240は、中間鍵Rを底、除数Dを除数、私有鍵Pを指数とし、これら底、除数、及び指数を冪剰余算出部230に入力することにより、冪剰余算出部230から、中間鍵Rを底とし、私有鍵Pを指数とした冪乗を除数Dで除算した場合の剰余を得る。続いて、端末側中間鍵更新部240は、中間鍵Rの値を得られた剰余の値に置換することで、中間鍵Rを更新する。
【0051】
続いて、端末側中間鍵更新部240は、中間鍵R、R、・・・Rについても、私有鍵Pを指数とし、除数Dとした場合の冪剰余を算出することで、中間鍵Rを算出した手順と同様の手順で、中間鍵R、R、・・・Rを更新する。
なお、端末側中間鍵更新部240は、中間鍵Rの値を更新しないが、中間鍵Rについても更新されたものとみなす。
【0052】
共通鍵生成部250は、端末側通信制御部210によりサーバSVから中間鍵Rのみを受信したことに応じて、クライアント端末CLiに対応している中間鍵Rを底とし、私有鍵Piを指数とした冪乗を、除数Dで除算した場合の剰余を算出する。そして、共通鍵生成部26は、当該剰余を共通鍵Cとすることで、N台のクライアント端末CLの共通鍵Cを生成する。ここで、クライアント端末CLiに対応している中間鍵Rは、端末番号に対応している中間鍵である。
【0053】
続いて、図4及び図5を参照して、共通鍵生成システム1における処理の流れを説明する。
図4は、本実施形態に係るサーバSVに係る処理の流れを示すフローチャートである。
【0054】
ステップS1において、サーバ側制御部10(サーバ側鍵情報生成部110)は、基数B、除数D、及びN個の秘密鍵Sを生成する。
【0055】
ステップS2において、サーバ側制御部10(サーバ側中間鍵生成部130)は、ステップS1において生成された基数B、N個の秘密鍵S及び除数Dに基づいて、中間鍵Rを生成する。具体的には、サーバ側制御部10(サーバ側中間鍵生成部130)は、N個の秘密鍵Sそれぞれについて、基数Bを底とし、当該秘密鍵を指数とした冪乗を、除数Dで除算した場合に得られるN個の剰余を中間鍵Rとする。詳細な処理は、図6に示すフローチャートで説明する。
【0056】
ステップS3において、サーバ側制御部10(サーバ側通信制御部140)は、除数Dを送信済みではないクライアント端末CLのうち、いずれか一のクライアント端末CLに、除数D及び中間鍵Rを送信する。
【0057】
ステップS4において、サーバ側制御部10(サーバ側中間鍵更新部150)は、サーバ側受信部15によって中間鍵Rを受信したか否かを判定する。サーバ側制御部10(サーバ側中間鍵更新部150)は、この判定がYESの場合、ステップS5に処理を移し、この判定がNOの場合、ステップS4の処理を再実行する。
【0058】
ステップS5において、サーバ側制御部10(サーバ側中間鍵更新部150)は、置換回数がN−1回であるか否かを判定する。サーバ側制御部10(サーバ側中間鍵更新部150)は、この判定がYESの場合、ステップS9に処理を移し、この判定がNOの場合、ステップS6に処理を移す。
【0059】
ステップS6において、サーバ側制御部10(サーバ側中間鍵更新部150)は、秘密鍵Sの内容を置換する。具体的には、秘密鍵シフト部16は、秘密鍵Sの値(i=1、2、・・・N−1)を秘密鍵Si+1の値に置換する。また、サーバ側制御部10(サーバ側中間鍵更新部150)は、秘密鍵Sの値を秘密鍵Sの値に置換する。
【0060】
ステップS7において、サーバ側制御部10(サーバ側中間鍵更新部150)は、秘密鍵Sの内容を置換した回数を置換回数としてサーバ側記憶部11に記憶させる。
【0061】
ステップS8において、サーバ側制御部10(サーバ側中間鍵更新部150)は、中間鍵Rを更新する。具体的には、サーバ側制御部10(サーバ側中間鍵更新部150)は、ステップS7において秘密鍵Sがシフトされたことに応じて、N個の中間鍵Rそれぞれについて、当該中間鍵Rを底とし、当該中間鍵Rに対応する秘密鍵を指数とした冪乗を、除数Dで除算した場合の剰余を当該中間鍵Rに置き換えることで、中間鍵Rを更新する。詳細な処理は、図6に示すフローチャートで説明する。サーバ側制御部10(サーバ側中間鍵更新部150)は、この処理が終了すると、ステップS3に処理を移す。
【0062】
ステップS9において、サーバ側制御部10(サーバ側通信制御部140)は、全てのクライアント端末CLに中間鍵Rを送信する。
【0063】
図5は、本実施形態に係るクライアント端末CLiに係る処理の流れを示すフローチャートである。
【0064】
ステップS11において、端末側制御部20(端末側通信制御部210)は、サーバSVから中間鍵Rを受信したか否かを判定する。端末側制御部20(端末側通信制御部210)は、この判定がYESの場合、ステップS12に処理を移し、この判定がNOの場合、ステップS11を再実行する。
【0065】
ステップS12において、端末側制御部20(端末側通信制御部210)は、中間鍵Rと共に除数Dを受信したか否かを判定する。端末側制御部20(端末側通信制御部210)は、この判定がYESの場合、ステップS13に処理を移し、この判定がNOの場合、ステップS16に処理を移す。
【0066】
ステップS13において、端末側制御部20(私有鍵生成部220)は、私有鍵Piを生成する。
【0067】
ステップS14において、端末側制御部20(端末側中間鍵更新部240)は、クライアント端末CLiに対応している中間鍵Rを除いたN−1個の中間鍵Rについて、当該中間鍵Rを底とし、私有鍵Piを指数とした冪乗を、除数Dで除算した場合の剰余を当該中間鍵Rに置き換えることで、中間鍵Rを更新する。詳細な処理は、図6に示すフローチャートで説明する。
【0068】
ステップS15において、端末側制御部20(端末側通信制御部210)は、更新した中間鍵RをサーバSVに送信する。この処理が終了すると、端末側制御部20(端末側通信制御部210)は、ステップS11に処理を移す。
【0069】
ステップS16において、端末側制御部20(共通鍵生成部250)は、クライアント端末CLiに対応している中間鍵Rを抽出する。
【0070】
ステップS17において、端末側制御部20(共通鍵生成部250)は、クライアント端末CLiに対応している中間鍵Rを底とし、私有鍵Piを指数とした冪乗を、除数Dで除算した場合の剰余を共通鍵Cとすることによって、共通鍵Cを生成する。詳細な処理は、図6に示すフローチャートで説明する。
【0071】
図6は、本実施形態に係る冪剰余算出部120及び冪剰余算出部230における処理の流れを示すフローチャートである。このフローチャートに示す処理は、図4のステップS2、ステップS8、図5のステップS14、ステップS17に利用される。
【0072】
ステップS21において、入力受付部121(入力受付部231)は、底、除数、指数の入力を受け付ける。ここで受け付けた底を底Aとし、除数を除数Bとし、指数を指数eとする。
【0073】
ステップS22において、初期設定部122(初期設定部232)は、第1中間値Aの初期値をステップS21において受け付けた底Aとし、第2中間値Mの初期値を1に設定する。
【0074】
ステップS23において、変換部123(変換部233)は、ステップS21において受け付けた指数eを、2進数に変換する。
【0075】
ステップS24において、計数部124(計数部234)は、ステップS23において変換された、2進数で表現された指数eのビット数を計数する。
【0076】
ステップS25において、基数算出部125(基数算出部235)は、第1中間値Aを更新する。具体的には、基数算出部125(基数算出部235)は、2進数で表現された指数eの右端の値(ビット)が1である場合、第1中間値Aを第2中間値Mで乗算して得られた値を除数Bで除算して剰余を算出する。続いて、基数算出部125(基数算出部235)は、この算出された剰余を第1中間値Aとすることにより、第1中間値Aを更新する。ここで、基数算出部125(基数算出部235)により行われる第1中間値Aと第2中間値Mとの乗算は、第1中間値A及び第2中間値Mそれぞれを10のべき乗の和に変換し、この変換した第1中間値A及び第2中間値Mを乗算することで行われる。
【0077】
ステップS26において、剰余算出部126(剰余算出部236)は、第2中間値Mを更新する。具体的には、剰余算出部126(剰余算出部236)は、2進数に変換された指数eの右端の値(ビット)にかかわらず、第1中間値Aを2乗した値を除数Bで除算した場合の剰余を第2中間値Mとすることにより、第2中間値Mを更新する。なお、第1中間値Aの2乗の計算は、第1中間値Aと第2中間値Mとの乗算と同様に、第1中間値Aを10のべき乗の和に変換し、この変換した第1中間値Aを2乗することにより計算される。
【0078】
ステップS27において、シフト部127(シフト部237)は、2進数に変換された指数eを1ビット右に論理シフトする演算(論理シフト演算)を行う。
【0079】
ステップS28において、反復実行部128(反復実行部238)は、ステップS25〜ステップS27の処理が、反復回数行われたか判定する。ここで、反復回数は、ステップS24において計数された値である。反復実行部128(反復実行部238)は、この判定がYESの場合、処理をステップS29に移し、この判定がNOの場合、処理をステップS25に移す。
【0080】
ステップS29において、出力部129(出力部239)は、第2中間値Mを剰余として出力する。
【0081】
以上、本実施形態によれば、サーバSVは、サーバ側鍵情報生成部110により、1個の基数B、1個の除数D及びN個の秘密鍵Sを生成し、サーバ側中間鍵生成部130により、N個の秘密鍵Sそれぞれについて、基数Bを底とし、当該秘密鍵を指数とした冪乗に対して除数Dで除算した場合に生成されるN個の剰余をN個の中間鍵Rとし、サーバ側通信制御部140により、生成されたN個の中間鍵Rの送受信を行う。
【0082】
また、サーバSVは、サーバ側中間鍵更新部150により、クライアント端末CLiからN個の中間鍵Rをサーバ側通信制御部140によって受信したことに応じて、N個の秘密鍵Sそれぞれについて、i番目の秘密鍵S(iは1からN−1のいずれか)をi+1番目の秘密鍵Si+1に置換すると共にN番目の秘密鍵Sを1番目の秘密鍵Sに置換することで、他の秘密鍵の値に置換し、受信したN個の中間鍵Rそれぞれについて、当該中間鍵を底とし、置換されたN個の秘密鍵のうち当該中間鍵に対応する秘密鍵を指数とした場合の剰余を除数Dで除算した場合に生成されるN個の剰余をN個の中間鍵Rとすることにより、N個の中間鍵Rを更新する。また、サーバは、サーバ側通信制御部140により、クライアント端末からN個の中間鍵Rを受信した場合にN個の中間鍵Rが置換された回数がN−1回であるとき、N台のクライアント端末CL全てに対してN個の中間鍵Rを送信する。
【0083】
また、N台のクライアント端末CLそれぞれ(クライアント端末CLi)は、端末側通信制御部210によりサーバSVから除数Dを受信すると共にN個の中間鍵Rの送受信を行い、私有鍵生成部220により、除数D及びN個の中間鍵Rを受信したことに応じて、私有鍵Piを生成する。また、クライアント端末CLiは、端末側中間鍵更新部240により、私有鍵生成部220により私有鍵Piを生成したことに応じて、当該クライアント端末CLiに対応する中間鍵の値を変更せずに更新したとみなすと共に、当該中間鍵以外のN−1個の中間鍵それぞれについて、当該中間鍵を底とし、当該私有鍵Piを指数とした冪乗に対して除数Dで除算した場合に生成されるN個の剰余をN個の中間鍵Rとすることにより、中間鍵Rを更新する。また、クライアント端末CLiは、共通鍵生成部250により、端末側通信制御部210によりN個の中間鍵Rのみを受信したことに応じて、当該クライアント端末CLiに対応する中間鍵を底とし、私有鍵Piを指数とした冪乗に対して除数Dで除算した場合に生成される剰余を共通鍵Cとする。
【0084】
例えば、N=2であり、秘密鍵Sの値がa、秘密鍵Sの値がbである場合、1番目の中間鍵Rは、サーバSVにより、(3)式のようにして生成される。ここで、Xは、基数Bを底とし秘密鍵Sに対応するaを指数とした冪乗を除数Dで除算した場合の商とする。
【数3】

【0085】
続いて、中間鍵Rは、クライアント端末CL1に送信された場合、中間鍵Rの値は変化せずに、サーバSVに送信される。続いて、中間鍵Rは、サーバSVにより、(4)式のようにして更新される。なお、ここでは更新された中間鍵をR’とする。また、Xは、中間鍵R’を底とし置換された秘密鍵Sの値であるbを指数とした冪乗を除数Dで除算した場合の商とする。
【数4】

【0086】
続いて、中間鍵R’は、クライアント端末CL2に送信された場合、(5)式に示すようにして更新される。なお、ここでは更新された中間鍵をR’’とする。また、Xは、中間鍵R’を底とし私有鍵Pを指数とした冪乗を除数Dで除算した場合の商とする。
【数5】

【0087】
続いて、中間鍵R’’は、サーバSVに送信された後、更新されずにクライアント端末CL1に送信され、共通鍵Cの生成に使用される。すなわち、クライアント端末CL1において共通鍵Cは、(6)式に示すようにして更新される。
【数6】

ただし、Xは、更新された中間鍵R’を底とし私有鍵Pを指数とした冪乗を除数Dで除算した場合の商とする。
【0088】
一方、2番目の中間鍵Rは、サーバSVにより、(7)式のようにして生成される。ここで、Xは、基数Bを底とし秘密鍵Sに対応するbを指数とした冪乗を除数Dで除算した場合の商とする。
【数7】

【0089】
続いて、中間鍵Rは、クライアント端末CL1に送信された場合、(8)式に示すようにして更新される。なお、ここでは更新された中間鍵をR’とする。また、Xは、中間鍵Rを底とし私有鍵Pを指数とした冪乗を除数Dで除算した場合の商とする。
【数8】

【0090】
続いて、中間鍵R’は、サーバSVに送信される。続いて、中間鍵R’は、サーバSVにより、(9)式のようにして更新される。ここでは更新された中間鍵をR’’とする。また、Xは、中間鍵R’を底とし置換された秘密鍵Sの値であるaを指数とした冪乗を除数Dで除算した場合の商とする。
【数9】

【0091】
続いて、中間鍵R’’は、クライアント端末CL2に送信された場合、変化せずに、サーバSVに送信される。続いて、中間鍵R’’は、サーバSVに送信された後、更新されずにクライアント端末CL2に送信され、共通鍵Cの生成に使用される。すなわち、クライアント端末CL2において共通鍵Cは、(10)式に示すようにして更新される。ただし、Xは、更新された中間鍵R’’を底とし私有鍵Pを指数とした冪乗を除数Dで除算した場合の商とする。
【数10】

【0092】
以上のように、サーバSV、クライアント端末CL1、CL2の間では、基数Bに対してa、b、P、Pを指数とした冪乗が行われることによって、共通鍵Cが生成される。この場合に、同一の基数Bについてa、b、P、Pそれぞれを指数として除数Dで除算した場合の剰余は、a、b、P、Pをどの順番で指数とした場合でも同一の結果となることが知られている。よって、この法則を利用すれば、クライアント端末の台数をN台とした場合であっても、本実施形態で説明した処理を行うことによって、クライアント端末CLにおいて、共通鍵Cを生成することができる。
【0093】
以上によれば、共通鍵生成システム1では、N台のクライアント端末CLが、共通鍵の受け渡しを行うことなく共通鍵を生成することができる。ここで、除数Dを桁数が大きい自然数である場合、中間鍵R、除数Dが知られたとしても、これらの値のみから、共通鍵Cを求めるには、膨大な計算量が必要となる。したがって、共通鍵生成システムは、三者以上の間で安全に共通鍵を共有することができる。
【0094】
以上、本発明の実施形態について説明したが、本発明は本実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【符号の説明】
【0095】
1 共通鍵生成システム
SV サーバ
CL クライアント端末
10 サーバ側制御部
20 端末側制御部
110 サーバ側鍵情報生成部
120 冪剰余算出部
130 サーバ側中間鍵生成部
140 サーバ側通信制御部
150 サーバ側中間鍵更新部
210 端末側通信制御部
220 私有鍵生成部
230 冪剰余算出部
240 端末側中間鍵更新部
250 共通鍵生成部

【特許請求の範囲】
【請求項1】
サーバと、N台のクライアント端末とが通信可能に接続された共通鍵生成システムであって、
前記サーバは、
1個の基数、1個の除数及びN個の秘密鍵を生成するサーバ側鍵情報生成手段と、
前記N個の秘密鍵それぞれについて、基数を底とし、当該秘密鍵を指数とした冪乗に対して前記除数で除算した場合に生成されるN個の剰余をN個の中間鍵とするサーバ側中間鍵生成手段と、
前記N台のクライアント端末と前記N個の中間鍵の送受信を行うサーバ側通信制御手段と、
前記クライアント端末からN個の中間鍵を前記サーバ側通信制御手段によって受信したことに応じて、N個の秘密鍵それぞれについて他の秘密鍵の値に置換し、受信したN個の中間鍵それぞれについて、当該中間鍵を底とし、置換されたN個の秘密鍵のうち当該中間鍵に対応する秘密鍵を指数とした場合の剰余を前記除数で除算した場合に生成されるN個の剰余をN個の中間鍵とすることにより、N個の中間鍵を更新するサーバ側中間鍵更新手段と、を備え、
前記N台のクライアント端末それぞれは、
前記サーバから前記除数を受信すると共に前記N個の中間鍵の送受信を行う端末側通信制御手段と、
前記端末側通信制御手段により前記除数及び前記N個の中間鍵を受信したことに応じて、私有鍵を生成する私有鍵生成手段と、
前記私有鍵生成手段により前記私有鍵を生成したことに応じて、前記クライアント端末に対応する中間鍵の値を変更せずに更新したとみなすと共に、当該中間鍵以外のN−1個の中間鍵それぞれについて、当該中間鍵を底とし、当該私有鍵を指数とした冪乗に対して前記除数で除算した場合に生成されるN個の剰余を前記N個の中間鍵とすることにより、N個の中間鍵を更新する端末側中間鍵更新手段と、
前記端末側通信制御手段により前記N個の中間鍵のみを受信したことに応じて、前記クライアント端末に対応する中間鍵を底とし、前記私有鍵を指数とした冪乗に対して前記除数で除算した場合に生成される剰余を共通鍵とする共通鍵生成手段と、を備え、
前記サーバ側中間鍵更新手段は、N個の秘密鍵それぞれについて、i番目の秘密鍵(iは1からN−1のいずれか)をi+1番目の秘密鍵に置換すると共にN番目の秘密鍵を1番目の秘密鍵に置換することで、前記他の秘密鍵の値に置換し、
前記サーバ側通信制御手段は、前記サーバ側中間鍵更新手段により前記N個の中間鍵を更新したことに応じて前記クライアント端末に当該N個の中間鍵を送信し、前記クライアント端末から前記N個の中間鍵を受信した場合に前記N個の中間鍵が置換された回数がN−1回であるとき、N台のクライアント端末全てに対して前記N個の中間鍵を送信する、
共通鍵生成システム。
【請求項2】
サーバと、N台のクライアント端末とが通信可能に接続された共通鍵生成システムにおいて共通鍵を生成する方法であって、
前記サーバが、
1個の基数、1個の除数及びN個の秘密鍵を生成するサーバ側鍵生成ステップと、
前記N個の秘密鍵それぞれについて、前記基数を底とし、当該秘密鍵を指数とした冪乗に対して前記除数で除算した場合に生成されるN個の剰余をN個の中間鍵としてN個の中間鍵を生成するサーバ側中間鍵生成ステップと、
前記N台のクライアント端末のうち、前記除数を送信していない、いずれか1のクライアント端末に前記N個の中間鍵を送信する第1サーバ側送信ステップと、
前記クライアント端末それぞれが、
前記サーバから前記除数及び前記N個の中間鍵を受信する第1端末側受信ステップと、
前記第1端末側受信ステップにおいて前記除数及び前記N個の中間鍵を受信したことに応じて私有鍵を生成する私有鍵生成ステップと、
前記私有鍵生成ステップにおいて前記私有鍵が生成されたことに応じて、前記クライアント端末に対応する中間鍵の値を変更せずに更新したとみなすと共に、当該中間鍵以外のN−1個の中間鍵それぞれについて、当該中間鍵を底とし、当該私有鍵を指数とした冪乗に対して前記除数で除算した場合に生成されるN個の剰余を前記N個の中間鍵とすることにより、N個の中間鍵を更新する端末側中間鍵更新ステップと、
前記端末側中間鍵更新ステップにおいて前記N個の中間鍵が更新されたことに応じて当該N個の中間鍵を前記サーバに送信する端末側送信ステップと、を含み、
前記サーバは、
前記クライアント端末から、N個の中間鍵を受信するサーバ側受信ステップと、
前記サーバ側受信ステップにおいて前記N個の中間鍵を受信したことに応じて、N個の秘密鍵それぞれについて、i番目の秘密鍵(iは1からN−1のいずれか)をi+1番目の秘密鍵に置換すると共にN番目の秘密鍵を1番目の秘密鍵に置換することで、他の秘密鍵の値に置換する置換ステップと、
前記置換ステップにおいて前記N個の秘密鍵が置換されたことに応じて、前記サーバ側受信ステップにおいて受信したN個の中間鍵それぞれについて、当該中間鍵を底とし、置換されたN個の秘密鍵のうち当該中間鍵に対応する秘密鍵を指数とした場合の剰余を前記除数で除算した場合に生成されるN個の剰余をN個の中間鍵とすることにより、N個の中間鍵を更新するサーバ側中間鍵更新ステップと、
前記サーバ側中間鍵更新ステップにより更新されたN個の中間鍵を、前記除数を送信していない、いずれか1のクライアント端末に前記N個の中間鍵を送信する第2サーバ側送信ステップと、
前記サーバ側受信ステップにおいて、前記クライアント端末から前記N個の中間鍵を受信した場合に前記N個の中間鍵が置換された回数がN−1回であるとき、N台のクライアント端末全てに対して前記N個の中間鍵を送信する第3サーバ側送信ステップを更に含み、
前記クライアント端末は、
前記サーバから前記N個の中間鍵のみ受信する第2端末側受信ステップと、
前記第2端末側受信ステップにおいて前記N個の中間鍵のみ受信したことに応じて、記クライアント端末に対応する中間鍵を底とし、前記私有鍵を指数とした冪乗に対して前記除数で除算した場合に生成される剰余を共通鍵とする共通鍵生成ステップと、を更に含む、
共通鍵生成方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate