説明

複素数及び行列による強化RSA系暗号

【課題】離散対数問題に難読性の根拠を置く暗号の強度を向上させる。また、RSA暗号の鍵を高速に作成する。
【解決手段】同じ因数が重複して含まれる合成数を法としても1と合同になる一般化されたフェルマーの小定理を導出し、これを利用する。また、因数に関する関係式を用いて、最大公約数からも秘密鍵と公開鍵の逆数の関係にある2数を計算する。 また、離散対数問題の強度の向上については、複素数、または行列の離散対数問題を利用する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号技術分野に属する。
【背景技術】
【0002】
自然数に関する離散対数問題及び素因数分解の非容易性に難読性の根拠を置く暗号技術を背景とする。
【発明の開示】
【発明が解決しようとする課題】
【0003】
離散対数問題を強化する。また、RSA暗号に関しては、鍵を高速に作成する。
【課題を解決するための手段】
【0004】
RSAに利用可能な鍵を高速に作成するには、幾つかの方法があり、特許も多く出願されている。
本発明では、以下の二つの方法を提案する。一つ目は、フェルマーの小定理から逆数を求める方法である。
一般的に知られているフェルマーの小定理による逆数計算は、RSA暗号が復号可能であることの原理そのものである。それは、P、Qが互いに相異なる2素数であるとき、P,Qのいずれとも互いに素である自然数Aにより、A(P−1)(Q−1)≡1(mod PQ)というものである。そこで、(P−1)(Q−1)を適当な2数に因数分解すれば、PQを法として互いに逆数の関係にある2数を得ることができる。P単体では、A(P−1)≡1(mod P)である。
数学的に、rを整数として、A≡B(mod P)、A≡B(mod Q)のとき、A≡B(mod PQ)である。これも、RSAが復号可能であることの原理なのだが、もし、QをPに置き換え、法の値をPとすると、フェルマーの小定理では、法の値がPだからといって、単純にA(P−1)(P−1)≡1(mod P)とはならない。たとえば、7≡1(mod 3)だが、7≡4(mod 9)であり、また、7≡7(mod 9)である。素数の整数乗を法とするケースでフェルマーの小定理と同様一般的に1と合同にするのに、単純に異なる素数の組み合わせによる合成数を法とする場合と同じように扱うことでそれを実現することはできない。
そこで、これを解決するために、nを自然数として、Pを法として必ずAを1と合同にする、一般化されたフェルマーの小定理を導出する必要がある。

と元のフェルマーの小定理に戻る。この結果は、フェルマーの小定理により、任意の整数xを用い、A(P−1)=Px+1とした上で、この式の両辺をP(n−1)乗して右辺を多項式に展開すると、定数1以外の係数が全てPを法としてゼロと合同になることによって示される。

が得られる。従って、書類「特許請求の範囲」に掲げた式
【数1】
のように一般化しても、法の値に含まれる因数の全ての組み合わせについて左辺は1と合同になることになるので、この式はRSAが復号可能であることの原理と同様の理由により、法の値と互いに素である任意の一つの数から、その逆数にあたるもう一つの数を導き出す。
【0005】
二つ目は、ユークリッドの互除法などの方法を用い、最大公約数から秘密鍵を作成する方法である。
ある2数A、Bがあるとして、AB+1について考える。このAB+1を、AB+1={(A−1)+1}{(B+1)−1}+1と書き換え、A−1とB+1の最大公約数を求めてそれをrとすると、A−1=ra、B+1=rbとしたとき、AB+1=(ra+1)(rb−1)+1≡1・−1+1≡0(mod r)となり、AB+1はrを因数に持つことになる。
本発明におけるこの鍵作成法は、この原理を利用したものである。
今、2素数P、Qを考え、ある整数をgとして、(P−1)と(Q−1)の最大公約数を求める。これをsとし、sで(P−1)を割った商をx、(Q−1)を割った商をyとする。
すると、(P−1)(Q−1)+1は、(P−1)(Q−1)+1=xys+1となる。
ここで、これらとは別に、2つの自然数j、kを用意し、j、k、x、y、s、sの6個の数字から幾つかを取り出して掛け合わせてAとし、残りも掛け合わせてBとする。x、y、sの累乗については、j、kにx、y、sが単数又は複数、因数として含まれる場合と同じにみなす。
このA、Bについて、先の方法でA−1とB+1における最大公約数rを求め、これが1の場合は再度別の組み合わせ、または別のj、kを用意してrを求めなおし、1でない、有効な値であるrによって、AB+1=jkxys+1=jk(P−1)(Q−1)+1=rtと因数分解する。
こうして求められたr、tにより、nを任意の自然数として、r≡R(mod(P−1)(Q−1))、t≡T(mod (P−1)(Q−1))を求めると、
(rt)≡(jkxys+1)≡(jk(P−1)(Q−1)+1)≡1(mod(P−1)(Q−1))となり、どんなnを選んでも、R、Tは(P−1)(Q−1)を法として逆数の関係にある2数となるので、任意に選んだnにより、自由に秘密鍵と公開鍵を作成することができる。
この方法の利点は、秘密鍵と公開鍵の互いに逆数の関係にある2数を、離散対数問題を用い、任意のj、k、nによって作成する、という点である。同じ法の値でも、j、k、nによっていくらでも異なる組み合わせを作り出すことができる。つまり、この「自由度」が、鍵の安全性を高める効果を持つ、と考えられる。
また、この方法では、Pの自然数乗といった周期を持つ行列用の鍵を容易に作成できる。
【0006】
複素数を用いる暗号は、以下の計算に理論上の根拠を置く。
Aを、a、bを整数として、A=a+biとなる複素数とする。もう一つの複素数をBとして、その値をα+βiとすると、AB=(aα−bβ)+(aβ+bα)iとなる。
複素数の時計代数は、実部、虚部それぞれに計算されるので、複素数の離散対数では、乗算のほかに、加減算が組み合わされた複雑な計算になることになる。
この性質が、複素数を用いた離散対数問題を、自然数のみによるものよりも強度の高いものとする効果をもっている、と考えられる。
複素数の場合のフェルマーの小定理は、次のようになる。
素数pを法として、a、b、|A|が全てpと互いに素であるとき、フェルマーの小定理により、A≡a+(ib)(mod p)である。i=1なので、pを4で割った余りが1のときは、A≡A(mod p)となるが、pを4で割った余りが3のときは、A≡a−ib(mod p)である。
そこで、pを周期と見ると、pを4で割った剰余の値によらず、Ap2≡A(mod p)である。ここで、|A|がpと互いに素なので、Aにはpを法として逆数が存在する。従って、A(p2−1)≡1(mod p)となる。これが、複素数の場合のフェルマーの小定理である。
ただし、2素数P、Qの合成数によりPQを法とする場合には、st≡1(mod(P−1)(Q−1))となるstが、(P−1)、(Q−1)が共に偶数であることにより4を因数に持っため、P、Qの値によらず、Ast≡A(mod PQ)となるので、従来のRSA暗号と同じように計算できる。
【0007】
一方、行列を用いる方法については、以下のような行列によるモデュラ代数方程式の解法に基づく。
最初に、下記のような、モデュラ連立方程式を考える。

この連立方程式を解くには、次のようにする。
まず、行列(この行列をAとする)とベクトルの積の形に式を書き換える。
【数2】

次に、11を法としてAと合同な整数逆行列を、フェルマーの小定理により求める。
Aの行列式の値は|A|=47で、これは法の値と互いに素である。
従って、フェルマーの小定理により、11を法として47−1と合同な整数を求めることができる。その値は、47−1≡47(11−1)−1≡47≡4(mod 11)である。従って、

となる。
この逆行列を
【数2】
の両辺に左から掛けることにより、解

が得られる。
この計算に基づき、行列のモデュラは定義される。厳密な定義は、請求項4の演算規則2である。
そして、この行列のモデュラにより、行列の離散対数問題を考えることができる。行列の離散対数問題は、自然数を一次の正方行列とみなすことが可能であることから、旧来の自然数のみに関する離散対数問題よりもさらに高度で解きにくいものであろう、ということが予想される。実際、実数には対数に対してその逆関数(一般にlogで表される)が存在するが、行列ではそれが存在しない。複素数による離散対数問題よりもさらに高度な離散対数問題が、行列の離散対数問題である。
行列における一般的なフェルマーの小定理(ただし、実施例で挙げるような特殊なケースが存在する)は、Eをn次の単位行列、行列Aを、全ての要素が整数で、pを法として逆行列が存在するn次の正方行列としたとき、いくつかのサンプルによる実験結果から、

であろう、と予想している。この式において、nが1のときは、従来の自然数に関するフェルマーの小定理に戻る。ただし、nが1のときはAそのものがpと互いに素であることが条件であるのに対し、nが2以上の場合については、Aの各要素とではなく、Aの各要素が組み合わされて作られる数値とpが互いに素であることが求められ、その条件は複雑で、また、nによって異なる。
この行列のフェルマーの小定理を利用することにより、行列のRSA暗号を作ることができる。
参考として、要素が複素数である場合については、コンピューターを使った実験結果として、法の素数Pが4を法として1と合同になるときは整数のみを要素とする場合と同じ結果になるが、法の素数Pが4を法として3と合同となるケースについては、まだ明確なことはわかっていない。また、2素数の積を法とするケースについては、これら2素数が4を法として共に1と合同になる場合と、それぞれが1、3と合同になるケースは、要素が全て実整数の場合のフェルマーの小定理と同じ結果になるが、2素数が共に4を法として3と合同になるケースについては、明確なことはわかっていない。
【発明の効果】
【0008】
暗号文の安全性を高めることができる。また、請求項1および2については、計算能力の高くないハードウェア上でも、鍵を高速に作成することができる。
【発明を実施するための最良の形態】
【0009】
携帯電話のような計算能力の弱い端末も含めた、さまざまな種類の端末が混在するネットワーク上での利用が有効である。
【実施例】
【0010】
請求項1に基づく鍵の作例を示す。
p=7(=2×3+1)、q=11(=2×5+1)とし、これらの積であるpq=77と13を公開鍵とし、これらに対する秘密鍵である13の逆数tを、次のように求める。
13−1≡13{2(3−1)(5−1)−1}≡1315≡37=t (mod (7−1)(11−1)=60)
この計算では、p−1とq−1を、2とその他の予めフェルマーテストなどの方法にかけて見つけた素数により生成する。ここでは、必須の2以外の素数として3及び5を選び、それらから7、11を2つの素数としている。これら3、5により、(7−1)(11−1)は容易に因数分解されて2×3×2×5となる。3と5を予め探しておくことにより、あとから(p−1)、(q−1)を因数分解することなく、容易に60を法として逆数を計算することができる。
実際、この鍵を用い、6を暗号化したい元の数値として実験してみると、613≡62(mod 77)であり、これを秘密鍵37を用いて復号化すると、6237≡6(mod 77)となって元の数値が復元される。
【0011】
請求項1に基づく2乗鍵の作例を示す。ここでいう2乗鍵とは、素数の2乗を周期とする暗号化を行う場合の鍵である。
一般的に、a、b、c、d、α、β、γを全て整数とし、d=αβ+γ且つa≡α(modd)、b≡β(mod d)、c≡γ(mod d)であるとき、ab+c≡αβ+γ=d≡0(mod d)より、任意の整数をxとして、ab+c=dxとなる。つまり、この関係式を利用することで、加減乗算が組み合わされた数値の因数に関する関係式を得ることができる。

を得ることができる。こうしてpともう一つの素数を作成することにより、公開鍵の法の値と、秘密鍵と公開鍵における互いに逆数同士の2数を得ることができる。
今、p=2×2+1=5、p=2×2×3+1=13、tを任意の整数としてΠ+1=2(5×13×t+5×9+13×4)+1とすると、5×9≡6(mod 13)、13×4≡2(mod 5)より、Π+1≡2×6+1(mod 13)、Π+1≡2×2+1(mod 5)となる。つまり、任意のtについて、Π+1は5と13を因数に持つようになる。

れる。97は素数なので、これにより、P=2、P=97という2素数が得られたことになる。また、このときp=2×2×97+1=389となり、公開鍵の作成に必要な法の値のための、求める一つ目の素数が得られたことになる。
もう一つの素数qは、簡単のため、q=2×3×61+1=367とする。
これらのp、qにより、p−1=2×3×5×13×97=151320、q−1=367−1=2×3×23×61=134688、(p−1)(q−1)=2×3×5×13×23×61×97となるので、p−1、q−1のいずれとも互いに素な整数3705789803をとると、

により、3705789803の逆数13082387267が計算できる。
【0012】
請求項2に基づく3乗鍵の作例を示す。
3次の正方行列では、法となる素数の3乗が周期となるため、
【0011】
で定義したところの3乗鍵が必要になる。
二つの素数P、Qを、P=7、Q=11にとり、P−1とQ−1の最大公約数sをユークリッドの互除法により求める。この場合、s=38である。また、7−1をsで割った商xは9、11−1をsで割った商yは35である。
次に、2整数j、kを、それぞれj=3620、k=8925にとり、2数A=jsとB=kxyを作り、A−1とB+1の最大公約数rを、同じくユークリッドの互除法により求めると、r=29となる。従って、jkxys+1=(P−1)(Q−1)+1=29×506753252069となる。このrと対を成すもう一つの約数をt(=506753252069)とする。
nを適当に定め、ここではn=75とすると、(P−1)(Q−1)を法として、r≡24389=R(mod 454860)、t≡326789=T(mod 454860)が得られる。この2数R、Tが、求める秘密鍵と公開鍵の2数である。
実際、この2数を用い、行列Aを

として暗号化してみると、

となり、次にtを用いて復号化すると、

となって元に戻る。
【0013】
請求項3に基づく複素数を用いた暗号化の例を示す。
先に作成したP=7、Q=11、s=13、s−1≡37(mod 60)を利用する。A=23+41iとすると、A13≡76+47i=B(mod 77)であり、B37≡23+41i(mod 77)で元に戻る。
【0014】
請求項4に基づく行列を用いた暗号化の例を示す。
ケーリー・ハミルトンの等式による漸化式を解いた結果からの計算及びコンピューターを使った実験により、2次の整数正方行列Aのm行n列目の要素をamn、法とする素数をpとして、(a11+a22)/2と{(a11−a22+4bc}(1/2)/2が共に整数で、且つ少なくともいずれか一方がpと互いに素であるとき、A(p−1)≡E(mod p)となることがわかっている。これが、先に挙げた「特殊なケース」である。
たとえば、

とすると、先に作成した鍵、PQ=77、s=13、s−1≡37(mod 60)により、

であり、次に復号化すると

となり元のAに戻る。
2乗鍵を使う場合については、先に
【0011】
において作成した値を使用した例を示す。
行列Aを

とし、これを法の値142763(=389×367)、s=3705789803を用いて暗号化すると、

となり、これを更に秘密鍵の値t=13082387267を用いて復号化すると、

となり元のAに戻る。
因みに、Aの(P−1)(Q−1)(=388×366=142008)乗を計算しても、

となり、この行列が、法の素数の1乗を周期とはしていないことがわかる。
【0015】
請求項5に基づく、複素数を用いる場合のディフィー・ヘルマン鍵共有法の作例を示す。
複素数AをA=13+20i、共有される法の値の素数PをP=23とし、受信者の秘密鍵を18、送信者の秘密鍵を21とすると、受信者の公開鍵BはB=14+2i(≡A18(mod23))、送信者の公開鍵CはC=4+7i(≡A21(mod 23))となる。
これより、共有される秘密の複素数Dは、B21≡C18≡A21×18≡2+21i=D (mod 23)となる。ただし、エルガマル暗号の場合には逆数が必要であるため、このDの値のよ

【0016】
請求項5に基づく、行列を用いる場合のディフィー・ヘルマン鍵共有法の実施例を示す。
4次の正方行列Aを

とし、法の値PをP=23、受信者の秘密鍵を38、送信者の秘密鍵を52とすると、受信者の公開鍵B、送信者の公開鍵Cは、それぞれ

となる。
これらの公開鍵を更に送受信者間で共有し、互いに相手の公開鍵を自分の秘密鍵乗することで、

となる行列Dを共有できる。エルガマル暗号においても、共通の行列の共有は同じ原理・方法による。ただし、エルガマル暗号では、共有される行列Dが、法の値に対して逆行列を求めることのできる行列であることが必要となる。
【産業上の利用可能性】
【0017】
インターネットによる通信などの産業分野において、セキュリティー効果の向上が期待できる。

【特許請求の範囲】
【請求項1】
P、Qを互いに相異なる2素数、p、p、・・・、pを互いに相異なるn個の素数、a


によりLの逆数を計算するRSA暗号用鍵作成法。
【請求項2】
P、Qを互いに相異なる2素数、gを任意の自然数とし、(P−1)(Q−1)=xysとする。sは、(P−1)と(Q−1)の最大公約数、x、yは(P−1)と(Q−1)それぞれにおけるs以外の因数である。
任意の二つの自然数j、kにより(二つ以上の場合については、それらが二組に分けられて事前に掛け合わされてj、kとなっているとみなし、また、x、y、sが、j、kのそれぞれに単数または複数、因数として含まれる場合もあるものとする)、j、k、x、y、sを任意の組み合わせで二組に分け、それぞれの組においてこれらを掛け合わせて2数a、bを得、(a−1)と(b+1)の最大公約数を求めることにより、(P−1)(Q−1)+1の因数の一つrを得、さらにrで(P−1)(Q−1)+1を割ってもう一つの(P−1)(Q−1)+1の因数tを得る。
このr、tに対し、更にnを任意の自然数として、r≡R(mod (P−1)(Q−1))、t≡T(mod (P−1)(Q−1))を計算することにより、秘密鍵と公開鍵の、累乗を作るための互いに逆数関係ある2数R、Tを得る、RSA暗号用鍵作成法。
【請求項3】
a、bを、k、α、βを全て整数として、a≡α(mod k)、b≡β(mod k)を満たす整数とし、Aを、A=a+bi(iは虚数単位)である複素数とするとき、Aはkを法としてα+βiと合同である(A≡α+βi(mod k))と定義する。この演算規則を、「演算規則1」とする。
この演算規則1に基づき、b≠0のとき、P、Qを、a、bのいずれとも互いに素な互いに相異なる2素数とし、st≡1(mod (P−1)(Q−1))となる整数s、tにより、A≡B(mod PQ)によるBを暗号文とし、B≡A(mod PQ)で復号化することにより、暗号化及び復号化を行う、s、PQを公開鍵とし、tを秘密鍵とする改良型複素数RSA暗号。
【請求項4】
Aを2次以上の正方行列とする。Aのm行n列目の要素をamn(amnは整数、純虚数、または複素数)とし、amnが純虚数又は複素数の場合には請求項3の演算規則1に基づき、整数kを法として、amn≡bmn(mod k)となるbmnをm行n列目の要素とする行列をBとする。これを、kを法としてAはBと合同である(A≡B(mod k))と定義する。この演算規則を「演算規則2」とする。
個々の要素が整数、純虚数、複素数のいずれかである正方行列Aが、互いに相異なる2素数をP、Q、任意の整数をrとして、この演算規則2に基づき、A{(Pr−1)(Qr−1)+1}≡A(mod PQ)を満たすとき、st≡1(mod (P−1)(Q−1))となるs、tにより、A≡B(mod PQ)によるBを暗号文とし、B≡A(mod PQ)により復号化を行う、s、PQを公開鍵とし、tを秘密鍵とする、改良型行列RSA暗号。
【請求項4】
送信者の秘密の整数をs、受信者の秘密の整数をt、送信者と受信者の間で共有される、虚部がゼロでない複素数または任意の2次以上の正方行列(個々の要素は、整数、純虚数、複素数のいずれか)をA、同様に送信者と受信者の間で共有される法の値(素数・合成数を問わない)をk、請求項3の演算規則1及び請求項4の演算規則2により計算される、送信者の公開鍵をB(≡A(mod k))、受信者の公開鍵をC(≡A(mod k))とし、送信者はC≡D(mod k)を、受信者はB≡D(mod k)を計算することにより、受信者と送信者の間で共通の秘密の値Dを共有するようにしたディフィー・ヘルマン鍵共有法及びエルガマル暗号。