(57)【要約】【課題】共通鍵の受け渡しを行わずに、２者間で安全に共通鍵を共有することができる共通鍵生成システム及び共通鍵生成方法を提供すること。【解決手段】第１共通鍵生成装置１０は、基数Ａ、除数Ｂ、第１秘密鍵Ｓ１を生成し、基数Ａ、第１秘密鍵Ｓ１、及び除数Ｂに基づいて第１中間鍵Ｍ１を生成し、第１中間鍵Ｍ１を第２共通鍵生成装置２０に送信する。第２共通鍵生成装置２０は、第２秘密鍵Ｓ２を生成し、基数Ａ、第２秘密鍵Ｓ２、及び除数Ｂに基づいて第２中間鍵Ｍ２を生成し、第１中間鍵Ｍ１、第２秘密鍵Ｓ２、及び除数Ｂに基づいて共通鍵を生成し、第２中間鍵Ｍ２を第１共通鍵生成装置１０に送信する。また、第１共通鍵生成装置１０は、第２中間鍵Ｍ２、第１秘密鍵Ｓ１、及び除数Ｂに基づいて共通鍵を生成する。【選択図】図４
2011254385.tif 000002
【特許請求の範囲】
【請求項１】
第１共通鍵生成装置及び第２共通鍵生成装置を備え、前記第１共通鍵生成装置及び前記第２共通鍵生成装置において共通鍵を生成する共通鍵生成システムであって、
前記第１共通鍵生成装置は、
基数、除数、及び第１秘密鍵を生成する第１鍵情報生成手段と、
べき乗の剰余を算出する第１べき剰余算出手段と、
前記基数を底とし、前記第１秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第１べき剰余算出手段により算出し、当該剰余を第１中間鍵とする第１中間鍵生成手段と、
前記基数、前記除数、及び前記第１中間鍵を前記第２共通鍵生成装置に送信する第１送信手段と、を備え、
前記第２共通鍵生成装置は、
前記第１共通鍵生成装置から、前記基数、前記除数、及び前記第１中間鍵を受信する第２受信手段と、
第２秘密鍵を生成する第２鍵情報生成手段と、
べき乗の剰余を算出する第２べき剰余算出手段と、
前記基数を底とし、前記第２秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第２べき剰余算出手段により算出し、当該剰余を第２中間鍵とする第２中間鍵生成手段と、
前記第１中間鍵を底とし、前記第２秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第２べき剰余算出手段により算出し、当該剰余を前記共通鍵とする第２共通鍵生成手段と、
前記第２中間鍵を前記第１共通鍵生成装置に送信する第２送信手段と、を備え、
前記第１共通鍵生成装置は、
前記第２共通鍵生成装置から、前記第２中間鍵を受信する第１受信手段と、
前記第２中間鍵を底とし、前記第１秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第１べき剰余算出手段により算出し、当該剰余を前記共通鍵とする第１共通鍵生成手段と、をさらに備え、
前記第１べき剰余算出手段及び前記第２べき剰余算出手段は、
第１中間値及び第２中間値をそれぞれ設け、
底、除数、及び指数の入力を受け付ける入力受付手段と、
前記第１中間値を受け付けられた前記底の値とするとともに、前記第２中間値を１とする初期設定手段と、
受け付けられた前記指数を２進数に変換する変換手段と、
２進数に変換された前記指数のビット数を計数する計数手段と、
２進数に変換された前記指数の右端の値が１である場合、前記第１中間値及び前記第２中間値を乗算して得られた値を前記入力受付手段により受け付けられた除数で除算した場合の剰余を前記第１中間値とする基数算出手段と、
２進数に変換された前記指数の右端の値にかかわらず、前記第１中間値を２乗した値を前記入力受付手段により受け付けられた除数で除算した場合の剰余を前記第２中間値とする剰余算出手段と、
２進数に変換された前記指数を右シフトするシフト手段と、
前記計数手段により計数された値を反復回数とし、前記基数算出手段、前記剰余算出手段、及び前記シフト手段が、前記反復回数実行されるように制御する反復実行手段と、
前記反復実行手段により、前記基数算出手段、前記剰余算出手段、及び前記シフト手段に係る処理が、前記反復回数実行された後、前記第２中間値を剰余として出力する出力手段と、をそれぞれ有する共通鍵生成システム。
【請求項２】
前記基数算出手段は、前記第１中間値及び第２中間値を１０のべき乗の和により構成される多項式に変換し、変換された当該多項式に基づいて前記第１中間値及び前記第２中間値を乗算し、
前記剰余算出手段は、前記第１中間値を１０のべき乗の和により構成される多項式に変換し、変換された当該多項式に基づいて前記第１中間値の２乗を計算する請求項１に記載の共通鍵生成システム。
【請求項３】
第１共通鍵生成装置及び第２共通鍵生成装置を備える共通鍵生成システムにおいて、前記第１共通鍵生成装置及び前記第２共通鍵生成装置が共通鍵を生成する共通鍵生成方法であって、
前記第１共通鍵生成装置は、
基数、除数、及び第１秘密鍵を生成する第１鍵情報生成ステップと、
べき乗の剰余を算出する第１べき剰余算出ステップと、
前記基数を底とし、前記第１秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第１べき剰余算出ステップにおいて算出させ、当該剰余を第１中間鍵とする第１中間鍵生成ステップと、
前記基数、前記除数、及び前記第１中間鍵を前記第２共通鍵生成装置に送信する第１送信ステップと、を含み、
前記第２共通鍵生成装置は、
前記第１共通鍵生成装置から、前記基数、前記除数、及び前記第１中間鍵を受信する第２受信ステップと、
第２秘密鍵を生成する第２鍵情報生成ステップと、
べき乗の剰余を算出する第２べき剰余算出ステップと、
前記基数を底とし、前記第２秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第２べき剰余算出ステップにおいて算出させ、当該剰余を第２中間鍵とする第２中間鍵生成ステップと、
前記第１中間鍵を底とし、前記第２秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第２べき剰余算出ステップにおいて算出させ、当該剰余を前記共通鍵とする第２共通鍵生成ステップと、
前記第２中間鍵を前記第１共通鍵生成装置に送信する第２送信ステップと、を含み、
前記第１共通鍵生成装置は、
前記第２共通鍵生成装置から、前記第２中間鍵を受信する第１受信ステップと、
前記第２中間鍵を底とし、前記第１秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第１べき剰余算出ステップにおいて算出させ、当該剰余を前記共通鍵とする第１共通鍵生成ステップと、をさらに含み、
前記第１べき剰余算出ステップ及び前記第２べき剰余算出ステップは、
第１中間値及び第２中間値をそれぞれ設け、
底、除数、及び指数の入力を受け付ける入力受付ステップと、
前記第１中間値を受け付けた底の値とするとともに、前記第２中間値を１とする初期設定ステップと、
前記入力受付ステップにおいて受け付けられた指数を２進数に変換する変換ステップと、
２進数に変換された前記指数のビット数を計数する計数ステップと、
２進数に変換された前記指数の右端の値が１である場合、前記第１中間値及び前記第２中間値を乗算して得られた値を前記入力受付ステップにおいて受け付けられた除数で除算した場合の剰余を前記第１中間値とする基数算出ステップと、
２進数に変換された前記指数の右端の値にかかわらず、前記第１中間値を２乗した値を前記入力受付ステップにおいて受け付けられた除数で除算した場合の剰余を前記第２中間値とする剰余算出ステップと、
２進数に変換された前記指数を右シフトするシフトステップと、
前記計数ステップにおいて計数された値を反復回数とし、前記基数算出ステップ、前記剰余算出ステップ、及び前記シフトステップが、前記反復回数実行されるように制御する反復実行ステップと、
前記反復実行ステップにおいて、前記基数算出ステップ、前記剰余算出ステップ、及び前記シフトステップに係る処理が、前記反復回数実行された後、前記第２中間値を剰余として出力する出力ステップと、をそれぞれ含む共通鍵生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通鍵生成システム及び共通鍵生成方法に関する。
【背景技術】
【０００２】
近年、インターネット等のネットワークをデータの交換手段として利用することが急速に広まっている。しかしながら、インターネット等のネットワークでは、データを交換する際に複数のサーバ及び通信回線を経由してデータが転送される。このため、データを転送するサーバ及び通信回線等では、データの盗聴や、データの改ざんや、なりすましをすることが可能となり、セキュリティ問題に発展している。このようなセキュリティ問題に対応するため、暗号化技術が提案されており、例えば、簡易的な暗号化方式として、共通鍵暗号方式が知られている（例えば、特許文献１参照）。
【０００３】
共通鍵暗号方式では、送信者は、鍵を用いてデータの暗号化を行い、暗号化されたデータを閲覧者に送信する。閲覧者は、データを受信すると、送信者の同一の鍵である共通鍵を用いて暗号化されたデータを復号する。このため、共通鍵暗号方式は、共通鍵を用いて暗号化及び復号を行うので、アルゴリズムが簡易である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−９１９６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、共通鍵方式では、生成した共通鍵を、ネットワーク等を用いて相手に共通鍵を渡す必要がある。このため、例えば、共通鍵を電子メール等により平文で相手に送信することによって、第三者に盗聴される恐れがある等、セキュリティ上の問題もある。
【０００６】
本発明は、共通鍵の受け渡しを行わずに、２者間で安全に共通鍵を共有することができる共通鍵生成システム及び共通鍵生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る共通鍵生成システムは、第１共通鍵生成装置及び第２共通鍵生成装置を備え、前記第１共通鍵生成装置及び前記第２共通鍵生成装置において共通鍵を生成する共通鍵生成システムであって、前記第１共通鍵生成装置は、基数、除数、及び第１秘密鍵を生成する第１鍵情報生成手段と、べき乗の剰余を算出する第１べき剰余算出手段と、前記基数を底とし、前記第１秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第１べき剰余算出手段により算出し、当該剰余を第１中間鍵とする第１中間鍵生成手段と、前記基数、前記除数、及び前記第１中間鍵を前記第２共通鍵生成装置に送信する第１送信手段と、を備え、前記第２共通鍵生成装置は、前記第１共通鍵生成装置から、前記基数、前記除数、及び前記第１中間鍵を受信する第２受信手段と、第２秘密鍵を生成する第２鍵情報生成手段と、べき乗の剰余を算出する第２べき剰余算出手段と、前記基数を底とし、前記第２秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第２べき剰余算出手段により算出し、当該剰余を第２中間鍵とする第２中間鍵生成手段と、前記第１中間鍵を底とし、前記第２秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第２べき剰余算出手段により算出し、当該剰余を前記共通鍵とする第２共通鍵生成手段と、前記第２中間鍵を前記第１共通鍵生成装置に送信する第２送信手段と、を備え、前記第１共通鍵生成装置は、前記第２共通鍵生成装置から、前記第２中間鍵を受信する第１受信手段と、前記第２中間鍵を底とし、前記第１秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第１べき剰余算出手段により算出し、当該剰余を前記共通鍵とする第１共通鍵生成手段と、をさらに備え、前記第１べき剰余算出手段及び前記第２べき剰余算出手段は、第１中間値及び第２中間値をそれぞれ設け、底、除数、及び指数の入力を受け付ける入力受付手段と、前記第１中間値を受け付けられた前記底の値とするとともに、前記第２中間値を１とする初期設定手段と、受け付けられた前記指数を２進数に変換する変換手段と、２進数に変換された前記指数のビット数を計数する計数手段と、２進数に変換された前記指数の右端の値が１である場合、前記第１中間値及び前記第２中間値を乗算して得られた値を前記入力受付手段により受け付けられた除数で除算した場合の剰余を前記第１中間値とする基数算出手段と、２進数に変換された前記指数の右端の値にかかわらず、前記第１中間値を２乗した値を前記入力受付手段により受け付けられた除数で除算した場合の剰余を前記第２中間値とする剰余算出手段と、２進数に変換された前記指数を右シフトするシフト手段と、前記計数手段により計数された値を反復回数とし、前記基数算出手段、前記剰余算出手段、及び前記シフト手段が、前記反復回数実行されるように制御する反復実行手段と、前記反復実行手段により、前記基数算出手段、前記剰余算出手段、及び前記シフト手段に係る処理が、前記反復回数実行された後、前記第２中間値を剰余として出力する出力手段と、をそれぞれ有する。
【０００８】
また、前記基数算出手段は、前記第１中間値及び第２中間値を１０のべき乗の和により構成される多項式に変換し、変換された当該多項式に基づいて前記第１中間値及び前記第２中間値を乗算し、前記剰余算出手段は、前記第１中間値を１０のべき乗の和により構成される多項式に変換し、変換された当該多項式に基づいて前記第１中間値の２乗を計算することが好ましい。
【０００９】
本発明に係る共通鍵生成方法は、第１共通鍵生成装置及び第２共通鍵生成装置を備える共通鍵生成システムにおいて、前記第１共通鍵生成装置及び前記第２共通鍵生成装置が共通鍵を生成する共通鍵生成方法であって、前記第１共通鍵生成装置は、基数、除数、及び第１秘密鍵を生成する第１鍵情報生成ステップと、べき乗の剰余を算出する第１べき剰余算出ステップと、前記基数を底とし、前記第１秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第１べき剰余算出ステップにおいて算出させ、当該剰余を第１中間鍵とする第１中間鍵生成ステップと、前記基数、前記除数、及び前記第１中間鍵を前記第２共通鍵生成装置に送信する第１送信ステップと、を含み、前記第２共通鍵生成装置は、前記第１共通鍵生成装置から、前記基数、前記除数、及び前記第１中間鍵を受信する第２受信ステップと、第２秘密鍵を生成する第２鍵情報生成ステップと、べき乗の剰余を算出する第２べき剰余算出ステップと、前記基数を底とし、前記第２秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第２べき剰余算出ステップにおいて算出させ、当該剰余を第２中間鍵とする第２中間鍵生成ステップと、前記第１中間鍵を底とし、前記第２秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第２べき剰余算出ステップにおいて算出させ、当該剰余を前記共通鍵とする第２共通鍵生成ステップと、前記第２中間鍵を前記第１共通鍵生成装置に送信する第２送信ステップと、を含み、前記第１共通鍵生成装置は、前記第２共通鍵生成装置から、前記第２中間鍵を受信する第１受信ステップと、前記第２中間鍵を底とし、前記第１秘密鍵を指数としたべき乗を、前記除数で除算した場合の剰余を前記第１べき剰余算出ステップにおいて算出させ、当該剰余を前記共通鍵とする第１共通鍵生成ステップと、をさらに含み、前記第１べき剰余算出ステップ及び前記第２べき剰余算出ステップは、第１中間値及び第２中間値をそれぞれ設け、底、除数、及び指数の入力を受け付ける入力受付ステップと、前記第１中間値を受け付けた底の値とするとともに、前記第２中間値を１とする初期設定ステップと、前記入力受付ステップにおいて受け付けられた指数を２進数に変換する変換ステップと、２進数に変換された前記指数のビット数を計数する計数ステップと、２進数に変換された前記指数の右端の値が１である場合、前記第１中間値及び前記第２中間値を乗算して得られた値を前記入力受付ステップにおいて受け付けられた除数で除算した場合の剰余を前記第１中間値とする基数算出ステップと、２進数に変換された前記指数の右端の値にかかわらず、前記第１中間値を２乗した値を前記入力受付ステップにおいて受け付けられた除数で除算した場合の剰余を前記第２中間値とする剰余算出ステップと、２進数に変換された前記指数を右シフトするシフトステップと、前記計数ステップにおいて計数された値を反復回数とし、前記基数算出ステップ、前記剰余算出ステップ、及び前記シフトステップが、前記反復回数実行されるように制御する反復実行ステップと、前記反復実行ステップにおいて、前記基数算出ステップ、前記剰余算出ステップ、及び前記シフトステップに係る処理が、前記反復回数実行された後、前記第２中間値を剰余として出力する出力ステップと、をそれぞれ含む。
【発明の効果】
【００１０】
本発明によれば、共通鍵の受け渡しを行わずに、２者間で安全に共通鍵を共有することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係る共通鍵生成システムの全体概要を示す図である。
【図２】本実施形態に係る第１共通鍵生成装置の機能構成を示す図である。
【図３】本実施形態に係る第２共通鍵生成装置の機能構成を示す図である。
【図４】本実施形態に係る共通鍵生成システムにおける共通鍵生成に係る処理の流れを示すフローチャートである。
【図５】本実施形態に係る共通鍵生成システムにおける第１中間鍵、第２中間鍵、及び共通鍵の生成に係る詳細な処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図を参照しながら説明する。
【００１３】
［機能構成］
図１は、本実施形態に係る共通鍵生成システム１の全体概要を示す図である。共通鍵生成システム１は、複数の共通鍵生成装置間で共通鍵を生成するシステムである。共通鍵生成システム１は、第１共通鍵生成装置１０と、第２共通鍵生成装置２０と、を備える。第１共通鍵生成装置１０及び第２共通鍵生成装置２０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネット等のコンピュータネットワークにより構成される通信ネットワークＮにより、通信可能に接続されている。
【００１４】
この第１共通鍵生成装置１０では、基数Ａ、除数Ｂ、及び第１秘密鍵Ｓ１を生成し、基数Ａ、除数Ｂ、及び第１秘密鍵Ｓ１に基づいて第１中間鍵Ｍ１を生成し、第２共通鍵生成装置２０に、基数Ａ、除数Ｂ、及び第１中間鍵Ｍ１を送信する。また、第２共通鍵生成装置２０では、第２秘密鍵Ｓ２を生成し、基数Ａ、除数Ｂ、及び第２秘密鍵Ｓ２に基づいて第２中間鍵Ｍ２を生成し、第１共通鍵生成装置１０に、第２中間鍵Ｍ２を送信する。また、第１共通鍵生成装置１０では、第２中間鍵Ｍ２、除数Ｂ、及び第１秘密鍵Ｓ１に基づいて共通鍵Ｃを生成し、第２共通鍵生成装置２０では、第１中間鍵Ｍ１、除数Ｂ、及び第２秘密鍵Ｓ２に基づいて共通鍵Ｃを生成する。
【００１５】
本実施形態は、コンピュータ（第１共通鍵生成装置１０及び第２共通鍵生成装置２０）及びその周辺装置に適用される。本実施形態における各部は、コンピュータ及びその周辺装置が備えるハードウェア並びにこのハードウェアを制御するソフトウェアによって構成される。
【００１６】
上記ハードウェアには、制御部としてのＣＰＵの他、記憶部、通信部、表示部及び入力部が含まれる。記憶部としては、例えば、メモリ（ＲＡＭ、ＲＯＭ等）、ハードディスクドライブ（ＨＤＤ）及び光ディスク（ＣＤ、ＤＶＤ等）ドライブが挙げられる。通信部としては、例えば、各種有線及び無線インターフェース装置が挙げられる。表示部としては、例えば、液晶ディスプレイ、プラズマディスプレイ等の各種ディスプレイが挙げられる。入力部としては、例えば、キーボード及びマウス等が挙げられる。
【００１７】
上記ソフトウェアには、上記ハードウェアを制御するコンピュータ・プログラムやデータが含まれる。コンピュータ・プログラムやデータは、記憶部により記憶され、制御部により適宜実行、参照される。また、コンピュータ・プログラムやデータは、通信回線を介して配布することも可能であり、ＣＤ−ＲＯＭ等のコンピュータ可読媒体に記録して配布することも可能である。
【００１８】
図２は、本実施形態に係る第１共通鍵生成装置１０の機能構成を示す図である。
第１共通鍵生成装置１０は、第１鍵情報生成手段としての第１鍵情報生成部１１と、第１べき剰余算出手段としてのべき剰余算出部１２と、第１中間鍵生成手段としての第１中間鍵生成部１３と、第１送信手段としての第１送信部１４と、第１受信手段としての第１受信部１５と、第１共通鍵生成手段としての第１共通鍵生成部１６と、を備える。
【００１９】
第１鍵情報生成部１１は、共通鍵を生成する情報となる基数Ａ、除数Ｂ、及び第１秘密鍵Ｓ１を生成する。具体的には、第１鍵情報生成部１１は、基数Ａとして任意の自然数を生成し、除数Ｂとして、桁数が大きい素数（例えば、２０桁以上の素数）を生成するものとする。また、第１鍵情報生成部１１は、第１秘密鍵Ｓ１として、「０」以上かつ「除数Ｂ−２」以下である任意の自然数を生成する。
【００２０】
べき剰余算出部１２は、底、除数、及び指数の入力を受け付け、この底の指数乗を、除数で除算した場合の剰余を算出し、この算出した剰余を出力する。べき剰余算出部１２は、入力受付手段としての入力受付部１２１と、初期設定手段としての初期設定部１２２と、変換手段としての変換部１２３と、計数手段としての計数部１２４と、基数算出手段としての基数算出部１２５と、剰余算出手段としての剰余算出部１２６と、シフト手段としてのシフト部１２７と、反復実行手段としての反復実行部１２８と、出力手段としての出力部１２９と、を備える。また、べき剰余算出部１２は、第１中間値ＡＴと、第２中間値ＭＴとを備える。
【００２１】
入力受付部１２１は、底、除数、及び指数の入力を受け付ける。ここで、入力受付部１２１により受け付けられた底、除数、及び指数を、それぞれ底Ａｉ、除数Ｂｉ、指数ｅとする。
【００２２】
初期設定部１２２は、第１中間値ＡＴの初期値を底Ａｉとし、第２中間値ＭＴの初期値を１に設定する。
変換部１２３は、指数ｅを、１０進数から２進数に変換する。
【００２３】
計数部１２４は、変換部１２３により２進数に変換された指数ｅのビット数を計数する。
【００２４】
基数算出部１２５は、２進数で表現された指数ｅの右端の値（ビット）が１である場合、第１中間値ＡＴを第２中間値ＭＴで乗算して得られた値を除数Ｂｉで除算した場合の剰余を第１中間値ＡＴとすることにより、第１中間値ＡＴを更新する。
【００２５】
なお、第１中間値ＡＴと第２中間値ＭＴとの乗算は、以下のように行われる。すなわち、基数算出部１２５は、第１中間値ＡＴ及び第２中間値ＭＴを、以下の（１）式に示すように、複数桁（例えば、１桁目〜５桁目、６桁目〜１０桁目等、５桁ずつ）に区切り、１０のべき乗により構成される多項式、すなわち、初項を１０のべき乗（例えば１０の５乗）の０乗、公比を当該１０のべき乗（例えば１０の５乗）とした数列の和で表される多項式に変換する。
【数１】
2011254385.tif 000003
【００２６】
ここで、ａ１…ａｍは、第１中間値ＡＴを満たすためにそれぞれの項に付される係数であり、ｂ１…ｂｎは、第２中間値ＭＴを満たすためにそれぞれの項に付される係数である。
【００２７】
続いて、基数算出部１２５は、１０のべき乗の和に変換された第１中間値ＡＴ及び第２中間値ＭＴの多項式を乗算して、（２）式に示すように展開する。その後、展開された値に含まれるそれぞれの項を合計することにより、第１中間値ＡＴと第２中間値ＭＴとを乗算した値を算出する。
【数２】
2011254385.tif 000004
【００２８】
剰余算出部１２６は、２進数に変換された指数ｅの右端の値（ビット）にかかわらず、第１中間値ＡＴを２乗した値を除数Ｂｉで除算した場合の剰余を第２中間値ＭＴとすることにより、第２中間値ＭＴを更新する。なお、第１中間値ＡＴの２乗の計算は、第１中間値ＡＴと第２中間値ＭＴとの乗算と同様に、第１中間値ＡＴを、初項を１０のべき乗（例えば１０の５乗）の０乗、公比を当該１０のべき乗（例えば１０の５乗）とした数列の和で表される多項式に変換し、この多項式の第１中間値ＡＴを２乗することにより計算される。
【００２９】
シフト部１２７は、２進数に変換された指数ｅを右シフトする。具体的には、シフト部１２７は、２進数に変換された指数ｅを１ビット右に論理シフトする演算（論理シフト演算）を行う。
【００３０】
反復実行部１２８は、計数部１２４により計数されたビット数の値を反復回数とし、基数算出部１２５、剰余算出部１２６、及びシフト部１２７に係る処理が、基数算出部１２５、剰余算出部１２６、シフト部１２７の順に、反復回数実行されるように制御する。具体的には、記憶部に初期値を０とするカウンタを設けておき、反復実行部１２８は、基数算出部１２５、剰余算出部１２６、及びシフト部１２７に係る処理が終了したことに応じて、カウンタに１加算（インクリメント）する。その後、反復実行部１２８は、カウンタの値が反復回数に達するまで、基数算出部１２５、剰余算出部１２６、シフト部１２７、インクリメントに係る処理を実行する制御を行い、カウンタの値が反復回数に達した場合に、反復実行を終了する。
【００３１】
出力部１２９は、反復実行部１２８により、基数算出部１２５、剰余算出部１２６、及びシフト部１２７に係る処理が反復回数実行された後、第２中間値ＭＴを剰余として出力する。
【００３２】
第１中間鍵生成部１３は、基数Ａを底とし、第１秘密鍵Ｓ１を指数としたべき乗を、除数Ｂで除算した場合の剰余を第１中間鍵Ｍ１として生成する。具体的には、第１中間鍵生成部１３は、基数Ａを底、除数Ｂを除数、第１秘密鍵Ｓ１を指数とし、これら底、除数、及び指数をべき剰余算出部１２に入力することにより、べき剰余算出部１２から、基数Ａを底とし、第１秘密鍵Ｓ１を指数としたべき乗を除数Ｂで除算した場合の剰余を得る。続いて、第１中間鍵生成部１３は、得られた剰余を第１中間鍵Ｍ１とすることにより、第１中間鍵Ｍ１を生成する。
【００３３】
第１送信部１４は、第１鍵情報生成部１１により生成された基数Ａ、除数Ｂ、及び第１中間鍵生成部１３により生成された第１中間鍵Ｍ１を第２共通鍵生成装置２０に送信する。
【００３４】
第１受信部１５は、第２共通鍵生成装置２０から、第２中間鍵Ｍ２を受信する。
【００３５】
第１共通鍵生成部１６は、第２中間鍵Ｍ２を底とし、第１秘密鍵Ｓ１を指数としたべき乗を、除数Ｂで除算した場合の剰余を共通鍵Ｃとすることにより、共通鍵Ｃを生成する。具体的には、第１共通鍵生成部１６は、第２中間鍵Ｍ２を底、除数Ｂを除数、第１秘密鍵Ｓ１を指数とし、これら底、除数、及び指数をべき剰余算出部１２に入力することにより、べき剰余算出部１２から、第２中間鍵Ｍ２を底とし、第１秘密鍵Ｓ１を指数としたべき乗を除数Ｂで除算した場合の剰余を得る。続いて、第１共通鍵生成部１６は、得られた剰余を共通鍵Ｃとすることにより、共通鍵Ｃを生成する。
【００３６】
図３は、本実施形態に係る第２共通鍵生成装置２０の機能構成を示す図である。
第２共通鍵生成装置２０は、第２受信手段としての第２受信部２１と、第２鍵情報生成手段としての第２鍵情報生成部２２と、第２べき剰余算出手段としてのべき剰余算出部２３と、第２中間鍵生成手段としての第２中間鍵生成部２４と、第２送信手段としての第２送信部２５と、第２共通鍵生成手段としての第２共通鍵生成部２６と、を備える。
【００３７】
第２受信部２１は、第１共通鍵生成装置１０から、基数Ａ、除数Ｂ、及び第１中間鍵Ｍ１を受信する。
【００３８】
第２鍵情報生成部２２は、共通鍵を生成する情報となる第２秘密鍵Ｓ２を生成する。具体的には、第２鍵情報生成部２２は、第２秘密鍵Ｓ２として、「０」以上かつ「除数Ｂ−２」以下である任意の自然数を生成する。
【００３９】
べき剰余算出部２３は、底、除数、及び指数の入力を受け付け、この底の指数乗を、除数で除算した場合の剰余を算出し、この算出した剰余を出力する。べき剰余算出部２３は、入力受付部２３１と、初期設定部２３２と、変換部２３３と、計数部２３４と、基数算出部２３５と、剰余算出部２３６と、シフト部２３７と、反復実行部２３８と、出力部２３９と、を備える。なお、べき剰余算出部２３は、剰余を算出するにあたり、第１中間値ＡＴと、第２中間値ＭＴを備える。
【００４０】
入力受付部２３１、初期設定部２３２、変換部２３３、計数部２３４、基数算出部２３５、剰余算出部２３６、シフト部２３７、反復実行部２３８、及び出力部２３９それぞれの機能については、入力受付部１２１、初期設定部１２２、変換部１２３、計数部１２４、基数算出部１２５、剰余算出部１２６、シフト部１２７、反復実行部１２８、及び出力部１２９それぞれの処理と同様であるので、説明を省略する。
【００４１】
第２中間鍵生成部２４は、基数Ａを底とし、第２秘密鍵Ｓ２を指数としたべき乗を、除数Ｂで除算した場合の剰余を第２中間鍵Ｍ２として生成する。具体的には、第２中間鍵生成部２４は、基数Ａを底、除数Ｂを除数、第２秘密鍵Ｓ２を指数とし、これら底、除数、及び指数をべき剰余算出部２３に入力することにより、べき剰余算出部２３から、基数Ａを底とし、第２秘密鍵Ｓ２を指数としたべき乗を除数Ｂで除算した場合の剰余を得る。続いて、第２中間鍵生成部２４は、得られた剰余を第２中間鍵Ｍ２とすることで、第２中間鍵Ｍ２を生成する。
【００４２】
第２送信部２５は、第２中間鍵生成部２４により生成された第２中間鍵Ｍ２を第１共通鍵生成装置１０に送信する。
【００４３】
第２共通鍵生成部２６は、第１中間鍵Ｍ１を底とし、第２秘密鍵Ｓ２を指数としたべき乗を、除数Ｂで除算した場合の剰余を共通鍵Ｃとすることにより、共通鍵Ｃを生成する。具体的には、第２共通鍵生成部２６は、第１中間鍵Ｍ１を底、除数Ｂを除数、第２秘密鍵Ｓ２を指数とし、これら底、除数、及び指数をべき剰余算出部２３に入力することにより、べき剰余算出部２３から、第１中間鍵Ｍ１を底とし、第２秘密鍵Ｓ２を指数としたべき乗を除数Ｂで除算した場合の剰余を得る。続いて、第２共通鍵生成部２６は、得られた剰余を共通鍵Ｃとすることにより、共通鍵Ｃを生成する。
【００４４】
続いて、図４を参照して、共通鍵生成システム１における処理の流れを説明する。
図４は、本実施形態に係る共通鍵生成システム１における共通鍵生成に係る処理の流れを示すフローチャートである。
【００４５】
ステップＳ１（第１鍵情報生成ステップ）において、第１鍵情報生成部１１は、基数Ａ、除数Ｂ、及び第１秘密鍵Ｓ１を生成する。
【００４６】
ステップＳ２（第１中間鍵生成ステップ）において、第１中間鍵生成部１３は、ステップＳ１において生成された基数Ａ、除数Ｂ、及び第１秘密鍵Ｓ１に基づいて、第１中間鍵Ｍ１を生成する。すなわち、第１中間鍵生成部１３は、基数Ａを底とし、第１秘密鍵Ｓ１を指数としたべき乗を、除数Ｂで除算した場合の剰余を第１中間鍵Ｍ１とする。第１中間鍵Ｍ１を生成する処理は、べき剰余算出部１２において行われるが、詳細については、後述で説明する。
【００４７】
ステップＳ３（第１送信ステップ）において、第１送信部１４は、ステップＳ１において生成された基数Ａ、除数Ｂ、及びステップＳ２において生成された第１中間鍵Ｍ１を第２共通鍵生成装置２０に送信する。
【００４８】
ステップＳ４（第２受信ステップ）において、第２受信部２１は、ステップＳ３において送信された基数Ａ、除数Ｂ、及び第１中間鍵Ｍ１を受信する。
【００４９】
ステップＳ５（第２鍵情報生成ステップ）において、第２鍵情報生成部２２は、第２秘密鍵Ｓ２を生成する。
【００５０】
ステップＳ６（第２中間鍵生成ステップ）において、第２中間鍵生成部２４は、ステップＳ４において受信された基数Ａ及び除数Ｂ、並びにステップＳ５において生成された第２秘密鍵Ｓ２に基づいて、第２中間鍵Ｍ２を生成する。すなわち、第２中間鍵生成部２４は、基数Ａを底とし、第２秘密鍵Ｓ２を指数としたべき乗を、除数Ｂで除算した場合の剰余を第２中間鍵Ｍ２とする。第２中間鍵Ｍ２を生成する処理は、べき剰余算出部２３において行われるが、詳細については、後述で説明する。
【００５１】
ステップＳ７（第２共通鍵生成ステップ）において、第２共通鍵生成部２６は、ステップＳ４において受信された第１中間鍵Ｍ１及び除数Ｂ、並びにステップＳ５において生成された第２秘密鍵Ｓ２に基づいて、共通鍵Ｃを生成する。すなわち、第２共通鍵生成部２６は、第１中間鍵Ｍ１を底とし、第２秘密鍵Ｓ２を指数としたべき乗を、除数Ｂで除算した場合の剰余を共通鍵Ｃとする。共通鍵Ｃを生成する処理は、べき剰余算出部２３において行われるが、詳細については、後述で説明する。
【００５２】
ステップＳ８（第２送信ステップ）において、第２送信部２５は、ステップＳ６において生成された第２中間鍵Ｍ２を第１共通鍵生成装置１０に送信する。
【００５３】
ステップＳ９（第１受信ステップ）において、第１受信部１５は、ステップＳ８において送信された第２中間鍵Ｍ２を受信する。
【００５４】
ステップＳ１０（第１共通鍵生成ステップ）において、第１共通鍵生成部１６は、ステップＳ９において受信された第２中間鍵Ｍ２、並びにステップＳ１において生成された除数Ｂ及び第１秘密鍵Ｓ１に基づいて、共通鍵Ｃを生成する。すなわち、第１共通鍵生成部１６は、第２中間鍵Ｍ２を底とし、第１秘密鍵Ｓ１を指数としたべき乗を、除数Ｂで除算した場合の剰余を共通鍵Ｃとする。共通鍵Ｃを生成する処理は、べき剰余算出部１２において行われるが、詳細については、後述で説明する。
【００５５】
図５は、本実施形態に係る共通鍵生成システム１における第１中間鍵Ｍ１、第２中間鍵Ｍ２、及び共通鍵Ｃの生成に係る詳細な処理の流れを示すフローチャートである。
【００５６】
ステップＳ２１（入力受付ステップ）において、入力受付部１２１（入力受付部２３１）は、底、除数、指数の入力を受け付ける。
ここで、入力受付部１２１（入力受付部２３１）は、第１中間鍵生成部１３又は第１共通鍵生成部１６（第２中間鍵生成部２４又は第２共通鍵生成部２６）から入力を受け付ける。なお、入力受付部１２１（入力受付部２３１）は、第１中間鍵生成部１３（第２中間鍵生成部２４）から入力を受け付ける場合、底が基数Ａ、除数が除数Ｂ、指数が第１秘密鍵Ｓ１（第２秘密鍵Ｓ２）となり、第１共通鍵生成部１６（第２共通鍵生成部２６）から入力を受け付ける場合、底が第２中間鍵Ｍ２（第１中間鍵Ｍ１）、除数が除数Ｂ、指数が第１秘密鍵Ｓ１（第２秘密鍵Ｓ２）となる。
【００５７】
ステップＳ２２（初期設定ステップ）において、初期設定部１２２（初期設定部２３２）は、第１中間値ＡＴの初期値をステップＳ２１において受け付けた底Ａｉとし、第２中間値ＭＴの初期値を１に設定する。
【００５８】
ステップＳ２３（変換ステップ）において、変換部１２３（変換部２３３）は、ステップＳ２１において受け付けた指数ｅを、２進数に変換する。
【００５９】
ステップＳ２４（計数ステップ）において、計数部１２４（計数部２３４）は、ステップＳ２３において変換された、２進数で表現された指数ｅのビット数を計数する。
【００６０】
ステップＳ２５（基数算出ステップ）において、基数算出部１２５（基数算出部２３５）は、第１中間値ＡＴを更新する。具体的には、基数算出部１２５（基数算出部２３５）は、２進数で表現された指数ｅの右端の値（ビット）が１である場合、第１中間値ＡＴを第２中間値ＭＴで乗算して得られた値を除数Ｂｉで除算して剰余を算出する。続いて、基数算出部１２５（基数算出部２３５）は、この算出された剰余を第１中間値ＡＴとすることにより、第１中間値ＡＴを更新する。ここで、基数算出部１２５（基数算出部２３５）により行われる第１中間値ＡＴと第２中間値ＭＴとの乗算は、第１中間値ＡＴ及び第２中間値ＭＴそれぞれを１０のべき乗の和に変換し、この変換した第１中間値ＡＴ及び第２中間値ＭＴを乗算することで行われる。
【００６１】
ステップＳ２６（剰余算出ステップ）において、剰余算出部１２６（剰余算出部２３６）は、第２中間値ＭＴを更新する。具体的には、剰余算出部１２６（剰余算出部２３６）は、２進数に変換された指数ｅの右端の値（ビット）にかかわらず、第１中間値ＡＴを２乗した値を除数Ｂｉで除算した場合の剰余を第２中間値ＭＴとすることにより、第２中間値ＭＴを更新する。なお、第１中間値ＡＴの２乗の計算は、第１中間値ＡＴと第２中間値ＭＴとの乗算と同様に、第１中間値ＡＴを１０のべき乗の和に変換し、この変換した第１中間値ＡＴを２乗することにより計算される。
【００６２】
ステップＳ２７（シフトステップ）において、シフト部１２７（シフト部２３７）は、２進数に変換された指数ｅを１ビット右に論理シフトする演算（論理シフト演算）を行う。
【００６３】
ステップＳ２８（反復実行ステップ）において、反復実行部１２８（反復実行部２３８）は、ステップＳ２５〜ステップＳ２７の処理が、反復回数行われたか判定する。ここで、反復回数は、ステップＳ２４において計数された値である。反復実行部１２８（反復実行部２３８）は、この判定がＹＥＳの場合、処理をステップＳ２９に移し、この判定がＮＯの場合、処理をステップＳ２５に移す。
【００６４】
ステップＳ２９（出力ステップ）において、出力部１２９（出力部２３９）は、第２中間値ＭＴを剰余として出力する。
ここで、ステップＳ２１において、入力受付部１２１（入力受付部２３１）が第１中間鍵生成部１３（第２中間鍵生成部２４）から入力を受け付けた場合、出力される剰余は、第１中間鍵Ｍ１（第２中間鍵Ｍ２）となり、第１共通鍵生成部１６（第２共通鍵生成部２６）から入力を受け付けた場合、出力される剰余は、共通鍵Ｃ（共通鍵Ｃ）となる。
【００６５】
以上のように、本実施形態によれば、共通鍵生成システム１は、第１中間鍵生成部１３により、基数Ａを底とし、第１秘密鍵Ｓ１を指数としたべき乗を、除数Ｂで除算した場合の剰余を第１中間鍵Ｍ１とし、第１共通鍵生成部１６により、第２中間鍵Ｍ２を底とし、第１秘密鍵Ｓ１を指数としたべき乗を、除数Ｂで除算した場合の剰余を共通鍵Ｃとし、第２中間鍵生成部２４により、基数Ａを底とし、第２秘密鍵Ｓ２を指数としたべき乗を、除数Ｂで除算した場合の剰余を第２中間鍵Ｍ２とし、第２共通鍵生成部２６により、第１中間鍵Ｍ１を底とし、第２秘密鍵Ｓ２を指数としたべき乗を、除数Ｂで除算した場合の剰余を共通鍵Ｃとする。
【００６６】
ここで、基数Ａを底とし第１秘密鍵Ｓ１を指数としたべき乗、及び基数Ａを底とし第２秘密鍵Ｓ２を指数としたべき乗は、以下の（３）式で表される。
【数３】
2011254385.tif 000005
ただし、Ｘ１は、基数Ａを底とし第１秘密鍵Ｓ１を指数としたべき乗を除数Ｂで除算した場合の商とし、Ｘ２は、基数Ａを底とし第２秘密鍵Ｓ２を指数としたべき乗を除数Ｂで除算した場合の商とする。
【００６７】
さらに、交換法則により、以下の（４）式が成り立つ。
【数４】
2011254385.tif 000006
【００６８】
ここで、（４）式に（３）式を代入すると、（５）式が成り立つ。
【数５】
2011254385.tif 000007
【００６９】
ここで、（５）式の両辺それぞれを除数Ｂで除算した場合の剰余した場合、左辺の剰余は、第２中間鍵Ｍ２を底とし、第１秘密鍵Ｓ１を指数としたべき乗を、除数Ｂで除算した場合の剰余となり、右辺の剰余は、第１中間鍵Ｍ１を底とし、第２秘密鍵Ｓ２を指数としたべき乗を、除数Ｂで除算した場合の剰余（共通鍵Ｃ）となる。
【００７０】
よって、第１共通鍵生成装置１０及び第２共通鍵生成装置２０それぞれにおいて共通鍵を生成することができる。ここで、除数Ｂを桁数が大きい素数である場合、基数Ａ、除数Ｂ、並びに第１中間鍵Ｍ１及び第２中間鍵Ｍ２を知っていたとしても、これらの値から、共通鍵Ｃを求めるには、膨大な計算量が必要となる。よって、共通鍵生成システム１は、第１共通鍵生成装置１０と第２共通鍵生成装置２０との間で共通鍵の受け渡しを行うことなく、２者間で安全に共通鍵を共有することができる。
【００７１】
また、共通鍵生成システム１は、べき剰余算出部１２及びべき剰余算出部２３において第１中間値ＡＴ及び第２中間値ＭＴを、１０のべき乗により構成される多項式に変換し、これら多項式を乗算して、展開することにより、第１中間値ＡＴと第２中間値ＭＴとの乗算、及び第１中間値ＡＴの２乗の計算を行う。
【００７２】
このようにすることで、共通鍵生成システム１は、第１中間値ＡＴと第２中間値ＭＴが長大桁数である場合、この長大桁数よりも桁数が小さい項を複数含む多項式の乗算により、第１中間値ＡＴと第２中間値ＭＴの乗算や第１中間値ＡＴの２乗の計算を行うことができる。このため、共通鍵生成システム１は、第１共通鍵生成装置１０及び第２共通鍵生成装置２０において、市販の表計算ソフト等を利用して共通鍵を生成する場合に、この表計算ソフト等で有効桁数が限られていても、桁あふれ等による情報落ちを防ぐことができ、問題なく共通鍵を生成することができる。
【００７３】
以上、本発明の実施形態について説明したが、本発明は本実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【符号の説明】
【００７４】
１  共通鍵生成システム
１０  第１共通鍵生成装置
１１  第１鍵情報生成部
１２、２３  べき剰余算出部
１３  第１中間鍵生成部
１４  第１送信部
１５  第１受信部
１６  第１共通鍵生成部
２０  第２共通鍵生成装置
２１  第２受信部
２２  第２鍵情報生成部
２４  第２中間鍵生成部
２５  第２送信部
２６  第２共通鍵生成部
１２１、２３１  入力受付部
１２２、２３２  初期設定部
１２３、２３３  変換部
１２４、２３４  計数部
１２５、２３５  基数算出部
１２６、２３６  剰余算出部
１２７、２３７  シフト部
１２８、２３８  反復実行部
１２９、２３９  出力部
【図１】
2011254385.tif 000008
【図２】
2011254385.tif 000009
【図３】
2011254385.tif 000010
【図４】
2011254385.tif 000011
【図５】
2011254385.tif 000012