JP2007171411A - パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム - Google Patents

パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム Download PDF

Info

Publication number
JP2007171411A
JP2007171411A JP2005367020A JP2005367020A JP2007171411A JP 2007171411 A JP2007171411 A JP 2007171411A JP 2005367020 A JP2005367020 A JP 2005367020A JP 2005367020 A JP2005367020 A JP 2005367020A JP 2007171411 A JP2007171411 A JP 2007171411A
Authority
JP
Japan
Prior art keywords
integer
prime
unit
generator
memory
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.)
Granted
Application number
JP2005367020A
Other languages
English (en)
Other versions
JP4676873B2 (ja
Inventor
Toshiyuki Miyazawa
俊之 宮澤
Tetsutaro Kobayashi
鉄太郎 小林
Satoru Oda
哲 小田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2005367020A priority Critical patent/JP4676873B2/ja
Publication of JP2007171411A publication Critical patent/JP2007171411A/ja
Application granted granted Critical
Publication of JP4676873B2 publication Critical patent/JP4676873B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】合成数Nを法とした離散対数x≡ga(mod N)においてx∈<g>となる整数xを効率的に特定する。
【解決手段】素数冪生成部111が、全てのv,w(1≦v<w≦s)に対してgcd(φ(qv),φ(qw))=2となる素数冪q(j=1,...,s)を生成し、生成元生成部112が、全てのjについて、g mod qjが、素数冪qと互いに素な0以上q未満の整数集合〔Zqj ×(下付添え字のqjはqを示す)〕の生成元となる当該整数gを生成する。そして、合成数生成部113が、素数冪生成部111で生成された全ての素数冪qの積である合成数N〔N=Πj=1 sqj〕を算出する。
【選択図】図2

Description

本発明は、離散対数の計算を利用したセキュリティ技術に関し、特に、合成数を法とした離散対数問題のパラメータを生成する技術に関する。
RSA暗号等の利用されている公開鍵暗号の多くは、量子計算機が実現化すると解読されてしまうことが知られている。一方、量子計算機が実現化されても解読が困難である公開鍵暗号として、2000年に岡本、田中、内山らが提案した公開鍵暗号システム(以下では「OTU暗号」と呼ぶ)がある(例えば、非特許文献1、特許文献1から3参照)。
OTU暗号は、長期的に安全性を保証できることを期待できる公開鍵暗号方式であるが、鍵生成の過程において、素体上の離散対数問題を複数計算する必要がある。素体上の離散対数問題とは、素数pとx,g∈Zp ×が与えられたときに、
x≡ga(mod p) …(1)
を満たす整数aを計算する問題である。なお、Z ×は、pと互いに素な0以上p未満の整数の集合を意味する。OTU暗号の場合、上記の式(1)におけるgは固定となり、さらにxはpに比べて十分小さい整数になる。
しかし、現在利用されている計算機では、上記素数pのビット長が長い(例えば、1024ビット)離散対数問題を解くことは困難であることが知られている。つまり、OTU暗号を現在の計算機で実現するのは容易ではない。そのため、OTU暗号の鍵生成に必要な素体上の離散対数問題を、小さな素数のみで割り切れる合成数Nを法とした離散対数問題に置き換える方式(未公開)が考えられる。
T. Okamoto, K. Tanaka, S. Uchiyama "Quantum Public-Key Cryptosystem", LNCS 1880, pp 147-165, Springer-Verlag, 2000 特許3615132号公報 特許3615133号公報 特許3615137号公報
しかし、OTU暗号の鍵生成に必要な素体上の離散対数問題を、小さな素数のみで割り切れる合成数Nを法とした離散対数問題に置き換えた場合、鍵生成処理を効率的に行うことが困難であるという問題点がある。以下にこの理由を述べる。
OTU暗号の鍵生成方式では、g∈ZN ×を1つ固定して、gを生成元とする巡回群<g>に含まれる十分小さな整数xを用意する必要がある(なお、Z ×は、0以上N未満であってNと互いに素な整数の集合を意味する。)。ところが、どのようなg∈ZN ×を選択しても、任意に選択した整数xがx∈<g>となる確率は低い。これは、Z ×が巡回群でないことに起因する。例えば、N=Πj=1 sqj(qは素数の冪乗である素数冪)とおいた場合、(Z ×の位数)/(<g>の位数)≧2s−1であるため、任意に選択した整数xがx∈<g>となる確率は1/2s−1以下となる。そして、選択した整数xが巡回群<g>に含まれなかった場合、整数xを選択し直さなければならない。そのため、x∈<g>となる整数xを用意する場合、この整数xの選択し直しを平均2s−1回以上行わなければならない。
また、x∈<g>であることの判定そのものに複数の離散対数の計算が必要である。以下に、この判定手順を例示する。
1.各j(j=1,...,s)に対して、
x≡gaj(mod qj) …(2)
なる整数aを求める。ただし、式(2)の上付き添え字のajは、aを示す。
2.すべてのv,w(1≦v<w≦sを満たす自然数)について
av≡aw(mod gcd(φ(qv),φ(qw))) …(3)
が成立しているか判定する。なお、gcd(α,β)は、αとβとの最大公約数を示す。また、φ(α)は、1からαまでの正整数でαと互いに素となるものの個数を示すオイラー関数である。αが素数rをf乗した素数冪α=rfである場合、φ(α)=α(1-1/r)となる。
3.そして、式(3)が成立している場合、x∈<g>であると判断し、式(3)が成立していない場合、x∈<g>ではないと判断する。
以上のように、この判定手順を1回実行するためには、式(2)の離散対数の解を求めるための演算をs回行わなければならない。そのため、OTU暗号の鍵生成に必要なx∈<g>となる整数xを1つ得るためには、平均2s−1・s回以上の離散対数計算が必要となる。よって、任意に合成数N及び整数gを選択したのでは、x∈<g>となる整数xを特定するために長い時間を要してしまう。
このような問題は、上述の鍵生成に限らず、合成数Nを法とした離散対数問題x≡ga(mod N)においてx∈<g>となる整数xを特定する処理が必要な用途に共通するものである。
本発明はこのような点に鑑みてなされたものであり、合成数Nを法とした離散対数x≡ga(mod N)においてx∈<g>となる整数xを効率的に特定することが可能な技術を提供することを目的とする。
第1の本発明では上記課題を解決するために、素数冪生成部が、素数の冪乗からなる素数冪q(j=1,...,s)の集合であって、当該素数冪qの組にそれぞれ対応するオイラー関数値の組の最大公約数が全て2となるもの〔全てのv,w(1≦v<w≦s)に対してgcd(φ(qv),φ(qw))=2〕を生成し、生成した当該複数の素数冪qを出力する。また、生成元生成部が、全てのjについて、整数gの属する法qの剰余類の代表元〔g mod qj〕が、素数冪qと互いに素な0以上q未満の整数集合〔Zqj ×(下付添え字のqjはqを示す)〕の生成元となる当該整数gを生成し、生成した当該整数gを出力する。そして、合成数生成部が、素数冪生成部で生成された全ての素数冪qの積である合成数N〔N=Πj=1 sqj〕を算出し、当該合成数Nを出力する。
ここで、全てのv,w(1≦v<w≦s)に対してgcd(φ(qv),φ(qw))=2が成立している。そして、合成数生成部が生成する合成数Nは、N=Πj=1 sqjである。この場合、Z ×の巡回部分群の位数を最大値化することができる(詳細は後述)。また、g mod qjがZqj ×の生成元となっている。この場合、当該整数gは、Z ×の巡回部分群のうち位数が最大のものの生成元となっている(詳細は後述)。すなわち、当該整数gを生成元とする巡回群<g>の位数は最大となり、(Z ×の位数)/(<g>の位数)の比率を最小化することができる。よって、任意に整数x∈ZN ×を選択した場合にx∈<g>となる確率を最大にすることができる。
また、第1の本発明において好ましくは、真数生成部が、全てのjについて素数冪qと互いに素な0以上q未満の整数集合の元である整数x〔x∈Zqj ×〕を生成し、当該整数xを出力し、補助対数生成部が、素数冪qを法としてgaj(ajはaを示す)と整数xとが合同〔x≡gaj(mod qj)〕となる整数aの集合であって、その集合に属する全ての整数の組が2を法として合同〔全てのv,w(1≦v<w≦s)に対してav≡aw(mod 2)〕となるものを生成し、当該整数aを出力する。そして、対数生成部が、全てのjについて素数冪qのオイラー関数値を法として整数aと合同な整数a〔a≡ajmod φ(qj)〕を生成し、当該整数aを出力する。第1の本発明において、これらの処理を行うことにより、x∈<g>となる(詳細は後述)。
また、第1の本発明において好ましくは、生成元生成部は、各jについて、整数gの属する法qの剰余類の代表元〔gj mod qj〕が、素数冪qと互いに素な0以上q未満の整数集合〔Zqj ×〕の生成元となる当該整数gを生成し、全てのjについて素数冪qを法として当該整数gと合同な整数g〔g≡gj(mod qj)〕を生成する。
このような手順で生成された整数gは、g mod qjがZqj ×の生成元となるという条件を満たしている。よって、上述したのと同様、任意に整数x∈ZN ×を選択した場合にx∈<g>となる確率を最大にすることができる。
また、第1の本発明において好ましくは、真数生成部は、全ての素数冪qと互いに素な整数yを生成し、整数yを偶数冪乗した値を整数xとする。この場合、x=y2=gaj mod qjを満たす整数aが存在する。また、x=y2=gajmod qjを満たす各整数aは必ず偶数となり、全てのv,w(1≦v<w≦s)に対してav≡aw(mod 2)を満たす。この場合、必ずx∈<g>となる(詳細は後述)。
また、第2の本発明では、上述の何れかのパラメータ生成装置の出力値を用いて暗号鍵を生成する。例えば、素数冪生成部が、素数の冪乗からなる素数冪q(j=1,...,s)の集合であって、当該素数冪qの組にそれぞれ対応するオイラー関数値の組の最大公約数が全て2となるものを生成し、生成元生成部が、全てのjについて、整数gの属する法qの剰余類の代表元が、素数冪qと互いに素な0以上q未満の整数集合の生成元となる当該整数gを生成する。そして、真数生成部が、全てのjについて素数冪qと互いに素な0以上q未満の整数集合の元である整数xの集合あって、その集合に属する全ての整数の組が互いに素となるものを生成し、補助対数生成部が、素数冪qを法としてga(i,j)〔上付き添え字のa(i,j)はai,jを示す〕と整数xとが合同となる整数ai,jの集合であって、その集合に属する全ての整数の組が2を法として合同となるものを生成し、当該整数ai,jを出力する。また、対数生成部が、全てのjについて素数冪qのオイラー関数値を法として整数ai,jと合同な整数aをi毎に生成し、当該整数aを出力し、関数演算部が、整数aを変数とした関数値bを生成し、当該関数値bを出力し、合成数生成部が、素数冪生成部で生成された全ての素数冪qの積である合成数Nを算出し、当該合成数Nを出力する。そして、少なくともb,...,bを含む情報を公開鍵とし、少なくともN,x1,...,x,gを含む情報を秘密鍵とする。
これにより、xi∈<g>となる整数xを効率的に特定することができ、公開鍵と暗号鍵とを効率良く生成することができる。
以上のように、本発明では、合成数Nを法とした離散対数x≡ga(mod N)においてx∈<g>となる整数xを効率的に特定することが可能となる。
以下、本発明を実施するための最良の形態を図面を参照して説明する。
〔原理〕
まず、本発明を実施するための最良の形態の原理について説明する。
[与える条件]
本形態では、離散対数問題x≡ga(mod N)を構成する合成数N
Figure 2007171411
に以下の条件を与える。
<条件1>
全てのv,w(1≦v<w≦s)に対して、gcd(φ(qv),φ(qw))=2が成立する。なお、v,w,sは自然数である。
また、離散対数問題x≡ga(mod N)を構成するgに以下の条件を与える。
<条件2>
各j(j=1,....,s)において、g mod qjがZqj ×の生成元となっている。なお、Zqj ×の下付き添え字のqjはqを示す。
また、離散対数問題x≡ga(mod N)を構成するxに以下の条件を与える。
<条件3>
(a)各j(j=1,....,s)に対して、x≡gaj(mod qj)となる整数aが存在する。なお、gajの上付き添え字ajはaを示す。
(b)全てのv,w(1≦v<w≦s)に対して、av≡aw(mod gcd(φ(qv),φ(qw)))が成立する。なお、φ(q)及びφ(q)は、それぞれ、g(mod qv)及びg(mod qw)を生成元とする巡回群の元の個数を示すことになる。
なお、<条件1><条件2><条件3>の全てが満たされている場合に限らず、<条件1><条件2>及び<条件3>の一方を満たす構成であってもよい。
特に、<条件1>が満たされている場合、<条件3>は、以下のように換言できる。
<条件3’>
(a)各j(j=1,....,s)に対してx≡gaj(mod qj)となる整数aが存在する。なお、gajの上付き添え字ajはaを示す。また、x∈Zqj ×である。
(b)全てのv,w(1≦v<w≦s)に対して、av≡aw(mod 2)が成立する。
さらに、<条件2>が満たされている場合、<条件3’>の(a)が保証される。すなわち、各jにおいてg mod qjがZqj ×の生成元である場合、当然、x∈Zqj ×に対してx≡gaj(mod qj)となる整数aが存在する。よって、この場合、<条件3’>は、以下のように換言できる。
<条件3’’>
全てのv,w(1≦v<w≦s)に対して、av≡aw(mod 2)が成立する。
[得られる効果]
次に、上記の条件を満たすことにより得られる効果について説明する。
<条件1により得られる効果>
一般に、合成数Nの素因数分解が上述の式(4)で表されるとき、g∈ZN ×を生成元とする巡回群<g>の位数は、lcm{φ(qj);1≦j≦s}以下であることが知られている(例えば、「岡本龍明、山本博資、”現代暗号”、P17、産業図書、1997年」参照)。なお、lcm{α,β,γ....}は、α,β,γ....の最小公倍数を表す。
また、φ(q)は、オイラー関数であり、qが素数rをf乗(f≧2)した素数冪qj=rfである場合、
φ(qj)=qj(1-1/r) …(5)
が成立する。ここで、qj=rfを式(5)に代入して変形すると
φ(qj)=rf(1-1/r)=rf-1(r-1) …(6)
となる。ここでrは素数であるからr≠2である場合には必ず奇数となり、r-1は必ず偶数となる。また、r=2の場合にはrf-1=2f-1となり、rf-1は必ず偶数となる。よって、式(5)は偶数となり、φ(q)は必ず2の倍数となる。そして、φ(q)は必ず2の倍数であるため、オイラー関数値φ(q)は、
φ(qj)=2rj …(7)
と表すことができる。
以上より、g∈ZN ×を生成元とする巡回群<g>の位数は、
lcm{φ(qj) ; 1≦j≦s}=2lcm{rj; 1≦j≦s} …(8)
以下となる。
ここで、上述の<条件1>が成立する場合、式(7)より、全てのv,w(1≦v<w≦s)に対して、gcd(rv, rw)=1が成立するといえる。よって、
Figure 2007171411
が成立する。
一方、上述の<条件1>が成立しない場合、式(7)より、ある自然数h(h>1)が存在し、
gcd(φ(qv),φ(qw))=2h …(10)
が成立するといえる。このとき、gcd(rv, rw)=hとなり、
Figure 2007171411
が成立する。この値は、上述の<条件1>が成立する場合の式(9)の値を下回る。
以上より、<条件1>が成立する場合、g∈ZN ×を生成元とする巡回群<g>の位数は最大値lcm{φ(qj);1≦j≦s}となり、ZN ×の巡回部分群の位数を最大値化できることが分かる。
<条件2により得られる効果>
<条件2>を満たすように整数gを選択した場合、g mod qjを生成元とする巡回群の位数はZqj ×の位数、すなわちφ(q)となる。ここで、g mod Nを生成元としたZ ×における巡回部分群の位数は、g mod qjを生成元とする巡回群の位数φ(q)の最小公倍数lcm{φ(qj);1≦j≦s}となる。これは、前述したg∈ZN ×を生成元とする巡回群<g>の位数の最大値lcm{φ(qj);1≦j≦s}と一致する。したがって、<条件2>を満たすように選択した整数gは、ZN ×内の最大巡回部分群を生成することになる。
すなわち<条件1>及び<条件2>を満たすように合成数N及び整数gを選択した場合、任意に選択した整数xに対し、x∈<g>となる確率を最大値化することができる。
<条件3により得られる効果>
<条件3>の(b)が成立する場合、x≡ga(mod N)となる整数aが存在することになる。これは、x∈<g>となることを意味する。すなわち、<条件3>や<条件3’>や<条件3’’>を満たすようにxを選択した場合、必ずx∈<g>となる。
〔第1の実施の形態〕
次に、本発明における第1の実施の形態について説明する。本形態は、上述の<条件1><条件2><条件3’’>を満たすように合成数N、整数g,aを生成していく形態である。
<ハードウェア構成>
図1は、本形態におけるパラメータ生成装置100のードウェア構成を例示したブロック図である。
図1に例示するように、この例のパラメータ生成装置100は、CPU(Central Processing Unit)11、入力部12、出力部13、補助記憶装置14、ROM(Read Only Memory)15、RAM(Random Access Memory)16及びバス17を有している。
この例のCPU11は、制御部11a、演算部11b及びレジスタ11cを有し、レジスタ11cに読み込まれた各種プログラムに従って様々な演算処理を実行する。また、入力部12は、データが入力される入力インタフェース、キーボード、マウス等であり、出力部13は、データが出力される出力インタフェース、液晶ディスプレイ等である。補助記憶装置14は、例えば、ハードディスク、MO(Magneto-Optical disc)、半導体メモリ等であり、パラメータ生成装置100としてコンピュータを機能させるためのプログラムが格納されるプログラム領域14a及び各種データが格納されるデータ領域14bを有している。また、RAM16は、SRAM (Static Random Access Memory)、DRAM (Dynamic Random Access Memory)等であり、上記のプログラムが格納されるプログラム領域16a及び各種データが格納されるデータ領域16bを有している。また、バス17は、CPU11、入力部12、出力部13、補助記憶装置14、ROM15及びRAM16を通信可能に接続する。なお、このようなハードウェアの具体例としては、パーソナルコンピュータ等を例示できる。
<プログラム構成>
パラメータ生成装置100としてコンピュータを機能させるためのプログラムは、各処理を実現するための複数のプログラムから構成される。これらのプログラムは、単一のプログラム列として記載されていてもよく、また、少なくとも一部のプログラムが別個のモジュールとしてライブラリに格納されていてもよい。また、各プログラム単体でそれぞれの機能を実現できるものでもよいし、各プログラムがさらに他のライブラリを読み出して各機能を実現するものであってもよい。
<ハードウェアとプログラムとの協働>
CPU11(図1)は、読み込まれたOS(Operating System)プログラムに従い、補助記憶装置14のプログラム領域14aに格納されている上述のプログラムをRAM16のプログラム領域16aに書き込む。同様にCPU11は、補助記憶装置14のデータ領域14bに格納されている各種データを、RAM16のデータ領域16bに書き込む。そして、このプログラムやデータが書き込まれたRAM16上のアドレスがCPU11のレジスタ11cに格納される。CPU11の制御部11aは、レジスタ11cに格納されたこれらのアドレスを順次読み出し、読み出したアドレスが示すRAM16上の領域からプログラムやデータを読み出し、そのプログラムが示す演算を演算部11aに順次実行させ、その演算結果をレジスタ11cに格納していく。
図2は、このようにCPUにプログラムが読み込まれることにより構成される第1の実施の形態のパラメータ生成装置100の機能構成を説明するためのブロック図である。
図2に示すように、本形態のパラメータ生成装置100は、離散対数問題x≡ga(mod N)を構成する合成数N及び整数gを生成する巡回群生成部110、整数xを生成する真数生成部120、整数aを求める離散対数計算部130、メモリ140、制御部150、一時メモリ160及びカウント部170を有している。
ここで、巡回群生成部110は、素数冪生成部111、生成元生成部112及び合成数生成部113を有している。なお、素数冪生成部111は、擬似乱数生成部111a、素数判定部111b、冪乗部111c及び素数冪選択部111dを有している。また、生成元生成部112は、整数生成部112aaと判定部112abとを具備する部分群生成元生成部112a、及び群生成元生成部112bを有している。また、真数生成部120は、補助整数生成部121及び冪乗部122を有し、離散対数計算部130は、補助対数生成部131及び対数生成部132を有している。さらに、メモリ140は、各種情報を格納するための領域141から149を有している。
なお、メモリ140及び一時メモリ160は、補助記憶装置14のデータ領域14b、RAM16のデータ領域16b、CPU11のレジスタ11c、その他のバッファメモリやキャッシュメモリ等の何れか、或いはこれらを併用した記憶領域に相当する。また、巡回群生成部110、真数生成部120、離散対数計算部130、制御部150及びカウント部170は、上述のようにCPU11にプログラムが読み込まれることによって構成されるものである。また、図2における矢印はデータの流れを示しているが、制御部150、一時メモリ160及びカウント部170に入出力するデータの流れの記載は省略してある。
<処理>
次に、第1の実施の形態の処理を説明する。
図3は、第1の実施の形態の処理の全体を説明するためのフローチャートである。また、図4は、図3のステップS1の詳細を説明するためのフローチャートである。また、図5は、図3のステップS2の詳細を説明するためのフローチャートである。また、図6は、図3のステップS4の詳細を説明するためのフローチャートである。以下、図2から図6を用い、本形態の処理を説明する。なお、以下に述べる各処理は、制御部150の制御のもと実行される。また、特に明示しない限り、各演算処理によって得られたデータは逐一一時メモリ160に格納され、格納された各データはその後の演算処理に利用される。
<前処理>
まず、前処理として、3つの整数s,blen1,blen2がメモリ140の領域141に格納される。なお、整数s,blen1,blen2は、例えば、図1に例示した入力部12から入力されたデータである。
<巡回群生成部110の処理>
上記のような前処理を前提とし巡回群生成部110による処理が実行される。
まず、素数冪生成部111が、メモリ140の領域141から整数s,blen1を読み込み、素数の冪乗からなるビット長blen1の素数冪q(j=1,...,s)の集合であって、当該素数冪qの組にそれぞれ対応するオイラー関数値φ(q)の組の最大公約数が全て2となるものを生成し、生成した当該複数の素数冪qを出力し、メモリ140の領域142に格納する(ステップS1)。以下、このステップS1の詳細について説明する。
[ステップS1の詳細]
まず、素数冪生成部111が、ビット長blen1の素数冪qを生成する(図4/ステップS11)。
具体的には、例えばまず、擬似乱数生成部111aが、SHA-1等の一方向性ハッシュ関数を用いて構成される、計算量理論に基づく擬似乱数生成アルゴリズム等を用い、擬似乱数を発生させる。そして、擬似乱数生成部111aは、当該擬似乱数から、ビット長blen1の素数冪q1=rfを構成する整数r及びf(f≧2)を生成し、当該整数r及びfを一時メモリ160に格納する。次に、素数判定部111bが、一時メモリ160から当該整数rを読み込み、AKS素数判定法、フェルマーテスト、Miller-Rabinテスト等の公知の素数判定手順によって、当該整数rが素数である(又はその可能性が高い)か否かを判断する。そして、当該整数rが素数でないと判断された場合には、整数rが素数である(又はその可能性が高い)と判定されるまで、擬似乱数生成部111aによって整数r及びfを生成し直す。そして、整数rが素数である(又はその可能性が高い)と判定された場合、冪乗部111cが一時メモリから最新の整数r及びfを読み込み、素数冪q1=rfを生成し、これをメモリ140の領域142に格納する。
次に、カウント部170が、変数jに2を代入し、これを一時メモリ160に格納する(ステップS12)。そして、素数冪生成部111が、一時メモリ160から変数jを読み込み、メモリ140の領域142から全ての素数冪q(1≦u≦j−1)を読み込み、全ての素数冪qに対してgcd(φ(qu),φ(qj))=2となり、ビット長がblen1の素数冪qを生成し、これをメモリ140の領域142に格納する(ステップS13)。具体的には、例えば、ステップS11と同様に擬似乱数生成部111a、素数判定部111b及び冪乗部111cによって素数冪qを生成し、素数冪選択部111dが、全ての素数冪qに対してgcd(φ(qu),φ(qj))=2であるか否かを判定する。そして、素数冪選択部111dが、全ての素数冪qに対してgcd(φ(qu),φ(qj))=2であると判定するまで、素数冪qの生成と当該判定とを繰り返し、全ての素数冪qに対してgcd(φ(qu),φ(qj))=2であると判定された素数冪qを出力し、メモリ140の領域142に格納する。なお、最大公約数を求める方法としては、例えば、ユークリッドの互助法(例えば、「A. J. Menezes, P. C. van Oorschot, S. A. Vanstone "Handbook of Applied Cryptography" pp 66., CRC Press,1997」等参照)等を用いる。
次に、制御部150が、メモリ140の領域141から整数sを読み込み、一時メモリ160から変数jを読み込み、j=sであるか否かを判定する(ステップS14)。ここで、j=sでないと判断された場合、制御部150は、カウント部170に指示を与え、カウント部170は、変数jに1を加算した値を新たな変数jし、これを一時メモリ160に格納する(ステップS15)。そして、制御部150は、処理をステップS13に戻す。一方、j=sであると判断された場合、制御部150は、ステップS1の処理を終了させる([ステップS1の詳細]の説明終わり)。
ステップS1の終了後、生成元生成部112が、メモリ140の領域142から素数冪q(j=1,...,s)を読み込み、全てのjについて、整数gの属する法qの剰余類の代表元が、素数冪qと互いに素な0以上q未満の整数集合の生成元となる〔<g mod qj>=Zqj ×〕当該整数gを生成し、生成した当該整数gを出力し、メモリ140の領域144に格納する(ステップS2)。以下、このステップS2の詳細について説明する。
[ステップS2の詳細]
まず、カウント部170が変数jに1を代入し、これを一時メモリ160に格納する(図5/ステップS21)。次に、整数生成部112aaが、擬似乱数等により任意の整数gを生成し、これを一時メモリ160に格納する(ステップS22)。次に、判定部112abが、メモリ140の領域142から素数冪q(j=1,...,s)を読み込み、さらに、一時メモリ160から整数gを読み込み、
<gj mod qj>=Zqj × …(12)
を満たすか否か(整数gの属する法qの剰余類の代表元が、素数冪qと互いに素な0以上q未満の整数集合の生成元となるか否か)を判断する(ステップS23)。この判定は、例えば、判定部112aが<gj mod qj>の位数を計算し、その値とZqj ×の位数であるφ(q)とが一致するか否かによって行う。<gjmod qj>の位数を計算する方法としては、例えば、A. J. Menezes, P. C. van Oorschot, S. A. Vanstone "Handbook of Applied Cryptografhy"., CRC Press,1997の163ページに記載された方法等を用いる。ここで、式(12)を満たさないと判断された場合、制御部150は、処理をステップS22に戻す。
一方、ステップS23において、式(12)を満たすと判断された場合、部分群生成元生成部112aは、一時メモリ160から整数gを読み込み、これを出力する(ステップS24)。出力された整数gは、メモリ140の領域143に格納される。さらに制御部150は、一時メモリ160から変数jを読み込み、メモリ140の領域141から整数sを読み込み、j=sを満たすか否かを判断する(ステップS25)。ここで、j=sを満たさないと判断した場合、制御部150は、カウント部170に指示を与え、カウント部170は、変数jに1を加えた値を新たな変数jの値とし、この変数jを一時メモリ160に格納する(ステップS26)。そして、制御部150は、処理をステップS22に戻す。
一方、制御部150は、ステップS25において、j=sを満たすと判断した場合、群生成元生成部112bに指示を与え、これを受けた群生成元生成部112bは、メモリ140の領域142から素数冪q(j=1,...,s)を読み込み、さらに、領域143から整数g(j=1,...,s)を読み込む。そして、群生成元生成部112bは、全てのjについて素数冪qを法として整数gと合同な整数g〔g≡gj (mod qj)〕を生成し(ステップS27)、当該整数gを出力する(ステップS28)。具体的には、群生成元生成部112bは、例えば、GaussやGarnarのアルゴリズムとして知られている手順により、g≡gj(mod qj)を満たす整数gを生成する(例えば、「A. J. Menezes, P. C. van Oorschot, S. A. Vanstone "Handbook of Applied Cryptography" pp 612-613., CRC Press,1997」等参照)。また、得られた整数gは、メモリ140の領域144に格納される([ステップS2の詳細]の説明終わり)。
次に、合成数生成部113が、メモリ140の領域142から全ての素数冪q(j=1,...,s)を読み込み、それらの素数冪qの積である合成数Nを以下のように算出し、当該合成数Nを出力する(ステップS3)。なお、出力された合成数Nは、メモリ140の領域145に格納される。
Figure 2007171411
以上のように生成された素数冪q(j=1,...,s)及び整数gは、前述の<条件1><条件2>を満たす。よって、整数gを生成元とする巡回部分群<g>は、Z ×において位数が最大となる巡回部分群であり、(Z ×の位数)/(<g>の位数)=2s−1となる。
<真数生成部120の処理>
次に、真数生成部120の処理を説明する。
上記のような巡回群生成部110の処理の終了後、真数生成部120が、メモリ140の領域141からblen2を読み込み、領域142から素数冪q(j=1,...,s)を読み込み、これらを用い、全てのjについて、素数冪qと互いに素な0以上q未満の整数集合の元である整数xを生成し、当該整数xを出力する(ステップS4)。なお、出力された整数xは、メモリ140の領域147に格納される。以下、このステップS4の詳細について説明する。
[ステップS4の詳細]
まず、補助整数生成部121が、メモリ140の領域141からblen2を読み込み、領域142から素数冪q(j=1,...,s)を読み込む。そして、補助整数生成部121は、全ての素数冪qと互いに素なビット長blen2/2e(eは自然数/例えばe=1)の整数yを生成し、当該整数yを出力する(図6/ステップS31)。出力された整数yは、メモリ140の領域146に格納される。次に、冪乗部122が、メモリ140の領域146から整数yを読み込み、当該整数yを偶数冪乗した整数x(x=y2e)を生成し、当該整数xを出力する(ステップS32)。出力された整数xは、メモリ140の領域147に格納される。
このステップS31,S32のように整数xを生成することにより、前述の<条件3’’>を満たすことになり、x∈<g>を満たすことになる。すなわち、前述のように本形態は<条件1>を満たすため、各j(j=1,....,s)に対してx≡gaj(mod qj)となる整数aが存在する。また、ステップS32で生成された整数xは、x=y2eを満たす。また、yは全ての素数冪qと互いに素であるから、y mod qj∈Zqj ×を満たす。そして、g(mod qj)はZqj ×の生成元である(ステップS23)からy≡gaj’(mod qj)を満たす整数a’は必ず存在する。よって、x≡gaj(mod qj)すなわちx≡y2e≡g2eaj’≡gaj(mod qj)を満たす整数a’は必ず偶数となる。そのため、全てのv,w(1≦v<w≦s)に対して、av≡aw(mod 2)が成立することになり<条件3’’>を満たす。さらに、本形態では<条件2>も満たしているのであるから、x∈<g>を満たすといえる([ステップS4の詳細]の説明終わり)。
<離散対数計算部130の処理>
次に、離散対数計算部130の処理を説明する。
まず、補助対数生成部131が、メモリ140の領域142から素数冪q(j=1,...,s)を読み込み、領域144から整数gを読み込み、領域147から整数xを読み込む。そして、補助対数生成部131は、各jについて
x≡gaj (mod qj) …(14)
を満たす整数aを算出する(ステップS5)。なお、本形態では、上述のステップS31,S32のように整数xを選択しているため<条件3’’>を満たしており、算出された各整数aの全ての組は、2を法として合同〔全てのv,w(1≦v<w≦s)に対して、av≡aw(mod 2)〕となっている。また、式(14)を満たす整数aの算出は、例えば、数体ふるい法やPollardのρ法等(例えば、「岡本龍明,山本博資著,“現代暗号”,第2刷,ISBN4-7828-5353-X- C3355,p21」等参照)を用いる。これによって、少ない演算量で整数aを求めることが可能となる。算出された整数a(j=1,...,s)は、補助対数生成部131から出力され、メモリ140の領域148に格納される。
次に、対数生成部132が、メモリ140の領域148から各整数a(j=1,...,s)を読み込み、全てのjについて
a≡aj(mod φ(qj)) …(15)
を満たす整数aを算出し、当該整数aを出力する(ステップS6)。そして、出力された整数aは、メモリ140の領域149に格納される。なお、この整数aの算出は、例えば、GaussやGarnarのアルゴリズムとして知られている手順によって行う(例えば、「A. J. Menezes, P. C. van Oorschot, S. A. Vanstone "Handbook of Applied Cryptography" pp 612-613., CRC Press,1997」等参照)。
<本形態の特徴>
以上により、素数冪qの積である合成数Nを法とした離散対数問題x≡ga(mod N)を構成する整数x,g、合成数N及び解である整数aを生成することができた。そして、上述のように合成数Nは<条件1>を満たし、整数gは<条件2>を満たし、さらに解aは<条件3’’>を満たすものとなった。そして、x∈<g>であるか否かの判定を行うことなく、簡単な計算によってx∈<g>を満たすxを生成することが可能となった。そして、このように生成された整数x,g、合成数N及び解である整数aは、必要に応じてメモリ140から読み出され、例えば、OTU暗号の暗号鍵生成等に利用することができる。
〔第2の実施の形態〕
次に、本発明の第2の実施の形態について説明する。本形態は、Zqj ×の生成元の偶数冪乗の整数g’を生成する形態である。なお、以下では、Zqj ×の生成元の2乗となる整数g’を生成する例について説明する。また、以下では、第1の実施の形態との相違点を中心に説明し、第1の実施の形態と共通する部分については説明を省略する。
<構成>
図7は、第2の実施の形態のパラメータ生成装置200の機能構成を例示したブロック図である。なお、本形態のパラメータ生成装置200も第1の実施の形態と同様、所定のプログラムがコンピュータに読み込まれることによって構成されるものである。また、図7において、第1の実施の形態と共通する部分については図2と同じ符号を付した。
図7に示すように、本形態のパラメータ生成装置200は、離散対数問題x≡g'a(mod N)を構成する合成数N及び整数g’を生成する巡回群生成部210、整数xを生成する真数生成部220、整数aを求める離散対数計算部230、メモリ240、制御部150、一時メモリ160及びカウント部170を有している。ここで、巡回群生成部210は、素数冪生成部111、生成元生成部212及び合成数生成部113を有している。なお、素数冪生成部111の構成は第1の実施の形態と同じである。また、生成元生成部212は、整数生成部112aaと判定部112abとを具備する部分群生成元生成部112a、群生成元生成部212b及び冪乗部212dを有している。また、離散対数計算部230は、補助対数生成部231及び対数生成部132を有している。さらに、メモリ240は、各種情報を格納するための領域141,142,145,148,149,243,244,247を有している。また、図7における矢印はデータの流れを示しているが、制御部150、一時メモリ160及びカウント部170に入出力するデータの流れの記載は省略してある。
<処理>
次に、第2の実施の形態の処理について説明する。図8は、第2の実施の形態の処理を説明するためのフローチャートである。また、図9は、図8におけるステップS52の処理の詳細を説明するためのフローチャートである。以下、図7から図9を用いて本形態の処理を説明する。
<前処理>
第1の実施の形態と同様、3つの整数s,blen1,blen2をメモリ240の領域141に格納する。
<巡回群生成部210の処理>
上記のような前処理を前提とし巡回群生成部210による処理が実行される。
まず、素数冪生成部111が、メモリ240の領域141から整数s,blen1を読み込み、素数の冪乗からなるビット長blen1の素数冪q(j=1,...,s)の集合であって、当該素数冪qの組にそれぞれ対応するオイラー関数値φ(q)の組の最大公約数が全て2となるものを生成し、生成した当該複数の素数冪qを出力し、メモリ240の領域142に格納する(ステップS51)。この処理の内容は、第1の実施の形態のステップS1と同じである。
次に、生成元生成部212が、メモリ240の領域142から素数冪q(j=1,...,s)を読み込み、全てのjについて整数g’の属する法qの剰余類の代表元が、素数冪qと互いに素な0以上q未満の整数集合の生成元の偶数冪乗(この例では2乗)となる整数g’〔g'=g2,<g mod qj>=Zqj ×〕を生成し、生成した当該整数g’を出力し、メモリ240の領域244に格納する(ステップS52)。以下、このステップS52の詳細について説明する。
[ステップS52の詳細]
まず、カウント部170が変数jに1を代入し、これを一時メモリ160に格納する(図9/ステップS61)。次に、整数生成部112aaが、擬似乱数等により任意の整数gを生成し、これを一時メモリ160に格納する(ステップS62)。次に、判定部112abが、メモリ240の領域142から素数冪q(j=1,...,s)を読み込み、さらに、一時メモリ160から整数gを読み込み、
<gj mod qj>=Zqj × …(16)
を満たすか否か(整数gの属する法qの剰余類の代表元が、素数冪qと互いに素な0以上q未満の整数集合の生成元となるか否か)を判断する(ステップS63)。この判定は、例えば、判定部112aが<gj mod qj>の位数を計算し、その値とZqj ×の位数であるφ(q)とが一致するか否かによって行う。<gjmod qj>の位数を計算する方法としては、例えば、A. J. Menezes, P. C. van Oorschot, S. A. Vanstone "Handbook of Applied Cryptografhy"., CRC Press,1997の163ページに記載された方法等を用いる。ここで、式(16)を満たさないと判断された場合、制御部150は、処理をステップS62に戻す。
一方、ステップS63において、式(16)を満たすと判断された場合、冪乗部212dは、一時メモリ160から整数gを読み込み、これを偶数冪乗(この例では2乗)した整数g’(gj’=gj 2)を算出し(ステップS64)、この整数g’を出力する(ステップS65)。出力された整数g’は、メモリ240の領域243に格納される。さらに制御部150は、一時メモリ160から変数jを読み込み、メモリ240の領域141から整数sを読み込み、j=sを満たすか否かを判断する(ステップS66)。ここで、j=sを満たさないと判断した場合、制御部150は、カウント部170に指示を与え、カウント部170は、変数jに1を加えた値を新たな変数jの値とし、この変数jを一時メモリ160に格納する(ステップS67)。そして、制御部150は、処理をステップS62に戻す。
一方、制御部150は、ステップS66において、j=sを満たすと判断した場合、群生成元生成部212bに指示を与え、これを受けた群生成元生成部212bは、メモリ240の領域142から素数冪q(j=1,...,s)を読み込み、さらに、領域243から整数g’(j=1,...,s)を読み込む。そして、群生成元生成部212bは、全てのjについて素数冪qを法として整数g’と合同な整数g’〔g’≡gj’(mod qj)〕を生成し(ステップS68)、当該整数g’を出力する(ステップS69)。具体的には、群生成元生成部212bは、例えば、GaussやGarnarのアルゴリズムとして知られている手順により、g’≡gj’ (mod qj)を満たす整数g’を生成する。また、得られた整数g’は、メモリ240の領域244に格納される([ステップS52の詳細]の説明終わり)。
次に、合成数生成部113が、メモリ240の領域142から全ての素数冪q(j=1,...,s)を読み込み、それらの素数冪qの積である合成数Nを算出し、当該合成数Nを出力する(ステップS53)。なお、出力された合成数Nは、メモリ240の領域145に格納される。
<真数生成部220の処理>
次に、真数生成部220の処理を説明する。上記のような巡回群生成部210の処理の終了後、真数生成部220が、メモリ240の領域142から素数冪q(j=1,...,s)を読み込み、全てのjについて素数冪qと互いに素な0以上q未満の整数集合の元である整数x(x∈Zqj×)を生成し、当該整数xを出力する(ステップS54)。具体的には、真数生成部220は、例えば、擬似乱数等を用いて0以上q未満の整数xを生成し、それが全ての素数冪qと互いに素であるかを判定する処理を繰り返し、全ての素数冪qと互いに素であると判定された整数xを出力する。なお、出力された整数xは、メモリ240の領域247に格納される。
<離散対数計算部230の処理>
次に、離散対数計算部230の処理を説明する。
まず、補助対数生成部231が、メモリ240の領域142から素数冪q(j=1,...,s)を読み込み、領域244から整数g’を読み込み、領域247から整数xを読み込む。そして、補助対数生成部231は、各jについて
x≡g'aj (mod qj) …(17)
を満たす整数a(j=1,...,s)を算出し、これを出力する(ステップS55)。なお、式(17)を満たす整数aの算出は、例えば、数体ふるい法やPollardのρ法等を用いる。算出された整数a(j=1,...,s)は、補助対数生成部231から出力され、メモリ240の領域148に格納される。
次に、対数生成部132が、メモリ240の領域148から各整数a(j=1,...,s)を読み込み、全てのjについて
a≡aj(mod φ(qj)) …(18)
を満たす整数aを算出し、当該整数aを出力する(ステップS56)。そして、出力された整数aは、メモリ240の領域149に格納される。なお、この整数aの算出は、例えば、GaussやGarnarのアルゴリズムとして知られている手順によって行う。
<本形態の特徴>
前述した<条件3>におけるオイラー関数値φ(q),φ(q)は、それぞれ、g(mod qv)及びg(mod qw)を生成元とした巡回群の位数を示す。しかし、g’=g2とした本形態のg’(mod qv)及びg’(mod qw) をそれぞれ生成元とした巡回群の位数は、それぞれφ(qv)/2,φ(qw)/2となる。よって、本形態の場合、x∈<g’>となるためには<条件3>の代わりに、以下の<条件3’’’>を満たす必要がある。なお、<条件3>の(b)は「(b)全てのv,w(1≦v<w≦s)に対して、av≡aw(mod 1)が成立する。」に置き換わるが、av,awは整数であるため、この条件は不要となる。
<条件3’’’>
(a)各j(j=1,....,s)に対して、x≡g'aj(mod qj)となる整数aが存在する。
ここで、x∈Zqj ×であるから、高い確率(この例では50%程度)でx≡g'aj(mod qj)となる整数aが存在し、上記の(a)の条件を満たす。また、上記の(b)は当然に満たされる。そのため、この例においてjを固定した場合x∈<g’>となる確率は50%程度となる。また、この場合、全てのjでx∈<g’>となる確率は、1/2×1/2×…×1/2=1/2程度となり、任意に選択した整数xに対し、x∈<g’>となる確率を最大値/2程度〔任意にg’を選択した場合(Z ×の位数)/(<g’>の位数)≧2s−1であるため、x,g’を任意に選択した場合、x’∈<g’>となる確率は1/2s−1以下となる〕にすることができる。
よって、最終的にx∈<g’>であるか否かを判定し、x∈<g’>でない場合にステップS54以降の処理をやり直す構成としても比較的少ない演算量でx∈<g’>を満たす整数xを選択することができる。
なお、ステップS51の代わりに、全てのjについてgcd(φ(qu),φ(qj))=2e〔eは自然数,∀u(1≦u≦j-1)〕となる素数冪qを生成し、ステップS52の代わりに、
全てのjについて、整数g’の属する法qの剰余類の代表元が、素数冪qと互いに素な0以上q未満の整数集合の生成元gの2e(eは自然数)乗となる整数g ’=g2eを生成することとしてもよい。
〔第3の実施の形態〕
次に、本発明の第3の実施の形態について説明する。本形態は、前述の<条件1><条件2>を満たすように合成数N、整数gを生成し、任意に選択された整数xがx∈<g>となる確率を最大値化する形態である。以下では、第1の実施の形態との相違点を中心に説明し、第1の実施の形態と共通する部分については説明を省略する。
<構成>
図10は、第3の実施の形態のパラメータ生成装置300の機能構成を例示したブロック図である。なお、本形態のパラメータ生成装置300も第1の実施の形態と同様、所定のプログラムがコンピュータに読み込まれることによって構成されるものである。また、図9において、第1の実施の形態と共通する部分については図2と同じ符号を付した。
図10に示すように、本形態のパラメータ生成装置300は、離散対数問題x≡g'a(mod N)を構成する合成数N及び整数g’を生成する巡回群生成部110、整数xを生成する真数生成部320、整数aを求める離散対数計算部130、メモリ140、制御部150、一時メモリ160及びカウント部170を有している。
ここで、巡回群生成部110の構成は第1の実施の形態と同じである。また、離散対数計算部330は、補助対数生成部131、対数生成部132及び判定部333を有している。さらに、メモリ140は、各種情報を格納するための領域141〜145,148,149,347を有している。また、図9における矢印はデータの流れを示しているが、制御部150、一時メモリ160及びカウント部170に入出力するデータの流れの記載は省略してある。
<処理>
次に、第3の実施の形態の処理について説明する。図11は、第3の実施の形態の処理を説明するためのフローチャートである。以下、図10及び図11を用いて本形態の処理を説明する。
<前処理>
第1の実施の形態と同様、3つの整数s,blen1,blen2をメモリ340の領域141に格納する。
<巡回群生成部110の処理>
巡回群生成部110は、第1の実施の形態と同じ手順(図3/ステップS1〜S3)によってメモリ340の領域141に格納された整数s,blen1を用い、素数冪q、整数g(j=1,...,s)、整数g、合成数Nを生成し、これらをメモリ340の領域142,143,144,145に格納する(ステップS81〜S83)。
<真数生成部320の処理>
上記のような巡回群生成部110の処理の終了後、真数生成部320が、メモリ240の領域142から素数冪q(j=1,...,s)を読み込み、全てのjについて素数冪qと互いに素な0以上q未満の整数集合の元である整数x(x∈Zqj×)を生成し、当該整数xを出力する(ステップS84)。なお、出力された整数xは、メモリ340の領域347に格納される。
<離散対数計算部330の処理>
上記のような真数生成部320の処理の終了後、離散対数計算部330の処理が開始される。
まず、補助対数生成部131が、メモリ340の領域142から素数冪q(j=1,...,s)を読み込み、領域144から整数gを読み込み、領域347から整数xを読み込む。そして、補助対数生成部131は、各jについて
x≡gaj (mod qj) …(19)
を満たす整数a(j=1,...,s)を算出し、これを出力する(ステップS85)。なお、式(19)を満たす整数aの算出は、例えば、数体ふるい法やPollardのρ法等を用いる。また、出力された整数aは、メモリ340の領域148に格納される。
次に、判定部333が、メモリ340の領域142から素数冪qを、領域148から整数aを、それぞれ読み込み、すべてのv,w(1≦v<w≦s)について
av≡aw (mod gcd(φ(qv),φ(qw)) …(20)
が成立するか否かを判断する(ステップS86)。なお、ステップS81でgcd(φ(qv),φ(qw))=2であることが保証されているため、式(20)の代わりに
av≡aw (mod 2) …(20)'
が成立するか否かを判断することとしてもよい。この場合、gcd(φ(qv),φ(qw))を求めるために、メモリ340の領域142からの素数冪qの読み込み、オイラー関数の演算、及び最大公約数の算出処理を省略することができる。その結果、以下に示すステップS84〜S86の繰り返し演算処理を効率化できる。
ここで、すべてのv,w(1≦v<w≦s)について式(20)又は(20)'が成立しないと判断された場合、制御部150は、処理をステップS84に戻す(その結果、ステップS84〜S86の処理が繰り返される)。一方、すべてのv,w(1≦v<w≦s)について式(20) 又は(20)'が成立すると判断された場合、制御部150は、対数生成部132に指示を与え、これを受けた対数生成部132は、メモリ340の領域148から各整数a(j=1,...,s)を読み込み、全てのjについて
a≡aj(mod φ(qj)) …(21)
を満たす整数aを算出し、当該整数aを出力する(ステップS87)。そして、出力された整数aは、メモリ340の領域149に格納される。なお、この整数aの算出は、例えば、GaussやGarnarのアルゴリズムとして知られている手順によって行う。
<本形態の特徴>
本形態の構成の場合、前述の<条件1>及び<条件2>を満たす。そして、<条件1>及び<条件2>を満たすように合成数N及び整数gを選択した場合、任意に選択した整数xに対し、x∈<g>となる確率を最大値化することができる。よって、ステップS84〜S86の繰り返し回数を従来構成よりも少なくすることができる。
〔第4の実施の形態〕
次に、本発明の第4の実施の形態について説明する。本形態は、第1の実施の形態の応用例であり、第1の実施の形態の構成をOTU暗号の暗号鍵生成に適用した形態である。以下では、第1の実施の形態との相違点を中心に説明し、第1の実施の形態と共通する事項については説明を省略する。
まず、OTU暗号の暗号鍵について説明する。
OTU暗号の公開鍵PK=(b,...,b,k)、秘密鍵SK=(N,d,x,...,x,g)には次の条件がある。
(a)各i(i=1,...,n)に対して、gbi-d≡xi(mod N)を満たす。なお、上付き添え字にあるbiはbを示す。
(b)集合{1,2,...,n}の部分集合であり、要素数がk個(kは整数)である任意の集合Sに対し、Πj∈S xj<N が成立している。
(c)x,...,xは互いに素である。
上記の条件(b)は、各xのビット長はNビットに比べて非常に短い必要があることを意味している。少なくとも、|xj|≦|N|/k(ただし|*|は*のビット長を示す。)でなくてはならない。
本形態では、4つの整数s,blen1,k,nを入力とし、第1の実施の形態の構成を利用し、OTU暗号の公開鍵PK=(b,...,b,k)及び秘密鍵SK=(N,d,x,...,x,g)を生成する。ただし、各パラメータは次の性質を満たしている。
・Nは整数であり、ビット長がblen1である素数冪q(j=1,...,s)の積である。
・dはランダムに選ばれた整数である。
・gは、全てのj(j=1,...,s)において、Zqj ×の生成元となる。
・各xは、ある整数の偶数冪乗であり、xj∈<g>を満たす。また、各xのビット長は
Figure 2007171411
・各aは、xj≡gaj(mod N)を満たす整数である。
<構成>
図12は、第4の実施の形態の暗号鍵生成装置400の機能構成を例示したブロック図である。なお、図12において第1の実施の形態と共通する部分については図2と同じ符号を付した。また、本形態の暗号鍵生成装置400は、第1の実施の形態と同様、公知のコンピュータに所定のプログラムが読み込まれることによって構成されるものである。
図12に例示するように、本形態の暗号鍵生成装置400は、巡回群生成部110、制御部150、一時メモリ160、カウント部170、乗算部411、乱数生成部412、除算部413、真数生成部420、離散対数計算部430、メモリ440、加算部450及び出力部460を有している。なお、乱数生成部412は、正の整数αを入力としてαビットの擬似乱数を生成し出力する。また、真数生成部420は、補助整数生成部421、冪乗部422及び判定部423を有している。また、離散対数計算部430は、補助対数生成部431及び対数生成部432を有している。また、図12における矢印はデータの流れを示しているが、制御部150、一時メモリ160及びカウント部170に入出力するデータの流れの記載は省略してある。
<処理>
次に、第4の実施の形態の暗号鍵生成処理を説明する。
図13は、第4の実施の形態の暗号鍵生成処理の全体を説明するためのフローチャートである。また、図14は、図13のステップS97の詳細を説明するためのフローチャートである。以下、図12から図14を用いて、本形態の暗号鍵生成処理を説明する。
<前処理>
まず、前処理として、4つの整数s,blen1,k,n(n≧1)がメモリ440の領域441に格納される。なお、整数s,blen1,k,nは、例えば、図1に例示した入力部12から入力されたデータである。
<巡回群生成部110の処理>
上記のような前処理を前提として、巡回群生成部110は、第1の実施の形態と同じ手順(図3/ステップS1〜S3)によってメモリ440の領域441に格納された整数s,blen1を用い、素数冪q、整数g(j=1,...,s)、整数g、合成数Nを生成し、これらをメモリ440の領域142,143,144,145に格納する(ステップS91〜S93)。
<乗算部411の処理>
次に、乗算部411が、メモリ440の領域441から整数s,blen1を読み込み、blen1・sを算出し、その演算結果blen1・sを出力する(ステップS94)。出力された演算結果s・blen1は、メモリ440の領域442に格納される。
<乱数生成部412の処理>
次に、乱数生成部412が、メモリ440の領域442からblen1・sを読み込み、blen1・sビットの(擬似)乱数dを発生して出力し(ステップS95)、これをメモリ440の領域443に格納する。なお、乱数dの生成には、例えば、前述の擬似乱数生成アルゴリズム等を用いる。
<除算部413の処理>
次に、除算部413が、メモリ440の領域442からblen1・sを読み込み、領域441から整数kを読み込む。そして、除算部413は、
Figure 2007171411
の演算を行い、その演算結果blen2を出力する(ステップS96)。出力された演算結果blen2は、メモリ440の領域444に格納される。
<真数生成部420の処理>
次に、真数生成部420が、メモリ440の領域141からblen2を読み込み、領域142から素数冪q(j=1,...,s)を読み込み、これらを用い、全ての素数冪qと互いに素でありビット長が(blen2)/2e(eは自然数)以下である整数y(i=1,...,n)を2e冪乗した整数x(xi=yi 2e)の集合であって、その集合に属する全ての整数の組が互いに素となるものを生成し、当該整数xを出力する(ステップS97)。そして、出力された各整数x(i=1,...,n)は、メモリ440の領域446に格納される。以下、このステップS97の詳細について説明する。
[ステップS97の詳細]
まず、補助整数生成部421が、メモリ440の領域441からblen2を読み込み、領域142から素数冪q(j=1,...,s)を読み込む。そして、補助整数生成部421は、全ての素数冪qと互いに素なビット長blen2/2e(eは自然数/例えばe=1)の整数yを生成し、当該整数yを出力する(図14/ステップS111)。出力された整数yはメモリ440の領域445に格納される。
次に、冪乗部422が、メモリ440の領域445から整数yを読み込み、整数yを偶数冪乗した整数x(x=y 2e)を生成し、当該整数xを出力する(ステップS112)。出力された整数xはメモリ440の領域446に格納される。
次に、制御部150が、メモリ440の領域441から整数nを読み込み、整数nが1であるか否かを判断する(ステップS113)。ここで、n=1と判断された場合、制御部150は、ステップS97の処理を終了する。一方、n=1でないと判断された場合、制御部150は、カウント部170に指示を与え、これを受けたカウント部170は、変数iに2を代入し、この変数iを一時メモリ160に格納する(ステップS114)。
そして、補助整数生成部421が、メモリ440の領域441からblen2を読み込み、領域142から素数冪q(j=1,...,s)を読み込み、一時メモリ160から変数iを読み込み、全ての素数冪qと互いに素なビット長blen2/2e(eは自然数/例えばe=1)の整数yを生成し、当該整数yを出力する(図14/ステップS115)。出力された整数yはメモリ440の領域445に格納される。さらに、冪乗部422が、メモリ440の領域445から整数yを読み込み、整数yを偶数冪乗した整数x(x=y 2e)を生成し、当該整数xを出力する(ステップS116)。出力された整数xはメモリ440の領域446に格納される。
次に、判定部423が、メモリ440の領域446から、整数x,...,xi−1,xを読み込み、整数xが、その他全ての整数x,...,xi−1と互いに素であるか否かを判断する(ステップS117)。ここで、整数xが、何れかの整数x,...,xi−1と互いに素でないと判断された場合、制御部150は、メモリ440の領域445,446の整数y,xを削除し、処理をステップS115に戻す。一方、整数xが、その他全ての整数x,...,xi−1と互いに素であると判断された場合、制御部150は、一時メモリ160から変数iを読み込み、メモリ440の領域441から整数nを読み込み、i=nであるか否かを判断する(ステップS118)。
ここで、i=nでないと判断された場合、制御部150は、カウント部170に指示を与え、これを受けたカウント部170は、一時メモリ160に格納されている変数iの値をi+1の値によって更新し、新たな変数iを一時メモリ160に格納する(ステップS119)。この場合、さらに制御部150は、処理をステップS115に戻す。
一方、ステップS118の判断で、i=nであると判断された場合、制御部150は、ステップS97の処理を終了する([ステップS97の詳細]の説明終わり)。
<離散対数計算部430の処理>
次に、補助対数生成部431が、メモリ440の領域142から素数冪q(j=1,...,s)を読み込み、領域144から整数gを読み込み、領域147から整数xを読み込む。そして、補助対数生成部431は、各i(i=1,...,n),j(j=1,...,s)について、
xi≡ga(i,j)(mod qj) …(23)
を満たす整数ai,jを算出する(ステップS98)。なお、式(23)の上付き添え字のa(i,j)は、ai,jを意味する。また、式(23)を満たす整数ai,jの算出は、例えば、数体ふるい法やPollardのρ法等を用いる。また、本形態では、上述のステップS97のように整数xを選択しているため<条件3’’>を満たしており、算出された各整数ai,jの全ての組は、2を法として合同となっている。算出された各整数ai,j(i=1,...,n,j=1,...,s)は、補助対数生成部431から出力され、メモリ440の領域447に格納される。
次に、対数生成部432が、メモリ440の領域447から各整数ai,j(i=1,...,n,j=1,...,s)を読み込み、全てのjについて
ai≡ai,j(mod φ(qj)) …(24)
を満たす整数aをi毎に算出し、当該整数a(i=1,...,n)を出力する(ステップS99)。そして、出力された整数aは、メモリ440の領域449に格納される。なお、これらの整数aの算出は、例えば、GaussやGarnarのアルゴリズムとして知られている手順によって行う。
<加算部450の処理>
次に、加算部450(「関数演算部」に相当)が、メモリ440の領域443から乱数dを読み込み、領域448から整数a(i=1,...,n)を読み込み、整数aと乱数dとを加算した加算値(「関数値」に相当)b=a+dを生成し、当該加算値b(i=1,...,n)を出力する(ステップS100)。出力された加算値b(i=1,...,n)は、メモリ440の領域449に格納される。
<出力部460の処理>
その後、出力部460が、メモリ440の領域449から加算値b,...,bを読み込み、領域441から整数kを読み込み、PK=(b,...,b,k)を公開鍵として出力する。さらに、出力部460は、メモリ440の領域145から合成数Nを読み込み、領域443から乱数dを読み込み、領域446から整数x1,...,xを読み込み、領域144から整数gを読み込み、SK=(N,d,x1,...,x,g)を秘密鍵として出力する。
〔第5の実施の形態〕
次に、本発明における第5の実施の形態について説明する。本形態は、第2の実施の形態の応用例であり、第2の実施の形態の構成をOTU暗号の暗号鍵生成に適用した形態である。以下では、第1,2,4の実施の形態との相違点を中心に説明し、第1,2,4の実施の形態と共通する事項については説明を省略する。
<構成>
図15は、第5の実施の形態の暗号鍵生成装置500の機能構成を例示したブロック図である。なお、図15において第1,4の実施の形態と共通する部分については図2,12と同じ符号を付した。また、本形態の暗号鍵生成装置500は、第1の実施の形態と同様、公知のコンピュータに所定のプログラムが読み込まれることによって構成されるものである。
図15に例示するように、本形態の暗号鍵生成装置500は、巡回群生成部210、制御部150、一時メモリ160、カウント部170、乗算部411、乱数生成部412、除算部413、真数生成部520、離散対数計算部430、メモリ440、加算部450及び出力部460を有している。なお、真数生成部520は、整数生成部521及び判定部423を有している。また、離散対数計算部430は、補助対数生成部431及び対数生成部432を有している。また、図15における矢印はデータの流れを示しているが、制御部150、一時メモリ160及びカウント部170に入出力するデータの流れの記載は省略してある。
<処理>
次に、第5の実施の形態の暗号鍵生成処理を説明する。
図16は、第5の実施の形態の暗号鍵生成処理の全体を説明するためのフローチャートである。以下、図15及び図16を用いて、本形態の暗号鍵生成処理を説明する。
<前処理>
まず、前処理として、4つの整数s,blen1,k,n(n≧1)がメモリ440の領域441に格納される。
<巡回群生成部210の処理>
上記のような前処理を前提として、巡回群生成部210は、第2の実施の形態と同じ手順(図8/ステップS51〜S53)によってメモリ440の領域441に格納された整数s,blen1を用い、素数冪q、整数g’(j=1,...,s)、整数g’、合成数Nを生成し、これらをメモリ440の領域142,143,144,145に格納する(ステップS121〜S123)。
<乗算部411・乱数生成部412・除算部413の処理>
次に、乗算部411・乱数生成部412・除算部413が、第4の実施の形態と同じ手順(図13/ステップS94〜S96)により、blen1・s,d,blen2を生成し、これらをメモリ440の領域442,443,444にそれぞれ格納する(ステップS124〜S126)。
<真数生成部520の処理>
次に、真数生成部520が、メモリ440の領域141からblen2を読み込み、ビット長がblen2以下の整数xの集合であって、その集合に属する全ての整数の組が互いに素となるものを生成し、当該整数xを出力する(ステップS127)。
出力された各整数x(i=1,...,n)は、メモリ440の領域446に格納される。具体的には、例えば、整数生成部521が、メモリ440の領域141からblen2を読み込み、blen2以下の整数x(i=1,...,n)を生成し、判定部423がそれらが互いに素であるかを判定し、互いに素な整数x(i=1,...,n)を生成するといった、前述のステップS97に類似した手順によって各整数xを生成する。そして、x∈<g’>であるか否かの判定処理を追加し、x∈<g’>でない場合、各整数xを生成し直す構成とする。
<離散対数計算部430・加算部450・出力部460の処理>
その後、離散対数計算部430・加算部450・出力部460によって、第4の実施の形態と同じ処理(図13/ステップS98からS101)を実行し、最終的に、出力部460が、公開鍵PK=(b,...,b,k)と秘密鍵SK=(N,d,x1,...,x,g)を出力する。
〔第6の実施の形態〕
次に、本発明における第6の実施の形態について説明する。本形態は、第3の実施の形態の応用例であり、第3の実施の形態の構成をOTU暗号の暗号鍵生成に適用した形態である。以下では、第1,3,4の実施の形態との相違点を中心に説明し、第1,3,4の実施の形態と共通する事項については説明を省略する。
<構成>
図17は、第6の実施の形態の暗号鍵生成装置600の機能構成を例示したブロック図である。なお、図17において第1,4の実施の形態と共通する部分については図2,図12と同じ符号を付した。また、本形態の暗号鍵生成装置600は、第1の実施の形態と同様、公知のコンピュータに所定のプログラムが読み込まれることによって構成されるものである。
図17に例示するように、本形態の暗号鍵生成装置600は、巡回群生成部110、制御部150、一時メモリ160、カウント部170、乗算部411、乱数生成部412、除算部413、真数生成部620、離散対数計算部630、メモリ440、加算部450及び出力部460を有している。なお、離散対数計算部630は、補助対数生成部431、対数生成部432及び判定部633を有している。また、図17における矢印はデータの流れを示しているが、制御部150、一時メモリ160及びカウント部170に入出力するデータの流れの記載は省略してある。
<処理>
次に、第6の実施の形態の暗号鍵生成処理を説明する。
図18は、第6の実施の形態の暗号鍵生成処理の全体を説明するためのフローチャートである。以下、図17及び図18を用いて、本形態の暗号鍵生成処理を説明する。
<前処理>
まず、前処理として、4つの整数s,blen1,k,n(n≧1)がメモリ440の領域441に格納される。
<巡回群生成部110・乗算部411・乱数生成部412・除算部413の処理>
上記のような前処理を前提として、第4の形態のステップS91〜S96(図13)と同じ処理を実行し、素数冪q、整数g(j=1,...,s)、整数g、合成数N、blen1・s,乱数d,blen2を生成し、これらをメモリ440の領域142,143,144,145,442,443,444に格納する(ステップS141〜S146)。
<真数生成部620の処理>
次に、真数生成部620が、メモリ440の領域141からblen2を読み込み、ビット長がblen2以下の整数xi〔i=(1,...,n)〕の集合であって、その集合に属する全ての整数の組が互いに素となるものを生成し、当該整数xを出力する(ステップS147)。出力された各整数x(i=1,...,n)は、メモリ440の領域446に格納される。
<離散対数計算部630の処理>
その後、離散対数計算部630の処理が開始される。
まず、補助対数生成部431が、メモリ440の領域142から素数冪q(j=1,...,s)を読み込み、領域144から整数gを読み込み、領域447から整数x(i=1,...,n)を読み込む。そして、補助対数生成部431は、各jについて
xi≡ga(i,j)(mod qj) …(25)
を満たす整数ai,j(i=1,...,n/j=1,...,s)を算出し、これを出力する(ステップS148)。なお、式(25)を満たす整数ai,jの算出は、例えば、数体ふるい法やPollardのρ法等を用いる。また、出力された整数ai,jは、メモリ440の領域447に格納される。
次に、判定部633が、メモリ440の領域447から整数ai,jを、それぞれ読み込み、すべてのv,w(1≦v<w≦s)について
av≡aw (mod 2) …(26)
が成立するか否かを判断する(ステップS149)。
ここで、すべてのv,w(1≦v<w≦s)について式(26)が成立しないと判断された場合、制御部150は、処理をステップS147に戻す。一方、すべての
v,w(1≦v<w≦s)について式(26)が成立すると判断された場合、制御部150は、対数生成部432に指示を与え、これを受けた対数生成部432は、メモリ440の領域447から各整数ai,j(i=1,...,n/j=1,...,s)を読み込み、全てのjについて
ai≡ai,j(mod φ(qj)) …(27)
を満たす整数aを算出し、当該整数aを出力する(ステップS150)。そして、出力された整数aは、メモリ440の領域448に格納される。なお、この整数aの算出は、例えば、GaussやGarnarのアルゴリズムとして知られている手順によって行う。
その後、加算部450・出力部460によって、第4の実施の形態と同じ処理(図13/ステップS100,S101)を実行し、最終的に、出力部460が、公開鍵PK=(b,...,b,k)と秘密鍵SK=(N,d,x1,...,x,g)を出力する。
なお、本発明は上述の実施の形態に限定されるものではない。例えば、上述では、加算部450が、bi=ai+dの演算を行ったが、bi=ai+d(mod N)やbi=ai+d(mod φ(N))等の演算を行うこととしてもよい。また、各実施の形態を適宜融合することも可能である。例えば、第1の実施の形態のように整数xを選択し、第2の実施の形態のようにg’を生成する構成であってもよい。さらに、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
また、上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
本発明の産業上の利用分野としては、合成数を法としたOTU暗号の暗号鍵生成装置等の分野を例示できる。
図1は、パラメータ生成装置のードウェア構成を例示したブロック図である。 図2は、第1の実施の形態のパラメータ生成装置の機能構成を説明するためのブロック図である。 図3は、第1の実施の形態の処理の全体を説明するためのフローチャートである。 図4は、図3のステップS1の詳細を説明するためのフローチャートである。 図5は、図3のステップS2の詳細を説明するためのフローチャートである。 図6は、図3のステップS4の詳細を説明するためのフローチャートである。 図7は、第2の実施の形態のパラメータ生成装置の機能構成を例示したブロック図である。 図8は、第2の実施の形態の処理を説明するためのフローチャートである。 図9は、図8におけるステップS52の処理の詳細を説明するためのフローチャートである。 図10は、第3の実施の形態のパラメータ生成装置の機能構成を例示したブロック図である。 図11は、第3の実施の形態の処理を説明するためのフローチャートである 図12は、第4の実施の形態の暗号鍵生成装置の機能構成を例示したブロック図である。 図13は、第4の実施の形態の暗号鍵生成処理の全体を説明するためのフローチャートである。 図14は、図13のステップS97の詳細を説明するためのフローチャートである。 図15は、第5の実施の形態の暗号鍵生成装置の機能構成を例示したブロック図である。 図16は、第5の実施の形態の暗号鍵生成処理の全体を説明するためのフローチャートである。 図17は、第6の実施の形態の暗号鍵生成装置の機能構成を例示したブロック図である。 図18は、第6の実施の形態の暗号鍵生成処理の全体を説明するためのフローチャートである。
符号の説明
100,200,300 パラメータ生成装置
400,500,600 暗号鍵生成装置

Claims (10)

  1. 離散対数問題のパラメータを生成するパラメータ生成装置であって、
    素数の冪乗からなる素数冪q(j=1,...,s)の集合であって、当該素数冪qの組にそれぞれ対応するオイラー関数値の組の最大公約数が全て2となるものを生成し、生成した当該複数の素数冪qを出力する素数冪生成部と、
    全てのjについて、整数gの属する法qの剰余類の代表元が、上記素数冪qと互いに素な0以上q未満の整数集合の生成元となる当該整数gを生成し、生成した当該整数gを出力する生成元生成部と、
    上記素数冪生成部で生成された全ての上記素数冪qの積である合成数Nを算出し、当該合成数Nを出力する合成数生成部と、
    を有することを特徴とするパラメータ生成装置。
  2. 請求項1に記載のパラメータ生成装置であって、
    全てのjについて上記素数冪qと互いに素な0以上q未満の整数集合の元である整数xを生成し、当該整数xを出力する真数生成部と、
    上記素数冪qを法としてgaj(ajはaを示す)と上記整数xとが合同となる整数aの集合であって、その集合に属する全ての整数の組が2を法として合同となるものを生成し、当該整数aを出力する補助対数生成部と、
    全てのjについて上記素数冪qのオイラー関数値を法として上記整数aと合同な整数aを生成し、当該整数aを出力する対数生成部と、
    を有することを特徴とするパラメータ生成装置。
  3. 請求項1に記載のパラメータ生成装置であって、
    上記生成元生成部は、
    各jについて、整数gの属する法qの剰余類の代表元が、上記素数冪qと互いに素な0以上q未満の整数集合の生成元となる当該整数gを生成し、生成した当該整数gを出力する部分群生成元生成部と、
    全てのjについて上記素数冪qを法として上記整数gと合同な整数gを生成し、当該整数gを出力する群生成元生成部と、
    を有することを特徴とするパラメータ生成装置。
  4. 請求項2に記載のパラメータ生成装置であって、
    上記真数生成部は、
    全ての上記素数冪qと互いに素な整数yを生成し、当該整数yを出力する補助整数生成部と、
    上記整数yを偶数冪乗した整数xを生成し、当該整数xを出力する冪乗部と、
    を有することを特徴とするパラメータ生成装置。
  5. 請求項1から4の何れかのパラメータ生成装置の出力値を用いて暗号鍵を生成する暗号鍵生成装置。
  6. 離散対数問題のパラメータを生成するパラメータ生成方法であって、
    素数冪生成部が、素数の冪乗からなる素数冪q(j=1,...,s)の集合であって、当該素数冪qの組にそれぞれ対応するオイラー関数値の組の最大公約数が全て2となるものを生成し、生成した当該複数の素数冪qを出力するステップと、
    生成元生成部が、全てのjについて、整数gの属する法qの剰余類の代表元が、上記素数冪qと互いに素な0以上q未満の整数集合の生成元となる当該整数gを生成し、生成した当該整数gを出力するステップと、
    合成数生成部が、上記素数冪生成部で生成された全ての上記素数冪qの積である合成数Nを算出し、当該合成数Nを出力するステップと、
    を有することを特徴とするパラメータ生成方法。
  7. 請求項6に記載のパラメータ生成方法において、
    真数生成部が、全てのjについて上記素数冪qと互いに素な0以上q未満の整数集合の元である整数xを生成し、当該整数xを出力するステップと、
    補助対数生成部が、上記素数冪qを法としてgaj(ajはaを示す)と上記整数xとが合同となる整数aの集合であって、その集合に属する全ての整数の組が2を法として合同となるものを生成し、当該整数aを出力するステップと、
    対数生成部が、全てのjについて上記素数冪qのオイラー関数値を法として上記整数aと合同な整数aを生成し、当該整数aを出力するステップと、
    を有することを特徴とするパラメータ生成方法。
  8. 請求項1から4の何れかのパラメータ生成装置の出力値を用いて暗号鍵を生成する暗号鍵生成方法。
  9. 請求項1から4の何れかに記載のパラメータ生成装置としてコンピュータを機能させるためのプログラム。
  10. 請求項5に記載の暗号鍵生成装置としてコンピュータを機能させるためのプログラム。
JP2005367020A 2005-12-20 2005-12-20 パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム Active JP4676873B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005367020A JP4676873B2 (ja) 2005-12-20 2005-12-20 パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005367020A JP4676873B2 (ja) 2005-12-20 2005-12-20 パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2007171411A true JP2007171411A (ja) 2007-07-05
JP4676873B2 JP4676873B2 (ja) 2011-04-27

Family

ID=38298083

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005367020A Active JP4676873B2 (ja) 2005-12-20 2005-12-20 パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム

Country Status (1)

Country Link
JP (1) JP4676873B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011095284A (ja) * 2009-10-27 2011-05-12 Nippon Telegr & Teleph Corp <Ntt> パラメータ設定装置、離散対数計算装置、事前計算装置、パラメータ設定方法、離散対数計算方法、事前計算方法、プログラム
JP2013228763A (ja) * 2013-08-14 2013-11-07 Nippon Telegr & Teleph Corp <Ntt> 離散対数計算装置、事前計算装置、離散対数計算方法、事前計算方法、プログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08102734A (ja) * 1994-09-30 1996-04-16 Nippon Telegr & Teleph Corp <Ntt> 公開鍵暗号方法及び公開鍵暗号システム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08102734A (ja) * 1994-09-30 1996-04-16 Nippon Telegr & Teleph Corp <Ntt> 公開鍵暗号方法及び公開鍵暗号システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011095284A (ja) * 2009-10-27 2011-05-12 Nippon Telegr & Teleph Corp <Ntt> パラメータ設定装置、離散対数計算装置、事前計算装置、パラメータ設定方法、離散対数計算方法、事前計算方法、プログラム
JP2013228763A (ja) * 2013-08-14 2013-11-07 Nippon Telegr & Teleph Corp <Ntt> 離散対数計算装置、事前計算装置、離散対数計算方法、事前計算方法、プログラム

Also Published As

Publication number Publication date
JP4676873B2 (ja) 2011-04-27

Similar Documents

Publication Publication Date Title
US8280039B2 (en) Signature generating device, signature generating method and signature generating program
US8458478B2 (en) Signature generating apparatus, signature verifying apparatus, and methods and programs therefor
Thomé Computation of discrete logarithms in
JP2010049215A (ja) パラメータ生成装置、暗号処理システム、方法およびプログラム
US20220166614A1 (en) System and method to optimize generation of coprime numbers in cryptographic applications
Adj et al. Computing discrete logarithms in cryptographically-interesting characteristic-three finite fields
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
JP4676873B2 (ja) パラメータ生成装置、暗号鍵生成装置、それらの方法及びプログラム
RU2403682C2 (ru) Способ и устройство для выполнения криптографического вычисления
JP2008136193A (ja) 署名生成装置、署名検証装置、それらの方法及びプログラム
JP2013217970A (ja) 格子問題に基づく階層型内積暗号システム,格子問題に基づく階層型内積暗号方法,装置
JP5038866B2 (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
JP4922139B2 (ja) 鍵共有方法、第1装置、第2装置、及び、それらのプログラム
JP5038868B2 (ja) 鍵共有方法、第1装置、第2装置、及びそれらのプログラム
JP4685621B2 (ja) 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム
JP2017223822A (ja) 暗号文処理システム、暗号文処理サーバ、及び暗号文処理方法
Overmars Survey of rsa vulnerabilities
JP2021081591A (ja) 安全性評価装置、安全性評価方法及び安全性評価プログラム
JP4692022B2 (ja) 楕円曲線暗号におけるスカラー倍計算装置、及び、そのプログラム
JP5871827B2 (ja) 安全性強化システム、安全性強化装置、検証装置、およびプログラム
Mooney et al. A New Rabin-type Cryptosystem with Modulus p 2 q
JP4802228B2 (ja) 鍵生成装置及びプログラム
Téllez et al. Supersingular Isogeny and Ring Learning With Errors-Based Diffie-Hellman Cryptosystems: A Performance and Security Comparison
JP2009128774A (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
Dhiman et al. Comparative Analysis and Scrutiny of Key Authentication Techniques in Fully Homomorphic Schemes

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101102

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101222

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110128

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4676873

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350