(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-14
(45)【発行日】2022-02-22
(54)【発明の名称】公開鍵暗号システム、公開鍵暗号方法、公開鍵暗号プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20220215BHJP
【FI】
G09C1/00 620B
(21)【出願番号】P 2018180880
(22)【出願日】2018-09-26
【審査請求日】2020-07-13
(73)【特許権者】
【識別番号】391016358
【氏名又は名称】東芝情報システム株式会社
(74)【代理人】
【識別番号】100090169
【氏名又は名称】松浦 孝
(74)【代理人】
【識別番号】100074147
【氏名又は名称】本田 崇
(74)【代理人】
【識別番号】100124497
【氏名又は名称】小倉 洋樹
(72)【発明者】
【氏名】岩野 隆
【審査官】青木 重徳
(56)【参考文献】
【文献】国際公開第2002/058038(WO,A1)
【文献】米国特許出願公開第2004/0223616(US,A1)
【文献】IPUSHIRON,暗号技術のすべて,株式会社翔泳社,2017年08月03日,pp.278-283
【文献】森田 光,公開鍵系演算の高速化方式,NTT R&D,社団法人電気通信協会,1999年11月10日,平成11年11月号,pp.785(5)-792(12)
【文献】ブルース・シュナイアー,暗号技術大全,ソフトバンクパブリッシング株式会社,2003年06月06日,pp.273-276
【文献】ジョー・セルコ,プログラマのためのSQLグラフ原論,株式会社翔泳社,2016年08月25日,pp.215-271
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
公開鍵と秘密鍵を一次不定方程式の整数解により求め、合同演算の法である公開鍵(法)及び秘密鍵(法)を含む公開鍵と秘密鍵を生成する公開鍵・秘密鍵生成手段と、
前記公開鍵と前記公開鍵(法)及び暗号化すべき平文を得て、前記公開鍵をベルヌーイシフト写像の反復回数にセットし、前記公開鍵(法)を前記ベルヌーイシフト写像の最大区間にセットし、前記平文を前記ベルヌーイシフト写像の傾き係数にセットし、前記ベルヌーイシフト写像を前記反復回数繰り返して前記平文を暗号化して暗号文を作成する暗号化手段と、
前記秘密鍵と前記秘密鍵(法)と前記暗号文とを得て、前記秘密鍵を前記ベルヌーイシフト写像の反復回数にセットし、前記秘密鍵(法)を前記ベルヌーイシフト写像の最大区間にセットし、前記暗号文を前記ベルヌーイシフト写像の傾き係数にセットし、前記ベルヌーイシフト写像を前記反復回数繰り返して前記暗号文を復号して前記平文を得る復号手段と、
を具備することを特徴とする公開鍵暗号システム。
【請求項2】
前記ベルヌーイシフト写像の初期値を暗号化の度に変更する送信側初期値変更制御手段と、
前記暗号文を復号する度に前記ベルヌーイシフト写像の初期値を、前記送信側初期値変更制御手段によって変更された初期値と同じ値に変更する受信側初期値変更制御手段と、
前記受信側初期値変更制御手段により変更された初期値を用いて前記暗号文の逆元を算出する逆元算出手段と
を備えることを特徴とする請求項1に記載の公開鍵暗号システム。
【請求項3】
前記初期値となる乱数種を生成する乱数種生成手段を有し、
前記暗号化手段は、前記乱数種生成手段により生成された乱数種と前記公開鍵を用いて前記ベルヌーイシフト写像を実行して平文を暗号文へ変換し、
前記暗号文を前記乱数種生成手段により生成された乱数種を用いて前記暗号文の逆元を算出する逆元算出手段が備えられ、
前記復号手段は、前記逆元算出手段により算出された逆元に対し、前記ベルヌーイシフト写像を実行して暗号文を平文へ変換することを特徴とする請求項2に記載の公開鍵暗号システム。
【請求項4】
前記乱数種生成手段は、暗号文の生成毎に新たな乱数種を生成し、前記送信側初期値変
更制御手段及び前記受信側初期値変更制御手段へ与えることを特徴とする請求項3に記載
の公開鍵暗号システム。
【請求項5】
前記平文を暗号化して前記暗号文を送る送信装置と前記暗号文を受け取り平文へ復号する受信装置とを備え、
前記乱数種生成手段は前記送信装置に設けられ、この送信装置では生成した乱数種を前記公開鍵を用いて前記暗号化手段において前記ベルヌーイシフト写像を実行して暗号化し、暗号化した乱数種を前記受信装置へ送り、
前記受信装置では、受信した暗号化された乱数種を前記復号手段で復号して用いることを特徴とする請求項4に記載の公開鍵暗号システム。
【請求項6】
前記乱数種生成手段は、暗号文の生成に際して乱数種の元となる元乱数種を1つ生成し、この元乱数種に基づき新たな乱数種を暗号文の生成毎に生成して前記送信側初期値変更制御手段へ与える一方、前記受信装置へは前記元乱数種を与える処理を行い、
前記受信装置には、暗号文の復号毎に元乱数種に基づき前記乱数種生成手段によって生成される前記新たな乱数種と同期した乱数種を生成する受信側乱数種生成手段が備えられ、この受信側乱数種生成手段により生成された乱数種を前記逆元算出手段へ与えて逆元算出を行うことを特徴とする
請求項5に記載の公開鍵暗号システム。
【請求項7】
公開鍵暗号システムのコンピュータを、
公開鍵と秘密鍵を一次不定方程式の整数解により求め、合同演算の法である公開鍵(法)及び秘密鍵(法)を含む公開鍵と秘密鍵を生成する公開鍵・秘密鍵生成手段、
前記公開鍵と前記公開鍵(法)及び暗号化すべき平文を得て、前記公開鍵をベルヌーイシフト写像の反復回数にセットし、前記公開鍵(法)を前記ベルヌーイシフト写像の最大区間にセットし、前記平文を前記ベルヌーイシフト写像の傾き係数にセットし、前記ベルヌーイシフト写像を前記反復回数繰り返して前記平文を暗号化して暗号文を作成する暗号化手段、
前記秘密鍵と前記秘密鍵(法)と前記暗号文とを得て、前記秘密鍵を前記ベルヌーイシフト写像の反復回数にセットし、前記秘密鍵(法)を前記ベルヌーイシフト写像の最大区間にセットし、前記暗号文を前記ベルヌーイシフト写像の傾き係数にセットし、前記ベルヌーイシフト写像を前記反復回数繰り返して前記暗号文を復号して前記平文を得る復号手段、
として機能させることを特徴とする公開鍵暗号プログラム。
【請求項8】
前記コンピュータは、
前記ベルヌーイシフト写像の初期値を暗号化の度に変更する送信側初期値変更制御手段、
前記暗号文を復号する度に前記ベルヌーイシフト写像の初期値を、前記送信側初期値変更制御手段によって変更された初期値と同じ値に変更する受信側初期値変更制御手段、
前記受信側初期値変更制御手段により変更された初期値を用いて前記暗号文の逆元を算出する逆元算出手段、
として機能することを特徴とする請求項7に記載の公開鍵暗号プログラム。
【請求項9】
前記コンピュータは、前記初期値となる乱数種を生成する乱数種生成手段として機能し、
前記コンピュータは前記暗号化手段として、前記乱数種生成手段により生成された乱数種と前記公開鍵を用いて前記ベルヌーイシフト写像を実行して平文を暗号文へ変換するように機能し、
前記コンピュータは、前記暗号文を前記乱数種生成手段により生成された乱数種を用いて前記暗号文の逆元を算出する逆元算出手段として機能し、
前記コンピュータは前記復号手段として、前記逆元算出手段により算出された逆元に対し、前記ベルヌーイシフト写像を実行して暗号文を平文へ変換することを特徴とする請求項8に記載の公開鍵暗号プログラム。
【請求項10】
前記コンピュータは前記乱数種生成手段として、暗号文の生成毎に新たな乱数種を生成し、前記送信側初期値変更制御手段及び前記受信側初期値変更制御手段へ与えることを特徴とする請求項9に記載の公開鍵暗号プログラム。
【請求項11】
前記コンピュータは、前記平文を暗号化して前記暗号文を送る送信装置と前記暗号文を受け取り平文へ復号する受信装置とに備えられ、
前記乱数種生成手段は前記送信装置のコンピュータによって実現され、この送信装置の前記コンピュータは、生成した乱数種を、前記公開鍵を用いて前記暗号化手段において前記ベルヌーイシフト写像を実行して暗号化し、暗号化した乱数種を前記受信装置へ送るように機能し、
前記受信装置の前記コンピュータは、受信した暗号化された乱数種を前記復号手段で復号して用いるように機能することを特徴とする請求項10に記載の公開鍵暗号プログラム。
【請求項12】
前記送信装置の前記コンピュータは前記乱数種生成手段として、暗号文の生成に際して乱数種の元となる元乱数種を1つ生成し、この元乱数種に基づき新たな乱数種を暗号文の生成毎に生成して前記送信側初期値変更制御手段へ与える一方、前記受信装置へは前記元乱数種を与える処理を行うように機能し、
前記受信装置の前記コンピュータは、暗号文の復号毎に元乱数種に基づき前記乱数種生成手段によって生成される前記新たな乱数種と同期した乱数種を生成する受信側乱数種生成手段として機能し、この受信側乱数種生成手段により生成された乱数種を前記逆元算出手段へ与えて逆元算出を行うように機能することを特徴とする
請求項11に記載の公開鍵暗号プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、公開鍵暗号システム、公開鍵暗号方法、公開鍵暗号プログラムに関するものである。
【背景技術】
【0002】
従来、公開鍵暗号方式としては、RSA暗号が知られている。このRSA暗号の基本は、冪乗を行って、法(Modulo)を取る演算であり、余りを掛け算していくことで演算精度幅を大きくすることなく剰余を行うなど演算コストを削減する手法や冪乗法が用いられることが知られている。即ち、この特許文献1の発明では、CPUの空き時間をRSA暗号では、法を取る計算において剰余算が必須であり、割り算を行うために演算コストがかかってしまう。
【0003】
上記のRSA(Rivest-Shamir-Adleman)暗号処理を採用したものは、特許文献1に紹介されている。この特許文献1には、RSA暗号では、演算負荷が大きく、処理能力の低い組み込み機器のCPUでは、CPUを占有する時間が長くなるといった問題が指摘され、これを解決するために、CPUの空き時間をできる限り少なくなるように、非均等に分割し、短時間でRSA暗号処理を完了させることが開示されている。
【0004】
また、RSA暗号の弱点としては、決まりきった平文として“Yes”か“No”のみにより構成される場合、同じ平文を同じ公開鍵で暗号化するために行い続けると暗号文が限られるため平文が見破られるといった問題がある。これを解決するために平文に乱数を付加して毎回の暗号文を見かけ上変更して送信する手法が取り入られている。しかしながら、この手法では、受信者が復号してから乱数部分を取り除くといった手間が必要であること、また乱数の付加によって平文のサイズが増加するという問題がある。そして、このような乱数を付加する形態では、仮に公開鍵暗号の秘密鍵が第三者に知られてしまった場合には、復号後に乱数部分を取り除くことで平文が特定されてしまう欠点がある。
【0005】
また、特許文献2には、共有鍵を安全に共有することが可能な暗号化方式が開示されている。この特許文献2においては、一時鍵発生手段22が乱数である一時鍵riを発生し、この一時鍵riを暗号化手段14が第1初期鍵ki1を用いて暗号化し暗号文ci1を得て、送信手段20が暗号文ci1を受信装置50に送信する。上記暗号化手段14は、上記一時鍵riを第2初期鍵ki2により暗号化し、共有鍵ksを得る。一方、受信装置50は、暗号文ci1を受信し、復号化手段56に供給し、復号化手段56は、暗号文ci1を復号化して、元の一時鍵riを得る。暗号化手段54が第2初期鍵ki2を用いてこの一時鍵riを暗号化することによって、送信装置10側と同様に受信装置50側でも共有鍵ksを得ることができる。以降、この共有鍵ksを用いて秘密の通信を行うというものである。
【0006】
特許文献3には、情報を暗号化して伝送するのに好適な暗号通信システムが開示されている。この特許文献3のものは、暗号通信システム101の送信装置131と受信装置151とは、それぞれ秘密鍵と公開鍵を生成するとともに、現在時刻をもとに乱数を生成し、この乱数を用いてセッション鍵を作り、RSA暗号の技術を用いてセッション鍵を共有するものである。共有されたセッション鍵は、乱数の暗号化にも用いられ、暗号化された乱数を復号したときに元の乱数と一致することによって、セッション鍵を認証する。認証されたセッション鍵により伝送すべき情報をベクトルストリーム暗号によって暗号化し伝送することで、通信の秘密を保つことができる。
【0007】
特許文献4には、高速演算が可能な新規なカオス的時系列を探索し、このカオス的時系列を用いてカオス発生装置やカオス暗号装置などを実現することが開示されている。具体的には、このカオス発生装置は、変数nの増加に従って急激に増加する関数fi(n)[i=1~L、L≧1]に対し素数mi[i=1~L、L≧1]を設定する手段、変数nの初期値n0に対してfi(n0)から素数miを法として剰余ri(n0)[i=1~L、L≧1]を導出する初期値演算手段、fi(n+1)の計算では剰余ri(n)を利用して素数miを法として導出された剰余ri(n+1)を導出する反復演算手段、変数nをn0から順次増大させながら前記剰余ri(n)[i=1~L、L≧1]を通して生成される一意の値を有するカオス的時系列Xnを出力するカオス信号出力手段により構成される。
【0008】
更に、特許文献5には、R/Wから乱数生成の初期値を暗号フレームに包含/送付し、乱数種を暗号フレーム毎に変化させることで、RFIDの利便性を確保しつつ、暗号解読を困難にする暗号化方法が開示されている。この特許文献5の発明では、リーダ/ライタが、下り暗号フレームの送信の前に、前回送信した下り暗号フレームに包含した付与データを格納する第1の付与データ格納手段の格納値を元に乱数種を生成し、乱数種を初期値として第1の乱数生成手段にて生成する乱数データを元に暗号化/復号化を行うものである。一方、タグでは、下り暗号フレームの受信の前に、前回受信した下り暗号フレームに包含する付与データを格納する第2の付与データ格納手段の格納値を元に乱数種を生成し、乱数種を初期値として第2の乱数生成手段にて生成する乱数データを元に復号化/暗号化を行うものである。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2011-75611号公報
【文献】特開2006-254417号公報
【文献】特開2006-67412号公報
【文献】特開2005-17612号公報
【文献】特開2009-10597号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
上記の従来の暗号化の手法によると、秘匿性の観点からのものが多く、処理の過程に含まれる割算など演算コストが高い処理の低減につながるようなものではなかった。本実施形態では、演算コストの低減を図ることが可能な公開鍵暗号システム、公開鍵暗号方法、公開鍵暗号プログラムを提供する。
【課題を解決するための手段】
【0011】
実施形態に係る公開鍵暗号システムは、公開鍵と秘密鍵を一次不定方程式の整数解により求め、合同演算の法である公開鍵(法)及び秘密鍵(法)を含む公開鍵と秘密鍵を生成する公開鍵・秘密鍵生成手段と、前記公開鍵と前記公開鍵(法)及び暗号化すべき平文を得て、前記公開鍵をベルヌーイシフト写像の反復回数にセットし、前記公開鍵(法)を前記ベルヌーイシフト写像の最大区間にセットし、前記平文を前記ベルヌーイシフト写像の傾き係数にセットし、前記ベルヌーイシフト写像を前記反復回数繰り返して前記平文を暗号化して暗号文を作成する暗号化手段と、前記秘密鍵と前記秘密鍵(法)と前記暗号文とを得て、前記秘密鍵を前記ベルヌーイシフト写像の反復回数にセットし、前記秘密鍵(法)を前記ベルヌーイシフト写像の最大区間にセットし、前記暗号文を前記ベルヌーイシフト写像の傾き係数にセットし、前記ベルヌーイシフト写像を前記反復回数繰り返して前記暗号文を復号して前記平文を得る復号手段と、を具備することを特徴とする。
【図面の簡単な説明】
【0012】
【
図1】本発明に係る公開鍵暗号システムの第1の実施形態の構成を示すブロック図。
【
図1A】本発明に係る公開鍵暗号システムの第2の実施形態の構成を示すブロック図。
【
図1B】本発明に係る公開鍵暗号システムの第3の実施形態の構成を示すブロック図。
【
図1C】本発明に係る公開鍵暗号システムの第4の実施形態の構成を示すブロック図。
【
図1D】本発明に係る公開鍵暗号システムの第5の実施形態の構成を示すブロック図。
【
図2】本発明に係る公開鍵暗号システムの実施形態において用いるベルヌーイシフト写像のマップを示す図。
【
図3】本発明に係る公開鍵暗号システムの実施形態において用いるベルヌーイシフト写像の結果の時系列を示す図。
【
図4】傾き係数A=2の時のベルヌーイシフト写像と合同算術の時系列を示す図。
【
図5】傾き係数A=5のベルヌーイシフト写像マップを示す図。
【
図6】係数A=5の時のベルヌーイシフト写像と合同算術の時系列を示す図。
【
図7】ベルヌーイシフト写像と合同算術のC言語によるソースコードを示す図。
【
図8】
図7のベルヌーイシフト写像と合同算術による演算結果を示す図。
【
図9】一次元不定方程式の整数解によって秘密鍵SKとなる“x”と“y”を求める過程を示す図。
【
図10】本発明に係る公開鍵暗号システムの第1の実施形態の動作を示すフローチャート。
【
図11】ベルヌーイシフト写像による平文3通りの暗号化の結果)と復号の結果を示す図。
【
図12】ベルヌーイシフト写像による公開鍵暗号の暗号化・復号イメージを示す図。
【
図13】本発明に係る公開鍵暗号システムの第3の実施形態の動作を示すフローチャート。
【
図13A】本発明に係る公開鍵暗号システムの第4の実施形態の動作を示すフローチャート。
【
図14】ベルヌーイシフト写像の初期値X
0を変更したときのX
i
【
図15】本発明に係る公開鍵暗号システムの第5の実施形態の動作を示すフローチャート。
【発明を実施するための形態】
【0013】
以下添付図面を参照して、本発明に係る公開鍵暗号システム、公開鍵暗号方法、公開鍵暗号プログラムの実施形態を説明する。
【0014】
本発明の実施形態として、公開鍵を元に暗号化を行い、秘密鍵を保有している受信装置により復号を行うベルヌーイシフト写像による公開鍵暗号の演算を用い、安全で演算コストが低い公開鍵暗号システムを提案する。従来の代表的な公開鍵暗号の一つとして、RSA暗号が知られている。RSA暗号で用いられている数理は、フェルマーの小定理を素数以外の数値に適用できるように拡張したオイラーの定理に基づくものである。
【0015】
本願発明者は、一次元写像として知られるベルヌーイシフト写像を整数演算化し、傾きを一律に変更して反復する値を追跡すると合同算術の定理で知られるフェルマーの小定理と同期することを発見した。この点に着目するとオイラーの定理もベルヌーイシフト写像の反復周期と同期するため、RSA暗号の合同算術による演算をベルヌーイシフト写像による公開鍵暗号として適応可能である。
【0016】
RSA暗号は、法演算(modulo)である合同算術を基本としており、この合同算術には割り算が必須である。これに対し、本発明の実施形態に係るベルヌーイシフト写像による公開鍵暗号アルゴリズムでは割り算を行わず、引き算を1回のみ行えば良いため、合同算術を用いるものと比較して演算コストを削減できる。また、RSA暗号の弱点としては、決まり切った平文が“Yes”か“No”のみにより構成される場合、同じ平文を同じ公開鍵で暗号化を行うと暗号文が限定されるため、平文が見破られやすいといった問題があることは前述したことである。これを解決するため、平文に乱数を付加して送信する手法があるが、受信側の手間が増加することについても述べた。
【0017】
上記に対し本実施形態に係るベルヌーイシフト写像よる公開鍵暗号の演算では、初期値X0を変更できる自由度を有する。即ち、初期値X0を初期ベクターとして変更することで、同じ平文を同じ公開鍵で暗号化しても暗号文のパターンが毎回変動されるので、同じ平文を使用していることが第三者に悟られ難くなることが期待できる。
【0018】
公開鍵暗号方式は、共通鍵暗号方式の鍵の配送の問題から共通鍵を通信相手に渡す際に公開鍵暗号を利用するハイブリット型暗号として用いられているが、同じ共通鍵を使い回し続ける場合は同じ暗号文が出力されるため安全性が小さくなる。実施形態に係るベルヌーイシフト写像を用いた公開鍵暗号システムでは、初期値X0を乱数で毎回変更することで毎回異なる暗号文が生成できる構成が採れるため同じ鍵を使用していることが第三者にわからなくなり安全性を高めることが期待できる。このため、同じパスコードを使い回す用途にも好適となる鍵交換方法となる。本実施形態の暗号の安全性は、RSA暗号と同様に大きな桁の素数同士の掛け算の合成数は、素因数分解に莫大な計算量がかかることを根拠とする。
【0019】
次に、図を用いて実施形態を説明する。各図において、同一の構成要素には同一の符号を付して重複する説明を省略する。第1の実施形態に係る公開鍵暗号システムは
図1に示すように、送信装置100と受信装置200とを備えて構成される。
【0020】
送信装置100と受信装置200とは、コンピュータ機能と通信機能を備える装置であるならば、特に限定されず、パーソナルコンピュータやワークステーション、スマートフォン、PDA(パーソナルディジタルアシスタント)などによって構成することができる。送信装置100は、公開鍵を用いて平文を暗号化し暗号文を送るものであり、送信のための送信手段101を備えている。受信装置200は、送信された暗号文を受信し、上記公開鍵に対応する秘密鍵を用いて復号し平文へ戻すものであり、受信のための受信手段201を備えている。
【0021】
送信装置100と受信装置200とは、有線または無線の伝送路300により接続されている。送信装置100は、暗号化手段102を備えている。暗号化手段102は、上記公開鍵を用いてベルヌーイシフト写像を実行して平文を暗号文へ変換するものである。受信装置200は、復号手段202を備えている。復号手段202は、上記秘密鍵を用いてベルヌーイシフト写像を実行して暗号文を平文へ変換するものである。
【0022】
受信装置200には、上記公開鍵を生成する公開鍵生成手段203と上記秘密鍵を生成する秘密鍵生成手段204が備えられている。上記
図1の構成を備える本実施形態の公開鍵暗号システムは、基本的にベルヌーイシフト写像を用いるものであるから、ベルヌーイシフト写像の説明から始める。
【0023】
○ベルヌーイシフト写像について
ベルヌーイシフト写像は以下の式(1)で定義される。
【数1】
ベルヌーイシフト写像のマップを
図2に示し、式(1)による横軸をi、縦軸をx
i+1とした時系列を
図3に示す。
【0024】
図3では、初期値x
0=0.234とし、“x
0<0.5”であるため、“x
1=2x
0”の演算を行い、x
1=0.468が得られる。x
1については、“x
1<0.5” であるため、“x
2=2x
1”の演算を行い、x
2=0.936が得られ、以降“x
3,x
4,…”と開区間(0,1)を反復し遷移してゆく。
【0025】
次に、ベルヌーイシフト写像と合同算術との同期について説明する。初等整数論の合同算術における重要な定理として、フェルマーの小定理が知られている。Pを素数とし、AをPの倍数でない整数(AとPは互いに素[最大公約数が1]、つまりPが素数であればよい)とするとき、以下の式が成り立つことが知られている。
【数2】
【0026】
例えば,2
11≡2(mod11)の場合2
11=2048に対して,素数11で割る演算を行うと、余りが2となることを示し、11の法(modulo)をとった剰余は2であることを表す式である。また、“P-1”を乗数とした(両辺をAで割る)場合には、以下式(2)のように余りが1となる。
【数3】
【0027】
ここで、式(1)の初期値x
0に“1/11”を設定し、反復演算したx
iの値と、式(2)に“A=2”を設定し、法として素数P=11を設定し、左辺の指数Pを0~11に振った余りの値は、
図4に示すようになる。ここで、式(2)について指数が大きくなるほど桁が莫大になるため、合同算術では法(modulo)をとることで、ある値Q同士を掛け算した結果の余りにもう一回ある値Qを掛け算して、余りを出すと元の掛け算(Q
3)の余りに等しくなるといった性質があり、桁を抑えて演算できるため、このテクニックを使って計算している。
【0028】
図4(A)に示すように、ベルヌーイシフト写像は分数で計算を行っており、この計算におけるX
iの分子の数値が、
図4(B)の合同算術による余りの数値と同じになっており、同期していることが判る。これは、割り切れない数は仮分数(2
i/11)が、例えばi=6のとき、64/11=55/11+9/11=5+9/11となり、帯分数は11の倍数として、5が括りだされ、真分数(9/11)における分子の値“9”は11の割り算の余りとしても示されるからである。以上の
図4から、x
10の時点で1/11とX
0に戻り、ベルヌーイシフト写像は周期長10で繰り返されることが判る。
【0029】
次に、式(2)のAが2以外の数値のときに対応するベルヌーイシフト写像の式を考える。例としてA=5の場合を考えて、これと同期するベルヌーイシフト写像は以下式(3)の5つからなる式になる。式(3)のマップを
図5に示す。
【数4】
【0030】
式(3)に、初期値X
0=1/11を与えて反復演算を行った場合の値と、式(2)において“A=5”を設定し、法として素数P=11を設定した値の遷移を、
図6に示す。
図6を参照するとA=2の場合と同様に、
図6(A)に示される式(3)の反復演算におけるX
iの分子と、
図6(B)に示される合同算術による余りの数値が同じ値となっており、同期している。これも、分数の演算では真分数の分子が合同算術の余りを指しているからであり、傾きAがどのような値でも同様に真分数の分子と合同算術の余りが同じ値になることが判る。そして、X
5=1/11となっており、初期値X
0に戻るため周期長は5で繰り返されることが判る。これらを考察すると、ベルヌーイシフト写像の反復値の真分数の分子は合同算術の余りに相当し、合同算術の余りと同義であることが判る。以上から、傾きAの冪乗の法を取る合同算術は、ベルヌーイシフト写像に代替できることが示された。
【0031】
ここまでベルヌーイシフト写像は開区間(0,1)を扱っていたが、整数演算が行えるよう区間を素数P倍して開区間(0,P)にすることで、冪乗の合同算術の余りに相当するX
iを得ることができる。傾きを“A”とし、開区間(0,P)に拡大し整数演算化したベルヌーイシフト写像は各傾きAの一次式をまとめて、次の式(4)のように、簡潔に表すものとする。
【数5】
上記式(4)のM
kの下付き添え字kは、式(4)の各一次式(一次式の数はA個)を選択する範囲毎の変数を示し、kは0(M
0=0)から傾きA(M
k+1=A)までを表している。例えば、P=1(拡大無し)とすれば、傾きA=2では式(1)、傾きA=5では式(3)が得られる。
【0032】
図7(A)に、整数演算化したベルヌーイシフト写像の式(4)をC言語で記述したプログラムのソースコードを示し、
図7(B)に、合同算術の式(2)をC言語で記述したプログラムのソースコードを示す。
図7のプラグラムを実行した演算結果、を
図8に示す。
図8(A)がベルヌーイシフト写像式(4)を係数A=5、最大区間P=11、反復回数ret=11に設定して、X
10まで反復を行った場合の結果であるX
iの値を示す。
図8(B)は、合同算術式(2)を係数A=5、法P=11として左辺のべき乗のP-1を“0,1,2,…,10”(r=11に設定)まで変更して、それぞれの5のべき乗を法11で割った余りを示している。この
図8によれば、
図8(A)に示されるベルヌーイシフト写像の反復iの値X
iと、冪乗の値(5
i(mod11))が対応して、同じ解となっていることが確認できる。
【0033】
なお、
図7(A)のベルヌーイシフト写像式(4)のプログラムでは、各区間の境界“P×M
k/A”や“P×M
k+1/A”が割り切れるよう区間(0,P)をさらにA倍することで、最大区間(0,A×P)とし各区間の境界を整数のみで扱えるようにしている。具体例には、係数A=5の場合、区間の境界値は式(4)から“0/5,11/5,22/5,33/5,44/5,55/5”となるが、割り切れないため5倍して“0,11,22,33,44,55”の値を境界値として求めておき、メモリ(配列interval[A])に保存している。X
iの値に対応する区間の検索処理(
図7のプログラムでは降順に全件探索し見つかった時点で検索終了)により引き算する値“P×M
k”を選定している。このため、プログラム中の演算結果をモニターに出力する“printf”文ではX
iはAで割ってから出力し、関数の返り値もX
iは、Aで割った値としている。
【0034】
合同算術の式(2)の合同算術演算はC言語で実装した
図7(B)に示すソースコードのように、法11の余りに対して、A=5を掛け算して法11の余りを取りA=5を掛け算する繰り返しで余りの算術を行う手法を使っている。これに対してベルヌーイシフト写像の式(4)では区間の境界値を保存しておくメモリ領域と区間を検索する処理が発生するが演算が1回の引き算のみで良く、割り算を行い余りをとる除算剰余と比較して演算コストの低減が期待できる。
【0035】
実際に
図7のソースコードの演算の繰り返し部分を、100万回反復(関数の入力値にA=5,P=11,
図7(A):ret=1000000,
図7(B):r=1000000に設定して“printf”部分はコメントアウト)を行いオペレーションシステムLinux(登録商標)で提供されているコマンドツール“time”を使って処理時間を調べると、ベルヌーイシフト写像による演算は合同算術の約半分の処理時間になることが確認された。式(4)のベルヌーイシフト写像は、傾きAが大きな値となることで区間の分割数が増加し検索に時間がかかると推測されるが、区間の検索処理は二部探索法を利用するなど検索コストを削減することがより望ましい。
【0036】
以上の考察と実験結果から、合同算術によるべき乗とベルヌーイシフト写像の反復回数は同期して、合同算術によるべき乗の余りとベルヌーイシフト写像のXiは同じ値となる関係が得られることが推定される。よって、RSA暗号で用いられているフェルマーの小定理を素数以外の数にも適応できるよう拡張されたオイラーの定理についてもベルヌーイシフト写像と同期することが推定される。
【0037】
○オイラーの定理について
オイラーの定理は、Nが正の整数でAをNと互いに素な正の整数としたとき、以下の式(5)が成り立つ、という定理である。
【数6】
上記式(5)におけるφ(N)は、オイラーのトーシェント関数と呼ばれ、φ(N)はNより小さい正の整数のうちNと互いに素な数の個数を表す。例えばN=10のときを考えると10と互いに素な10より小さい数をピックアップすると{1,3,7,9}の4個となるため、φ(10)=4となる。
【0038】
また、Nが素数Pの場合、Pと互いに素な数は{1,2,…,P-2,P-1}のP-1個となるため、φ(P)=P-1となり、式(5)はフェルマーの小定理の式(2)になることが判る。このため、オイラーの定理はフェルマーの小定理を素数以外にも適応できるようにした拡張版とされる。特に、素数Pと素数Qを用意して“N=P×Q”としたときには、“φ(N)=(P-1)×(Q-1)”が成り立つことが知られており、RSA暗号では法(modulo)の値としてこの2つの素数を掛け算したNを公開鍵の一部として使用する。注意点として、AとNは互いに素な整数であることが条件のため、Aは素数Pもしくは素数Qを使用しないことである。
【0039】
○RSA(Rivest-Shamir-Adleman)暗号について
RSA暗号は、合同算術による冪乗の余りの周期性に着目したオイラーの定理に基づく公開鍵暗号方式である。公開鍵暗号方式は、第三者に公開する公開鍵により暗号化を行い、秘密鍵を持った本人のみが復号を行えるといった暗号化と復号に別々の鍵を用いる暗号方式である。送信者と受信者が同じ鍵を共有する共通鍵暗号方式は、鍵の配送の問題があるため共通鍵の交換や認証にも広く利用されている。公開鍵はPK(Public Key)と法Nとし、秘密鍵はSK(Secret Key)と法Nとなる。これらの鍵はベルヌーイシフト写像よる暗号化と復号の演算でRSA暗号と等しく利用できるため、本実施形態では、これを用いるものであり、以下に鍵の生成方法について説明する。
【0040】
RSA暗号では、平文をPL(Plain)とし公開鍵PKと公開鍵Nとすると、暗号文C(Cipher)は2つの公開鍵を利用して以下の合同算術式(6)で得る。
【数7】
暗号文Cから復号鍵となる秘密鍵SKを用意し、以下の合同算術の式(7)で復号を行い平文に復元する。
【数8】
ここで式(6)に式(7)を代入し暗号文Cを消去すると、
【数9】
と復号を行うことができる。
【0041】
RSA暗号では、公開鍵PKと公開鍵Nで式(6)の暗号文Cを生成し、復号鍵(秘密鍵)SKと復号鍵Nを持つ本人だけが暗号文Cから正しい平文PLを得られる仕組みとなっており、式(8)が成り立つようなPKとSKを見つけることで公開鍵暗号として成立する。式(8)を成立させることを考えると、式(5)のオイラーの定理を利用することができる。式(5)のAに平文PLを代入して正の整数“y”を導入し、y乗すると、以下の式(8A)が得られる。
【数10】
【0042】
上記式(8A)において、冪乗のφ(N)をyで整数倍して法をとった値、周期長φ(N)で“1”を繰り返すことを示している。前述したように“N=P×Q”としたときには、“φ(N)=(P-1)×(Q-1)”が成り立ち、Nは素数Pと素数Qを掛け算したもの(素数同士の掛け算はRSA暗号の安全性根拠になる)を採用する。更に、式(8A)の両辺に“PL”を掛け算すると、以下の式(9)となる。
【数11】
【0043】
式(8)と式(9)の指数を見比べると、
【数12】
が成り立つようなPKとSKを見つけることで、式(8)は成り立つため暗号文Cは復号できる。ここで、上記式(9A)の右辺の“φ(N)・y”を左辺に移項すると以下の式(10)が得られる。
【数13】
式(10)からベズーの等式としても知られる一次不定方程式の整数解を利用することで、PKとSKが導出できる。以下に、一次不定方程式の解法により具体的な例を提示しPKとSKの導出例を示す。
【0044】
<定理> 一次不定方程式の整数解
“a”と“b”を互いに素な整数としたとき、以下の二元一次方程式を満たす整数解“x”と“y”が存在する。
【数14】
式(10)と式(11)を見比べると、a=PK,x=SK,φ(N)=bに相当することが判る。“y”は“-y”に置き換える。
前述から、“φ(N)=(P-1)×(Q-1)”のため、例として素数P=11と素数Q=13を用意してNとφ(N)を求めると、
N=11×13=143,φ(N)=10×12=120
となる。次にPKを導出するが式(11)は定理より、“a”と“b”を互いに素(最大公約数が1)な整数とするため、φ(N)=120と素な整数を公開鍵PK(=a)としてランダムに選択できる。
【0045】
なお、式(5)は、φ(N)は“P-1”と“Q-1”の最小公倍数LCM(Least Common Multiple)をとっても成り立つため、最小公倍数をとる関数をLCM(P-1,Q-1)として“φ(N)”を置き換え、“N=P×Q”のため、これも置き換えて
【数15】
が成り立つ。上記から10と12で共に割り切れる最小の値(最小公倍数)は60となるため、“LCM(10,12)=60”であり、上記の式の素数Pか素数Q以外の適当な整数Aの指数に“60”を当て嵌めると“60,120,180,…”と60刻みに周期的に“P×Q”で法をとった値は1になる。
【0046】
公開鍵PK(=a)の選択は、文献によってφ(N)=LCM(P-1,Q-1)となる最小公倍数を当て、それより小さい素な値の
“0<PK<LCM(P-1,Q-1)”を採用することが紹介されているが、ここでも最小公倍数“φ(N)=60”を使う。
公開鍵PK(=a)は、例として適当に素数7(60と素な値)を当てることとする。
これで式(11)の“a”と“b”は以下のように決まった。
【数16】
一次不定方程式の整数解「拡張されたユークリッドの互除法」によって秘密鍵SKとなる“x”と“y”を求める。“x”と“y”を求める例を
図9に示す。
【数17】
【0047】
上記式のように“x=-17,y=2”が得られたが、“x”はマイナス、“y”はプラスになっており式(10)と見比べると、”y”はマイナスつまり“y=-y”となるようにしたいため“x”がプラスとなるように、以下のテクニックを利用する。式(11)を以下の式(12)に変形する。
【数18】
式(12)の“a×b”の部分は差し引きで消去できるため式(11)と等しい。
求めた値は“x=-17,b=60”、また“y=2,a=7”であるため、これを式(12)に代入すると、
【数19】
と“x=43,y=-5”になり、式(10)の形式が得られこれで残りの秘密鍵SK=43が得られた。
以上、RSA暗号は平文を底の数値として、公開鍵PKで冪乗を行い“N=素数P×素数Q”で法をとり暗号文を生成し、暗号文を底の数値として秘密鍵SKで冪乗を行い、“N=素数P×素数Q”で法をとり、復号を行い平文に戻すことを示した。
【0048】
図1に示したように、受信装置200の公開鍵生成手段203が公開鍵を生成し、秘密鍵生成手段204が秘密鍵を生成する。生成した公開鍵であるPKとNを、第三者としての送信装置100のユーザに公開する。Nを素因数分解して素数Pと素数Qを求めて式(10)にPKとφ(N)を当て嵌めれば、秘密鍵SKが容易にわかってしまうが、大きな桁の素数同士を掛け算した合成数の素因数分解は、莫大な計算量が必要となり素数Pと素数Qが割り出せないことを安全性の根拠としている。2011年1月に、米国商務省国立標準技術研究所(NIST)は、RSA暗号に使用する法Nを2048ビット以上にすることを公表(NIST SP800-131)している。
【0049】
なお、他に秘密鍵SKの導出方法については、文献によって、
【数20】
が成り立つ”SK”を見つけることであると、紹介されている。しかしながら、これは被除数PK×SKを除数φ(N)で割った商yの剰余が1ということであり、以下の式が成り立つ。
【数21】
この式は、式(10)と同じであり、本実施形態では一次不定方程式の整数解により秘密鍵SKを導出することとした。
【0050】
<第1の実施形態>
以上のようにして、求められた公開鍵と秘密鍵を用いて、
図1に示した第1の実施形態に係る公開鍵暗号システムは、
図10に示すフローチャートに基づく動作を行い、ベルヌーイシフト写像よる暗号化と復号を実行する。なお、
図10では素数Pと素数Qから公開鍵PKと秘密鍵SKと法Nは受信装置200において生成済みであり、公開鍵PKと法Nは送信装置100へ渡されているものとする。
【0051】
即ち、送信装置100は、公開鍵PKと公開鍵N(法N)を入手し(S11)、平文を入手し(S12)、公開鍵PKをベルヌーイシフト写像の反復回数にセットし、公開鍵Nをベルヌーイシフト写像の最大区間にセットし、平文をベルヌーイシフト写像の傾き係数にセットし(S13)、準備が完了となる。
【0052】
次に、ベルヌーイシフト写像により暗号化を行う(S14)。このステップS14の処理は、
図7(A)に示したプログラムの実行による処理となる。ステップS14の処理が行われ、反復回数PK繰り返された結果の値X
PKが暗号文として生成される(S15)。この暗号文X
PKは受信装置200へ伝送路300を介して送信される。
【0053】
一方受信装置200は、秘密鍵SKと秘密鍵N(法N)を入手し(S21)、暗号文を受信する(S22)。次に、秘密鍵SKをベルヌーイシフト写像の反復回数にセットし、秘密鍵Nをベルヌーイシフト写像の最大区間にセットし、暗号文をベルヌーイシフト写像の傾き係数にセットし(S23)、準備が完了となる。
【0054】
次に、ベルヌーイシフト写像により復号を行う(S24)。このステップS24の処理は、
図7(A)に示したプログラムの実行による処理となる。ステップS24の処理が行われ、反復回数SK繰り返された結果の値X
SKが復号文(平文)として生成される(S25)。
【0055】
上記公開鍵暗号システムの処理を、具体例により説明する。例として、3つの平文(A=5,A=19,A=101)を用意し、公開鍵による暗号化と秘密鍵による復号したときのそれぞれの反復X
iの値を
図11に示す。前述したが、平文Aには素数P=11もしくは素数Q=13と同じ値を入れない。このため、実用では平文は素数Pと素数Q以下の値にするなど制約を与える。各平文は公開鍵の値となる7回分を式(4)で反復演算を行なった
図11(A)の“i=7”の行に示す“X
7”が暗号文となる。暗号文に秘密鍵の値となる43回を式(4)で反復演算を行ったX
43が、元の平文に復号されていることが
図11(B)の“i=43”の行において確認できる。なお、初期値X
0は暗号化と復号で共に“1”に設定している。
【0056】
この暗号化と復号のイメージを、ベルヌーイシフト写像のマップとして
図12に示す。この
図12によって、平文を5としたときの式(4)における傾きがA=5になり、復号鍵分(PK=7)の回数の反復を行って暗号化することで暗号文X
7=47が得られることが判る。復号時はX
7=47を式(4)の傾きA=47に設定して、秘密鍵分の回数(SK=43)の反復写像を行うことによってX
43=5の平文5が復元される。
【0057】
演算負荷について考察する。
図7のソースコードに示すように、傾きAの値で区間の分割数が決まるため、例えば送信者がパスワード8文字のような64bitのデータを送信する場合、8bitずつ小分けにして平文(傾きA)を小さくして暗号化を行い8回分送信する。これにより、1回(8bit)の暗号処理における区間の最大分割数(最大255)が少なくなり、区間の検索回数を少なくできる。送信する暗号文X
i(復号に使用する傾きA)は法Nの値により大きな値になるため、送信側は処理能力の低い携帯端末で暗号化を行い、受信者側は処理能力の高いサーバで復号を行うといったパスコード認証のような形態において好適となる。
【0058】
従来の合同算術による計算では、
図7(B)のソースコードのステップ数“r”が公開鍵もしくは秘密鍵の値に相当するが、実際には大きな値を扱うため計算量が莫大になり現実的ではなくなる。このため、“冪乗法”を利用することで計算量が少なくなる手法を用いている。
【0059】
例として
図11の暗号文47を復号文5に戻す場合は式(7)より以下の合同算術式が成り立っている。
【数22】
指数部分の秘密鍵SK=43から
図7では43ステップの計算が必要となる。冪乗法ではこの計算に補助項
【数23】
を計算する。この手法はその前の項の2乗
【数24】
から得られるため計算ステップは5回となる。
【数25】
となり、計算ステップが3回となるため、合計8回のステップで計算が可能となり演算負荷を軽減できる。
【0060】
ここまでの計算では法N=143であるため、最大桁は “143
2=20449”までを扱うことが考えられるが、最大桁を“143×2=286”までに小さくする手法がある。たとえば上記の
【数26】
の箇所ついて“53×27=1431”となるが、27を2進展開すると
“2
4+2
3+2
1+2
0”となり、補助項を求めると、
【数27】
となり、
【数28】
となり、足し算の計算は
【数29】
となり、ここまでのすべての途中の計算は最大桁を、“143×2=286”以下にできている。
【0061】
また、
【数30】
であるが、同様に47を2進展開すると“2
5+2
3+2
2+2
1+2
0”となり、補助項を求めると
【数31】
となり、
【数32】
が最終的に導かれ、足し算部分は上記のように一回の足し算の余りの結果を次の値と足し算して余りを順に求めて行く。
【0062】
式(13)と比較すると、計算ステップ数は増えているがすべての途中の計算は最大桁を“143×2=286”以下にでき、桁数を抑えることができる。こうした演算に必要な最大桁を小さくするテクニックを取り込み、
図7に示すように合同算術部分をベルヌーイシフト写像の演算に置き換えることで、傾きAの桁数が小さくなり区間の検索回数を減らすことができるため、演算負荷を小さくすることが期待できる。
【0063】
図1Aには、第2の実施形態に係る公開鍵暗号システムが示されている。第2の実施形態に係る第2の実施形態に係る公開鍵暗号システムでは、送信装置100Aがベルヌーイシフト写像の初期値を暗号化の度に変更する送信側初期値変更制御手段105を備えており、受信装置200Aが、暗号文を復号する度にベルヌーイシフト写像の初期値を、上記送信側初期値変更制御手段105によって変更された初期値と同じ値に変更する受信側初期値変更制御手段205と、上記受信側初期値変更制御手段205により変更された初期値を用いて前記暗号文の逆元を算出する逆元算出手段206を備えている。暗号化手段102は、送信側初期値変更制御手段105により変更された初期値を用いてベルヌーイシフト写像を実行して暗号化を行う。復号手段202は、受信側初期値変更制御手段205により変更された初期値を用いて得られた逆元の暗号文に対してベルヌーイシフト写像を実行して復号を行う。この逆元については、次の第3の実施形態で詳しく述べる。本実施形態によれば、暗号文の暗号化の度に初期値が変更されるので、決り切った平文として“Yes”か“No”のみにより構成される場合、同じ平文を同じ公開鍵で暗号化するために行い続けると暗号文が限られるため平文が見破られる危険性を低減させる。
【0064】
図1Bには、第3の実施形態に係る公開鍵暗号システムが示されている。この実施形態では、ベルヌーイシフト写像を実行する場合の初期値となる乱数種を生成する乱数種生成手段400を有する。乱数種生成手段400は、送信装置100Bと受信装置200B以外の装置に設けられ、生成された乱数種は、秘匿した状態で送信装置100Bと受信装置200Bに与えられる。ここでは、伝送路300を用いた配信の場合に暗号化して送信し、送信装置100Bと受信装置200Bにおいて復号して用いるようにすることができる。勿論、乱数種生成手段400は、送信装置100Bと受信装置200Bの少なくとも一方に設けられても良い。
【0065】
前記暗号化手段102Bは、上記乱数種生成手段400により生成され送信側初期値変更制御手段105を介して与えられた乱数種を初期値とし、この初期値と上記公開鍵を用いてベルヌーイシフト写像を実行して平文を暗号文へ変換する。また、受信装置200Bには、上記暗号文を上記乱数種生成手段400により生成され受信側初期値変更制御手段205を介して与えられた乱数種を用いて上記暗号文の逆元を算出する逆元算出手段206が備えられる。復号手段202Bは、上記逆元算出手段206により算出された逆元とされた暗号文に対し、ベルヌーイシフト写像を用いた復号を実行して暗号文を平文へ変換する。
【0066】
この第3の実施形態による処理のフローチャートを
図13に示す。このフローチャートの処理は
図10のものを変更したもので、送信装置100Bと受信装置200Bにおいては、乱数種の取得ステップ(S16,S26)が加わっている。そして、送信側では、ステップS17において、公開鍵PKをベルヌーイシフト写像の反復回数にセットし、公開鍵Nをベルヌーイシフト写像の最大区間にセットし、平文をベルヌーイシフト写像の傾き係数にセットし、乱数種を初期値X
0にセットし(S17)、準備が完了となる。また、受信装置200Bにおいては、暗号文の受信後に乱数種を用いて逆元を求める処理を行い(S27)、この逆元算出した暗号文を復号する暗号文にセットする(S28)。これ以外の処理は、第1の実施形態による処理と同様である。
【0067】
上記公開鍵暗号システムの処理を、具体例により説明する。
図13における送信装置100Bによる暗号化のフローチャートにて、平文を5とし初期値X
0=1の場合に追加して、例としてX
0=3とX
0=67の2つ初期値X
0を用意した。この2つのX
0=3とX
0=67を初期値に設定し、復号鍵(PK=7)の回数を反復演算して、取得した“X
i”を示す表が
図14である。初期値X
0=3に設定した場合は、この暗号文をC
3と表現してC
3=141が得られている。初期値X
0=1では暗号文をC
1とすると暗号文C
1=47であるのに対し、初期値X
0=3に変えたことで異なる暗号文が得られることが確認できる。ここで、初期値X
0から初めてX
0,X
1,X
2,・・・と変化する各X
iの値に着目すると、X
0=3,X
1=15,X
2=75となっておいる。これらをX
0=3で各々割ると、X
0=1,X
1=5,X
2=25となり初期値X
0=1に設定した場合と同じ値になることが判る。このように、初期値を変更したときに得られる暗号文は、初期値X
0=1のときの暗号文が異なってしまうので、初期値を変更したことにより得られる暗号文から変更した初期値を用いて、初期値X
0=1のときの暗号文を求まる処理を、「逆元を算出する処理」という。そして、逆元算出手段が「逆元を算出する処理」を実行することになる。
【0068】
初期値X
0=3から始めた場合に暗号文C
3=141となるまでの各暗号文の値について、3で合同算術の逆数をとれば、初期値X
0=1のときの各々の“X
i”が取得でき、X
7となる暗号文C
1=47を取得できる。この場合では、
【数33】
が成り立つ暗号文C
1を求めればよいため、“141/3”を計算した結果のC
1=47が該当することが判る。ただし、注意点がある。初期値X
0=1の場合と同等になる暗号文C
1は乱数で決めた初期値X
0で逆数をとることで求められるが、合同算術において乗法逆元は上記合同式を満たすC
1=47のみでなく複数の解が得られることである。
【0069】
上記式は被除数3×C
1を除数143で割った商yの剰余が141ということであり、以下の式が成り立つ
【数34】
変形すると
【数35】
となり、“y=0,3,6,…”とすることで、“C
1=47,190,333,…”と際限なく複数の解が得られて元の暗号文が1つに識別できなくなる。そこで、「初期値X
0とする乱数種と平文の数値は、法N以下の値とする」と言うルールを設けることで1つに絞る。この例では、C
1=47のみが取得されることになる。
【0070】
次に、初期値X
0=67に設定変更した場合は暗号文をC
67として(X
7=)C
67=3が得られており、初期値X
0=1のときと異なる暗号文が得られることが確認できる。
この場合
【数36】
が成り立つ暗号文C
1を求めればよい。以下の式の解が整数になるC
1を求めると、
【数37】
“y=22,89,156,…”とすることで、“C
1=47,190,333,…”と複数の解が得られる。そこで、前述のルールに従って法N(ここでは143)以下の値とするためC
1=47のみを取得することができる。
【0071】
以上から乱数種を初期値X
0に設定したときに生成された暗号文C
x0から、初期値X
0=1を設定したときに生成される暗号文C
1に戻すとき、以下の式(14)が成立するC
1を求めればよい。
【数38】
【0072】
乱数種の初期値X
0は、送信装置(送信者)と受信装置(受信者)でお互い秘匿することが必要である。このための構成を備える第4の実施形態に係る公開鍵暗号システムを、
図1Cに示す。乱数種生成手段400は、送信装置100Cに備えられる。この送信装置100Cに備えられている暗号化手段102Cが、乱数種生成手段400により生成された乱数種を上記公開鍵を用いて暗号化手段102Cにおいてベルヌーイシフト写像を実行して暗号化する。更に、暗号化した乱数種を送信手段101を介して受信装置200Cへ送る。受信装置200Cでは、受信した暗号化された乱数種を復号手段202Cでベルヌーイシフト写像を実行して復号して用いる。この第4の実施形態では第3の実施形態と同様に、逆元算出手段206が、変更された初期値(乱数種)を用いて逆元の算出を行う。
【0073】
第4の実施形態における、乱数種の処理と、平文を暗号化して送信する処理及び暗号化された暗号文を復号化する処理を
図13Aのフローチャートに示す。受信装置200Cにおいては、素数Pと素数Qを生成し、PとQから公開鍵N=PxQと公開鍵PKを作成し(S41)、公開鍵PKと公開鍵Nを送信者に送付する(S42)。更に、公開鍵Nと公開鍵PKから秘密鍵SKを生成する(S43)。送信装置100Cでは、乱数種を生成し上記で受信装置200Cから到来した公開鍵を用いてベルヌーイシフト写像による乱数種の暗号化を行う(S31)。次に暗号化した乱数種を受信装置200Cへ送る(S32)。これに対し、受信装置200Cでは、受信した暗号化した乱数種を秘密鍵を用いてベルヌーイシフト写像による復号を行い乱数種を復元する(S44)。以上で、送信装置100Cと受信装置200Cには同じ乱数種が暗号文の生成と復号の度に更新されて揃うことになる。
【0074】
次に、送信装置100Cが、公開鍵を用いて乱数種を初期値X0に設定したベルヌーイシフト写像による平文の暗号化を行い(S33)、暗号文を受信装置200Cへ送信する(S34)。受信装置200Cでは、送信装置100Cからの暗号文を受け取り、乱数種を逆数として受信した暗号文の逆元を計算する(S45)。これで、乱数種を初期値として暗号化された暗号文が初期値が1である暗号文へと変換される(逆元の暗号文が求められる)。受信装置200Cでは、この逆元の暗号文に秘密鍵を用いてベルヌーイシフト写像により平文に復号する(S46)。而して、送信装置100Cにおいて暗号化される前の平文が受信装置200Cにおいて安全に復元される。
【0075】
図1Dに第5の実施形態に係る公開鍵暗号システムの構成を示す。本実施形態では、送信装置100Dに設けられた乱数種生成手段400Dは、暗号文の生成に際して乱数種の元となる元乱数種を1つ生成する。この元乱数種は、送信手段101を介して受信装置200Dへ与える。乱数種生成手段400Dは、平文の暗号化の毎に上記元乱数種に基づき所定のアルゴリズムで乱数種を生成し送信側初期値変更制御手段105を介して暗号化手段102Dへ与え、暗号化の初期値として用いさせる。
【0076】
受信装置200Dでは、受信手段201Dにより受信された暗号化されている元乱数種は復号手段202Dへ送られて復号されて元乱数種とされる。上記受信装置200Dには、受信側乱数種生成手段208が備えられる。受信側乱数種生成手段208は、暗号文の復号毎に元乱数種に基づき乱数種生成手段400Dと同じアルゴリズムで乱数種を生成する。受信装置200Dでは、受信側乱数種生成手段208により生成された乱数種を用いて復号を行う。即ち、上記で生成された乱数種が逆元算出手段206へ与えられ、これを初期値として用いて上記暗号文の逆元を算出する。逆元の算出された暗号文は、復号手段202Dにより他の実施形態と同様にして復号され平文が得られる。
【0077】
本第5の実施形態のポイントは、送信装置(送信者)から受信装置(受信者)へ送られる初期値X
0を秘匿とすることにある。
図1Bに示した第3の実施形態では送信装置が暗号文を受信装置に送付する度に乱数種(初期値X
0)を生成して、それを公開鍵で暗号化して送信し、受信装置側は秘密鍵で復号を行い、乱数種(初期値X
0)を入手することでお互いに秘匿の情報を共有するものであった。しかしながら、この実施形態によれば、通信の度に乱数を生成して暗号化と復号を公開鍵暗号方式で行うことは比較的時間がかかってしまう問題が生じる。
【0078】
このため、この第5の実施形態では、最初の1回目だけお互い秘匿とする乱数である元乱数種を送受信し、2回目以降はその秘匿の乱数(元乱数種)を種にして秘密情報である初期値X0を生成すれば、毎回乱数種を送信装置が暗号化して送信する手間と、受信装置が暗号化された乱数種を受信して復号する手間が、削減できる。
【0079】
本実施形態のフローチャートを
図15に示す。受信装置200Dにおいては、素数Pと素数Qを生成し、PとQから公開鍵N=PxQと公開鍵PKを作成し(S41)、公開鍵PKと公開鍵Nを送信者に送付する(S42)。更に、公開鍵Nと公開鍵PKから秘密鍵SKを生成する(S43)。送信装置100Dでは元乱数種を生成して(S31D)、受信装置200Dに送信する(S32D)。送信装置100Dと受信装置200Dは、予め秘匿の乱数種(1つ)を共有している。秘匿で共有するまでの手法に制限はないが、例えば、
図1Cの第4の実施形態が暗号化毎の乱数種を共有した手法と同じ手法により、受信装置200Dへ送信を行っておくことができる。送信装置100Dと受信装置200Dは、同じアルゴリズムで乱数生成を行う。秘匿の乱数種と送信装置100Dで都度生成した乱数種を受信装置200Dと送信装置100Dで共有する同一の乱数生成アルゴリズムにて乱数種を変換(生成)する(S35、S47)。
【0080】
変換した乱数種はベルヌーイシフト写像の初期値X
0に設定して送信装置100Dは
図1Dの暗号化手段102Dにより暗号化を行って(S33)、暗号文を受信装置200Dへ送信する(S34)。受信装置200Dでは、送信装置100Dから受信した元乱数種に基づき受信側乱数種生成手段208により乱数種を変換して(S47)、受信した暗号文を変換した乱数種で逆元を算出する(S45)。逆元演算の結果取得した暗号文は秘密鍵SKを用いて復号を行い平文を得る(S46)。このような構成を採ることで、通信の度に生成する乱数種を送信装置100Dで暗号化して受信装置200Dで復号するといった比較的計算コストの高い公開鍵暗号の計算を省くことができる。
【0081】
受信装置200Dと送信装置100Dで共有する乱数生成アルゴリズムは、例えばベルヌーイシフト写像を用いる。この場合、秘匿の乱数を傾きの値にして送信装置100Dで生成した乱数種は初期値X0に設定し、所定回数(受信装置200Dと送信装置100Dで秘匿している乱数種が望ましい)を反復演算して変換した乱数種を求めることが考えられる。
【0082】
また、近年インターネットから銀行の預金口座にアクセス(ログイン)する際にパスワードカードを利用するサービスが提供されている。ここで、サーバで生成される乱数とユーザが持つパスワードカードで生成される乱数は、時間を種として同じ乱数生成変換アルゴリズムから生成される。そして、常にサーバとユーザが持つパスワードカードの乱数が同期できるようお互い秘匿とする乱数として保持できる仕組みとなっており、このような乱数種を用いてもよい。
【0083】
上記第2~5の実施形態によれば、初期値X0を送信の度(暗号文生成の度)に毎回初期ベクターとして変更を行ってベルヌーイシフト写像による平文の暗号化を行うので、毎回同じ平文(パスコード)でも通信上は異なる暗号文となるため、第三者(攻撃者)が同一の平文を通信していることが判らなくなり、安全性向上が期待できる。
【0084】
以上のように、お互い秘匿の乱数種を共通鍵暗号の共通鍵として捕えると公開鍵暗号方式に共通鍵暗号方式を追加した安全性強度を持たせることができる。公開鍵の法Nの鍵長はコンピュータの処理性能の向上と共に安全性確保のため年々大きくなる傾向があるが公開鍵の鍵長が大きくなると演算コストも大きくなるため、公開鍵の長さを抑えて秘匿の乱数種を共通鍵として与えて安全性を確保する形態をとることで安全性の強度と演算コストをトレードオフする構成をとることができる。
【0085】
RSA暗号では合同算術による演算を基礎とするが、本実施形態では、ベルヌーイシフト写像で演算することで除算剰余は不要となり、一回の引き算で行えるため演算コストを抑えることができる。また、式(4)の傾きAの値によって区間の分割数が決まる。そこで本実施形態では、暗号化処理において送信装置は平文を小分けにして平文(傾きA)の値を小さくすることによって区間の検索回数の演算コストを少なくしても良い。このため送信側は処理能力の低い携帯端末で暗号化を行い、受信側は処理能力の高いサーバで復号を行うといったパスコード認証のような形態に好適である。
【0086】
本実施形態では、ベルヌーイシフト写像の初期値X0を初期ベクターとして乱数種で変更する構成を採用している。このため、同じ平文を同じ公開鍵で暗号化すると乱数種に応じた毎回異なる暗号文を出力するようにでき、同じ平文を暗号化していると第三者に知られる可能性が低下し、安全性が高くなる効果が期待できる。また、本実施形態を、初期値X0となるお互い秘匿の乱数種を共通鍵暗号の共通鍵を用いるものであるとして捕えると、公開鍵暗号に追加して共通鍵暗号を追加した安全性強度を持たせる効果が期待できる。
【0087】
公開鍵の法Nの鍵長はコンピュータの処理性能の向上と共に安全性確保のため年々大きくなる傾向がある。公開鍵の鍵長が大きくなると演算コストが高くなるため、本実施形態を、公開鍵の長さを抑えて秘匿の乱数種を共通鍵として採用するものであると見立てることで、安全性の強度と演算コストをトレードオフする構成をとることができるものである。
【符号の説明】
【0088】
100、100A、100B、100C、100D 送信装置
101 送信手段
102、102B、102C、102D 暗号化手段
105 送信側初期値変更制御手段
200、200A、200B、200C、200D 受信装置
201 受信手段
202、202B、202C、202D 復号手段
203 公開鍵生成手段
204 秘密鍵生成手段
205 受信側初期値変更制御手段
206 逆元算出手段
208 受信側乱数種生成手段
300 伝送路
400、400D 乱数種生成手段