説明

公開鍵暗号技術におけるドメインパラメータの生成

【課題】暗号プロトコルや公開鍵暗号に係る処理において計算負荷を減少させる。
【解決手段】公開鍵暗号方式において秘密鍵と公開鍵の生成に使用されるpおよびqを生成する方法。p,qは素数であり、pは、素数であるrか、qと同じ若しくはqより大きな素数の合成数であるrを用いて、式p=2qr+1により計算されるセキュアー素数である。公開鍵暗号方式に使用するセキュリティパラメータをk,qのビット長をN,aを0<a<2である奇数としたとき、qを、式q=22k−aもしくは式q=2−a、または、式q=22k+aもしくは式q=2N−1+aに基づいて生成する。pの所望のビット長をL,bを0<bである奇数としたとき、qを、式q=22k−aもしくは式q=2−aにより生成した場合は、rを、式r=2L−2k−1+bもしくは式r=2L−N−1+b、または、式r=2L−2k−bもしくは式r=2L−N−bにより生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、素体の素数位数部分群で定義され、離散対数問題を安全性の根拠とする公開鍵暗号方式(Diffie-Hellman鍵共有プロトコルやディジタル署名方式を含む)におけるドメインパラメータの生成およびその応用に関する。
【背景技術】
【0002】
まず、本明細書で説明する公開鍵暗号方式の背景知識と記号について、簡単に説明する。
体とは四則演算が定義される数の集合であって、その数の集合が有限の場合は有限体と呼ぶ。有限体に含まれる数の個数が素数である体を素体と呼び、素体の要素の個数を決めている素数を票数と呼ぶ。また、乗法群とは乗算と除算が定義される数の集合であって、有限体の要素から0を除くと乗法群となる。また、群の要素の個数を位数と呼ぶ。
【0003】
p,qは素数であり、q|p−1という関係がある。q|p−1の表記は、qはp−1を割りきることのできる値であることを意味する。また、gは「mod p」有限体上の位数qの乗法群G={g mod p: 0≦j<q}の生成元である(楕円曲線上でも同じように群を構成できる)。ここで、「g mod p」は、べき乗剰余演算であり、gをj乗した値をpで割った残り(Remainder)という意味である。また、gは(1<g<p−1,g=1 mod p,g≠1 mod p(0<j<q))を満たす。つまり、pは素体の標数であり、qは乗法群Gの位数を示す。一般に、(p,q,g)はドメインパラメータと呼ばれる。有限体上の離散対数問題を安全性の根拠とする公開鍵暗号方式(Diffie−Hellman鍵交換プロトコルやディジタル署名方式を含める)では、ドメインパラメータを用いて秘密鍵と公開鍵の対が生成される。例えば、「X=g mod p(0<x<q)」で、xは秘密鍵であり、Xは秘密鍵xに対応する公開鍵である。公開鍵Xが与えられた時、秘密鍵x=logXを求めるのは数学的に難しい問題(Xの生成元gに対する離散対数問題という)である。そして、十分な安全性を確保するためには、少なくとも1024ビットのpと160ビットのqを使う必要がある。
【0004】
公開鍵暗号方式(鍵共有、ディジタル署名などを含む)は、様々な分野に応用されており、認証、電子商取引、ディジタル権利保護など、ICT社会の安全性を支える上で不可欠になりつつある各種サービスやそれらを実行する各種端末(スマートカード、RFID、家電、携帯電話、PDAなど)などにおいて、幅広く利用されている。
【0005】
公開鍵暗号方式におけるパラメータを生成する従来技術には、例えば、特開2010-49215(株式会社東芝)に開示されているような、拡大体上の代数的トーラスを用いる方法がある。
【0006】
また、NIST FIPS PUB 186-3, "Digital Signature Standard (DSS)", June 2009には、素体の素数位数部分群を用いた公開鍵暗号方式におけるドメインパラメータとして、素体の票数pと有限体上で定義される乗法群の素数位数qを生成する方法が記載されている。
【0007】
IEEE P1363, "IEEE P1363/D13 Standard Specifications for Public Key Cryptography", November 1999 には、素体の素数位数部分群を用いた公開鍵暗号方式におけるドメインパラメータとして、素体の票数pと有限体上で定義される乗法群の素数位数qを生成する方法が記載されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2010-49215
【0009】
【非特許文献1】NIST FIPS PUB 186-3, "Digital Signature Standard (DSS)", June 2009
【非特許文献2】IEEE P1363, "IEEE P1363/D13 Standard Specifications for Public Key Cryptography", November 1999
【発明の概要】
【発明が解決しようとする課題】
【0010】
前述のように、素体の素数位数部分群で定義され、離散対数問題を安全性の根拠とする公開鍵暗号方式において、十分な安全性を確保するためには、少なくとも1024ビットのpと160ビットのqを使う必要があると言われている。今後、更なる安全性への要求やデバイスの計算能力の向上と共に、pの大きさは、2048ビット、3072ビットへと増していくことが予想される。すると、pやqなどの変数を保持して処理するために多くの資源が必要となり、サイズやコストの増大を招く可能性がある。
【0011】
また、既存の暗号プロトコルや公開鍵暗号方式では、不正な攻撃を回避するために、位数確認処理が必要である。しかし、この処理に係るオーバーヘッドは少なくはなく、スマートカードやRFID,家電,携帯電話,PDAなどの計算資源の少ないデバイスではもとより、高性能のコンピュータ装置であっても、大量のデータを処理しなければならないサーバなどの装置においては極めて負荷の高い処理となっている。この事情は、暗号プロトコルや公開鍵暗号方式を今後さらに普及させていく上で、足枷になる可能性がある。
【0012】
さらに、前述のように、ドメインパラメータである素数p,qは、q|p−1の関係を満たすことが必要とされる。しかし、素数pに対してp−1を割りきる素数qを探索するという処理は、計算負荷の高い処理であった。
【0013】
本発明は、これらの課題の少なくとも1つに対する解決策を提供し、暗号プロトコルや公開鍵暗号に係る処理において計算負荷を減少させることを課題とする。
【課題を解決するための手段】
【0014】
本発明の一側面は、公開鍵暗号方式において秘密鍵と公開鍵の対の生成に使用されるドメインパラメータpおよびqを生成する方法に関する。pおよびqは素数である。本発明は、素数r、またはqと同じ大きさかqより大きな素数の合成数であるrを用いることにより、pとして、式p=2qr+1により計算される値を用いることを特徴の1つとする。かかるpは、一般にセキュアー素数(secure prime)と呼ばれている。
【0015】
ドメインパラメータpとして、上式で与えられるセキュアー素数を用いることにより、既存の暗号プロトコルや公開鍵暗号方式で必要であった位数確認処理、あるいは安全性を確保するために新たに付け加えなければならない位数確認処理を不要とすることができる。これは、計算量の大幅な減少をもたらす。従って、本発明に係るドメインパラメータ生成方法は、大量のデータ処理を必要とするサーバなどの装置に実装するのに適しており、また、家庭や小規模オフィス用のセキュリティ装置などの計算資源の乏しい小型デバイスに実装するにも適している。
【0016】
また、コンピュータで計算する上で、pをqとrの掛け算で計算するという処理は、従来のように素数pに対してp−1を割りきる素数qを探索するという処理よりも簡単である。従って、pをqとrの乗算で求めるという特徴も、計算資源の削減に大きく役立っている。特に、pのサイズが3072ビットともなると、現時点(2010年6月)において、従来方式でpとqを生成することは、普通に入手しうる計算機の計算能力では著しく長い計算時間が必要となり、事実上不可能である。しかし、本発明の実施形態においては、qとrの乗算で求めるという構成を採るため、大きなサイズのpの生成も可能となる。
【0017】
好適な実施形態においては、qが次のような方法で生成される。すなわち、秘密鍵および公開鍵の生成に使用するセキュリティパラメータをk,qのビット長をN,aを0<a<2である奇数としたとき、qを、式q=22k−aもしくは式q=2−a、または、式q=22k+aもしくは式q=2N−1+aに基づいて生成する。Nは、k≒N/2となるように選択することが好ましい。また、セキュリティパラメータkは、1/2が無視できるほど小さくなるように選択される。
【0018】
このようなqの生成方法は、前掲の先行技術文献のいずれにも記載されていない。
【0019】
qを2のべき乗±aで計算することにより、qは、2進数で表すと、先頭および最後尾にいくつかのビットを除いた中間ビットは、全て0か1になる(2のべき乗+aでは0になり、2のべき乗−aでは1になる)。そこで、これらの0や1の羅列を別の手法で表すことにより、qを本来の大きさよりずっと少ないビットで表現することが可能になる。このため、上の方法でqを生成する前述の特徴によれば、qを保持するための記憶容量を削減することができるという利点が提供される。従って、本発明に係るドメインパラメータ生成技術を、記憶容量が限られたデバイスに搭載する上で有利となる。かかる効果は、前掲の先行技術文献のいずれにも記載されていない。
【0020】
セキュアー素数pを用いることにより、qの生成において更なる利点が得られる。従来、安全性の制約から、qにおいてべき乗するためのビット列は、セキュリティパラメータkの2倍(つまりqのビット長N)より64ビット程度長く取らなければならないとされていた。これに対して本発明においては、qが2のべき乗に限りなく近くなるセキュアー素数pを用いるため、べき乗するためのビット列が、セキュリティパラメータkの2倍程度で済む。これは、計算量の削減に大きく貢献する。従って、本発明に係るドメインパラメータ生成技術を、計算資源に制約があるデバイスに搭載する上で、更に有利となる。かかる効果も、前掲の先行技術文献のいずれにも記載されていない。
【0021】
好適な実施形態においては、rもqと同じような式に基づいて生成される。まず、pの所望のビット長をL,bを0<bである奇数とする。ここで、qを、式q=22k−aもしくは式q=2−aにより生成した場合は、rを、式r=2L−2k−1+bもしくは式r=2L−N−1+b、または、式r=2L−2k−bもしくは式r=2L−N−bにより生成し、qを、式q=22k+aもしくは式q=2N−1+aにより生成した場合は、rを、式r=2L−2k−1−bもしくは式r=2L−N−b、または、式r=2L−2k−2+bもしくは式r=2L−N−1+bにより生成する。Lは、例えば1024,2048,3072などであることができる。
【0022】
このようなrの生成方法も、前掲の先行技術文献のいずれにも記載されていない。
【0023】
前述のように、rは素数であることができ、またはqと同じ大きさかqより大きな素数の合成数であることができる(つまり、r=q・・・qでq≧q (1≦t≦n)である)。rを2のべき乗±bで計算することにより、前述のqの場合と同様に、先頭および最後尾にいくつかのビットを除いた中間ビットが2進数表現で全て0か1になる(2のべき乗+bでは0になり、2のべき乗−bでは1になる)。そこで、これらの0や1の羅列を別の手法で表すことにより、rを本来の大きさよりずっと少ないビットで表現することができる。このため、上の方法でrを生成する前述の特徴によれば、rを保持するための記憶容量を削減することができるという利点が提供される。従って、本発明に係るドメインパラメータ生成技術を、記憶容量が限られたデバイスに搭載する上で有利となる。かかる効果も、前掲の先行技術文献のいずれにも記載されていない。
【0024】
q,rを前述のように2のべき乗に基づいて生成すると、qとrの積に基づいて生成されるp(すなわちp=2qr+1)も、先頭と最後尾のいくつかのビットを除いた中間ビットが、2進数表現で全て0か1になる。そこで、qやrと同様に、pを本来の大きさよりずっと少ないビットで表現することが可能になる。このため、pを保持するための記憶容量を削減することができるという利点が提供される。これは、p(やq)を生成する要素にとって有利なだけではなく、そのp(やq)を受け取って、それに基づいて暗号鍵を生成する要素にとっても、要求される記憶容量や通信容量が小さくてすむという点で、有利である。
【0025】
好適な実施形態においては、生成したqおよび/またはrに基づいてp計算した後、計算したpがLビットの素数であるか否かをチェックし、否である場合は、rおよびqのいずれか又は両方を再生成し、再生成したqおよび/またはrに基づいてpを再計算する。実施形態によっては、計算したpがLビットの素数である場合は、計算したpおよびqを外部へ出力するようにしてもよい。これらのpやqは、生成元gの生成に用いられることができ、また公開鍵や秘密鍵の生成に用いられてもよい。
【0026】
本発明の様々な実施形態には、前述の処理の少なくとも一部を実行する装置や、装置に前述の処理の少なくとも一部を実行させるプログラム、前述の処理の少なくとも一部を含む、装置の動作方法が含まれる。本明細書において、「装置」との用語は、単体の製品だけでなく、複数の製品がインターフェースやネットワーク等で接続されたシステムや、単一又は複数の基板の一部又は全体に実装される回路要素、ならびに当該回路要素を含む基板やチップセットなどをも包含する概念を表す。前述の処理は、専用のハードウェア回路やプログラマブル回路、ソフトウェア処理、またはこれらの組み合わせなどによって実行されることができる。読者は、本発明に記載の用語を限定的な要素や構成として理解するのではなく、同様の機能を備える様々な要素や構成を包含する語句として、理解すべきであることに注意されたい。
【図面の簡単な説明】
【0027】
【図1】実施例1として説明されるドメインパラメータ生成装置100の処理要素および処理の流れを説明するためのブロック図である。
【図2】実施例2として説明されるドメインパラメータ生成装置200の処理要素および処理の流れを説明するためのブロック図である。
【図3】実施例3として説明されるドメインパラメータ生成装置300の処理要素および処理の流れを説明するためのブロック図である。
【図4】実施例4として説明されるドメインパラメータ生成装置400の処理要素および処理の流れを説明するためのブロック図である。
【図5】ドメインパラメータ生成装置100〜400のいずれかを利用したシステムの例を説明するための図である。
【発明を実施するための形態】
【0028】
以下、添付図面を参照しつつ、本発明の好適な実施例について、いくつか紹介する。p,qなど、実施例の説明において使用される記号の意味は、これまでの説明と同じ意味を有する。すなわち、p,qは、公開鍵暗号方式において、生成元gの生成や、秘密鍵と公開鍵の対の生成に使用されるドメインパラメータであり、pはp=2qr+1の関係式を満たしており、pとqは共に素数であり、rは素数、またはqと同じかそれ以上の大きさの素数の合成数(つまり、r=q・・・qでq≧q (1≦t≦n))であるとする。|p|、|q|は、それぞれp、qのビットの長さを表す。以下、|p|=L(つまり、2L−1≦p<2)にし、|q|=N(つまり、2N−1≦q<2)にする。また、kを暗号システムが安全性を保証するためのセキュリティパラメータとし、1/2は無視できるほど小さくなければならない。ドメインパラメータサイズとセキュリティパラメータ(L,k)は、例えば(1024,80),(2048,112),(2048,128),(3072,128)である。

〔実施例1〕
【0029】
ドメインパラメータ生成装置は、公開鍵暗号方式(Diffie−Hellman鍵交換プロトコルやディジタル署名方式を含める)に関する公開情報としてのドメインパラメータを生成する。ドメインパラメータとしては、暗号系が定義される群に関する情報として、素体の標数pと乗法群Gの位数qと生成元gの情報が含まれる。
【0030】
図1は、実施例1として以下に説明する、ドメインパラメータ生成装置100の処理要素および処理の流れを説明するためのブロック図である。ドメインパラメータ生成装置は、素数q生成器102,r生成器104,演算器106,素数判断部108,出力器110などを備える。このドメインパラメータ生成装置では、入力された|p|とセキュリティパラメータkの対(L,k)、もしくはLとqのビットの長さの対(L,N)に基づいて、前述の特徴的な素数生成や演算を行い、素体の票数であるセキュアー素数pと乗法群Gの位数である素数qを出力する。出力された(p,q)は生成元gを生成するためにも使われる。
【0031】
なお、図1においては、本発明の実施例の説明に必要な処理要素のみが記載されており、例えば基板など、実施例の理解に不要と思われる要素は図示が省略されていることに留意されたい。また、図に描かれる各処理要素は、専用のハードウェアによって実現されることもできるが、CPUとコンピュータ・プログラムを用いたソフトウェア処理によって実現されることができる場合がある。従って、以下の図において、例えば「素数生成器」のように「器」「装置」のような用語が用いられているとしても、その実現手段はハードウェアに限定されるものではなく、ソフトウェア処理による手段によっても実装可能であることに注意されたい。また、2つ以上の処理要素を1つのハードウェア回路にまとめたり、あるいは2つ以上の処理要素をそれぞれサブプログラムとして含んだ1つのプログラムにまとめて実装することも、無論可能である。例えば、以下の実施例で紹介されるドメインパラメータ生成装置の機能の全てを、プロセッサとメモリとプログラムコードを用いて実現することも可能である。さらに、各処理要素をFPGAのようなプログラマブルな回路を用いて実現することも可能である。当業者であれば、当然ながら、実施形態の具体的要求に応じて、適切な実装手段を選択することができるだろう。
【0032】
図1に示すように、ドメインパラメータ生成装置100の素数q生成器102は、入力されたk、もしくはNを入力として、素数qを「q=22k−a」もしくは「q=2−a」により生成して出力する。ここで、Nは、k≒N/2であるように選択される。また、aは0<a<2である奇数であり、従ってa=2a'+1を満たすa'を使って表すこともできる。安全性およびqを少ないビット数で表現するためには、aは小さい方がよい。
【0033】
r生成器104は、入力された(L,k)、もしくは(L,N)を入力として、rを「r=2L−2k−1+b」もしくは「r=2L−N−1+b」により生成して出力する。ここで、bは0<bかつpのビット数がLを超えない範囲の奇数であり、従ってb=2b'+1を満たすb'を使って表すこともできる。
【0034】
演算器106は、素数q生成器102により出力された素数qと、r生成器104により出力されたrとを入力として、値pを計算式「p=2qr+1」により計算して出力する。
【0035】
素数判断部108は、演算器106により出力された値pが素数であるか否かを確認する。素数判断部108の判断処理において、演算器106から入力された値pがLビットの素数ではない場合、rやqを新たに生成し直し、上記の処理を繰り返す。なお、図ではrのみを再生成するように描かれているが、実施形態によってはqのみを再生成したり、またrとqを両方生成したりするように構成してもよい。また、rを所定回数再生成する毎にqを再生成する、またはその逆のように構成してもよい。
【0036】
一方、素数判断部108の判断処理において、演算器106から入力された値pがLビットの素数である場合は、値pがセキュアー素数であるとして、出力器110は、素数q生成器102から出力された素数qと演算器106から出力されたセキュアー素数pを入力として、ドメインパラメータ(p,q)を出力する。
【0037】
実施例1によるテストデータp,q,rの16進数表現を以下に示す。一見して判るように、qは最後尾部分のいくつかのデータを除いて全てFであり、p,rは、先頭部分および最後尾部分のいくつかのデータを除いて全て0である。これは、2進数表現を用いれば、qは最後尾部分のいくつかのビットを除いて全て1であり、p,rは、先頭部分および最後尾部分のいくつかのビットを除いて全て0であることを示す。これら連続する0や1を適当な手法で表現することにより、pやqを本来のビット数より大幅に少ないビット数で表現することが可能である。また、0以上22k未満の均一分布と0以上q未満の均一分布を識別することは困難である。

q=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1,

r=800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002DBF,

p=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B7DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF33DF

〔実施例2〕
【0038】
次に、実施例1とは若干異なる実施例を、実施例2として、図2を用いて説明する。実施例2に係るドメインパラメータ生成装置200は、実施例1のドメインパラメータ生成装置100と同様に、素数q生成器102,演算器106,素数判断部108,出力器110などを備える。これらの要素の機能は実施例1の場合と同様であるので、同様の符号を付し、説明を省略する。実施例1との相違は、r生成器104がr生成器204に置き換えられている点である。
【0039】
r生成器204は、入力された(L,k)もしくは(L,N)を入力として、rを「r=2L−2k−b」もしくは「r=2L−N−b」により生成して出力する。ここで、bは0<bかつpのビット数がLを超えない範囲の奇数である。
【0040】
実施例2によるテストデータp,q,rの16進数表現を以下に示す。

q=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7,

r=7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8179,

p=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F2000000000000000000000000000000000038581F
【0041】
実施例1の場合と同様に、p,qには規則性が見られる。すなわち、qは最後尾部分のいくつかのデータを除いて全てFであり、p,rも、先頭部分および最後尾部分のいくつかのデータを除いて全てFである。これは、2進数表現を用いれば、p,q,rのいずれも、中間ビットは全て1であることを示している。これは、本実施例においても、rを2のべき乗に基づいて生成しているからである。従って、連続する1を適当な手法で表現することにより、pやqを本来のビット数より大幅に少ないビット数で表現することが可能である。

〔実施例3〕
【0042】
次に、実施例1,2とは更に若干異なる実施例を、実施例3として、図3を用いて説明する。実施例3に係るドメインパラメータ生成装置300は、実施例1や2のドメインパラメータ生成装置100,200と同様に、演算器106,素数判断部108,出力器110などを備える。これらの要素の機能は実施例1の場合と同様であるので、同様の符号を付し、説明を省略する。実施例3と実施例1との相違は、素数q生成器102が素数q生成器302に置き換えられ、r生成器104がr生成器304に置き換えられている点である。
【0043】
素数q生成器302は、入力されたk、もしくはNを入力として、素数qを「q=22k+a」もしくは「q=2N−1+a」により生成して出力する。ここで、N=2k+1であり、aは0<a<2である奇数であり、a=2a'+1を満たすa'を使って表すこともできる。なお、安全性およびqを少ないビット数で表現するためにaは小さい方がよい。r生成器304は、入力された(L,k)もしくは(L,N)を入力として、rを「r=2L−2k−1−b」もしくは「r=2L−N−b」により生成して出力する。ここで、bは0<bかつpのビット数がLを超えない範囲の奇数であり、b=2b'+1を満たすb'を使って表すこともできる。
【0044】
実施例3によるテストデータp,q,rの16進数表現を以下に示す。

q=10000000000000000000000000000000000000007,

r=3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F9F,

p=80000000000000000000000000000000000000037FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3F3DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3BAB3
【0045】
実施例1や2の場合と同様に、p,qには規則性が見られる。これは、本実施例においても、qおよびrを2のべき乗に基づいて生成しているからである。従って、連続する0や1を適当な手法で表現することにより、pやqを本来のビット数より大幅に少ないビット数で表現することが可能である。

〔実施例4〕
【0046】
次に、実施例3と若干異なる実施例を、実施例4として、図4を用いて説明する。実施例4に係るドメインパラメータ生成装置400は、実施例3のドメインパラメータ生成装置300と同様に、素数q生成器302,演算器106,素数判断部108,出力器110などを備える。これらの要素の機能は実施例1〜3の場合と同様であるので、同様の符号を付し、説明を省略する。実施例3との相違は、r生成器304がr生成器404に置き換えられている点である。
【0047】
r生成器404は、入力された(L,k)もしくは(L,N)を入力として、rを「r=2L−2k−2+b」もしくは「r=2L−N−1+b」により生成して出力する。ここで、bは0<bかつpのビット数がLを超えない範囲の奇数であり、b=2b'+1を満たすb'を使って表すこともできる。
【0048】
実施例4によるテストデータp,q,rの16進数表現を以下に示す。

q=10000000000000000000000000000000000000007,

r=40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002083B,

p=80000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004107600000000000000000000000000000000001C733B
【0049】
実施例1〜3の場合と同様に、p,qには規則性が見られる。これは、本実施例においても、qおよびrを2のべき乗に基づいて生成しているからである。従って、連続する0や1を適当な手法で表現することにより、pやqを本来のビット数より大幅に少ないビット数で表現することが可能である。
【0050】
要素102,104,106,108,204,302,304,404は、単一の筐体内や単一の基板上に搭載される要素であってもよいし、それぞれプロセッサとプログラムによるソフトウェア処理によって実現される要素であってもよい。2つ以上の要素が同一のハードウェア回路によって実装されてもよい。また、それぞれ別個の筐体や基板に実装され、互いに既存のネットワーク技術やインターフェース技術によって接続される要素であってもよい。従って、ドメインパラメータ生成装置100〜400は、単一の筐体を有する単一の製品として実施されてもよいし、また単一のコンピュータ装置の一機能として実施されてもよいし、複数の製品からなるシステムとして実施されてもよい。
【0051】
素数q生成器102と302は、自動又は手動制御により、互いに移り変わることができるように構成されることができる。すなわち、単一の素数q生成器が、実施例で説明された素数q生成器102と302の両方の機能を発揮できるように構成されていてもよい。例えば、素数q生成器102をソフトウェア処理により実装する場合、qの生成式をq=22k−a(q=2−a)からq=22k+a(q=2N−1+a)に切り替えるだけで、簡単に素数q生成器302として動作しうるようになることは明らかである。同様に、r生成器104,204,304,404も、実際には、単一のr生成器が、実施例で説明されたr生成器104〜404全ての機能を発揮できるように構成されていてもよい。
【0052】
ドメインパラメータ生成装置100〜400の上述の機能の一部又は全部をプロセッサとプログラムによるソフトウェア処理によって実現される要素として実施する場合、当該プログラムを、独立の製品として、CD−ROMやDVD−ROMなどの光ディスクまたはUSBメモリ等のメモリカードへ格納して販売したり、インターネットなどを利用したダウンロードなどの手法で販売したりすることも可能である。このような、ドメインパラメータ生成装置100〜400の上述の機能性をプロセッサに実行させるソフトウェアも、本願請求項に係る発明の実施形態に含まれるものである。
【0053】
図5は、ドメインパラメータ生成装置100〜400のいずれかを利用したシステムの例を説明するための図である。システム500は、ドメインパラメータ生成装置502を備えるが、この装置502は、前述のメインパラメータ生成装置100〜400のいずれかであることができる。システム500は更に、鍵生成装置504を含む。鍵生成装置504は、ドメインパラメータ生成装置502から出力されたドメインパラメータp,qを用いて、公開鍵暗号技術を用いる通信に用いられる秘密鍵と公開鍵の対を生成するように構成される。鍵生成装置504は、ドメインパラメータp,qの他、これらp,qから既知の手法で導出された生成元gにも基づいて、秘密鍵と公開鍵の対を生成する。これらの鍵の生成方法は既によく知られている。
【0054】
実施例によっては、システム500は、サービス提供サーバ506を備えていてもよい。サービス提供サーバ506は、鍵生成装置504が生成した公開鍵をインターネットなどに公開すると共に、リモートの端末520が当該公開鍵を用いて暗号化したデータを、有線若しくは無線又はその組み合わせによる通信路510を介して受信しうるように構成される。暗号化されたデータを受信したサービス提供サーバ206は、鍵生成装置504が生成した秘密鍵を用いて、当該データを復号しうるように構成される。
【0055】
要素502,504,506は、単一の筐体内や単一の基板上に搭載される要素であってもよいし、プロセッサとプログラムによるソフトウェア処理によって実現される要素であってもよい。また、それぞれ別個の筐体や基板に実装され、互いに既存のネットワーク技術やインターフェース技術によって接続される要素であってもよい。従って、システム500は、単一の筐体を有する単一の製品として実施されてもよいし、また単一のコンピュータ装置の一機能として実施されてもよいし、複数の製品からなるシステムとして実施されてもよい。
【0056】
システム500の上述の機能の一部又は全部をプロセッサとプログラムによるソフトウェア処理によって実現される要素として実施する場合、当該プログラムを、独立の製品として、CD−ROMやDVD−ROMなどの光ディスクまたはUSBメモリ等のメモリカードへ格納して販売したり、インターネットなどを利用したダウンロードなどの手法で販売したりすることも可能である。このような、システム500の上述の機能性をプロセッサに実行させるソフトウェアも、本願請求項に係る発明の実施形態に含まれるものである。
【0057】
本願のドメインパラメータ生成技術は、離散対数問題を安全性の根拠とする公開鍵暗号方式を利用する様々な分野において利用されることができる。特に、本願のドメインパラメータ生成技術は、公開鍵暗号方式を利用する上で必要とされる計算資源が従来技術に比べて著しく減少させるため、種々多様なソフトウェアやハードウェアに搭載されることができる。例えば、従来では公開鍵暗号方式を実装するには不適当であったような、計算能力に乏しい小型のハードウェアや、多くの計算資源を割くことのできない共用サーバであっても、本明細書に開示された技術思想を用いて、ハードウェア的に、および/またはソフトウェア的に、公開鍵暗号方式を利用するための機能を実装することが可能となる。
【0058】
以上、本発明の好適な実施形態の好適な例をいくつか説明してきたが、これらの実施例は本発明の範囲を限定する目的で紹介されたのではなく、本発明の理解に資するために紹介されたものであることは、理解されねばならない。添付の特許請求の範囲には、発明者が現在好適と考えるいくつかの実施形態が請求項毎に特定されているが、出願人は、現在は請求項に記載されていなくとも、本明細書および図面に明示的または暗示的に開示された全ての新規な特徴およびそれらの組み合わせについても、将来的に特許を請求する可能性があることを理解されたい。
【符号の説明】
【0059】
100,200,300,400 ドメインパラメータ生成装置
102,302 素数q生成器
104,204,304,404 r生成器
106 演算器
108 素数判断部
110 出力器
500 システム
502 ドメインパラメータ生成装置
504 鍵生成装置
506 サービス提供サーバ
510 通信路
520 端末

【特許請求の範囲】
【請求項1】
公開鍵暗号方式において秘密鍵と公開鍵の対の生成に使用されるドメインパラメータpおよびqを生成する装置の動作方法であって、
p,qは素数であり
pは、素数であるrか、qと同じ若しくはqより大きな素数の合成数であるrを用いて、式p=2qr+1により計算されるセキュアー素数であり、
前記秘密鍵および前記公開鍵の生成に使用するセキュリティパラメータをk,前記qのビット長をN,aを0<a<2である奇数としたとき、qを、式q=22k−aもしくは式q=2−a、または、式q=22k+aもしくは式q=2N−1+aに基づいて生成することを特徴とする、方法。
【請求項2】
pの所望のビット長をL,bを0<bである奇数としたとき、
qを、式q=22k−aもしくは式q=2−aにより生成した場合は、rを、式r=2L−2k−1+bもしくは式r=2L−N−1+b、または、式r=2L−2k−bもしくは式r=2L−N−bにより生成し、
qを、式q=22k+aもしくは式q=2N−1+aにより生成した場合は、rを、式r=2L−2k−1−bもしくは式r=2L−N−b、または、式r=2L−2k−2+bもしくは式r=2L−N−1+bにより生成する、
請求項1に記載の方法。
【請求項3】
公開鍵暗号方式において秘密鍵と公開鍵の対の生成に使用されるドメインパラメータpおよびqを生成する装置の動作方法であって、
p,qは素数であり
pは、素数であるrか、qと同じ若しくはqより大きな素数の合成数であるrを用いて、式p=2qr+1により計算されるセキュアー素数であり、
前記秘密鍵および前記公開鍵の生成に使用するセキュリティパラメータをk,前記qのビット長をN,pの所望のビット長をL,bを0<bである奇数としたとき、rを、式r=2L−2k−1+b,式r=2L−N−1+b,式r=2L−2k−b,式r=2L−N−b,式r=2L−2k−1−b,式r=2L−2k−2+bのいずれか1つに基づいて生成することを特徴とする、方法。
【請求項4】
pを式p=2qr+1により計算し、計算したpがLビットの素数でない場合は、rおよびqのいずれか又は両方を再生成し、前記再生成した値に基づいてpを再計算する段階を有する、請求項1から3のいずれかに記載の方法。
【請求項5】
式p=2qr+1により計算したpがLビットの素数である場合は、計算したpおよびqを出力する段階を有する、請求項1から4のいずれかに記載の方法。
【請求項6】
請求項5に記載の方法により出力されたpおよびqに基づいて、生成元g,秘密鍵,公開鍵の少なくともいずれかを生成する段階を有する、方法。
【請求項7】
請求項6に記載の方法により生成された公開鍵を公開する段階を有する、方法。
【請求項8】
請求項6に記載の方法により生成された公開鍵によって暗号化されたデータを、請求項6に記載の方法により生成された秘密鍵により復号する段階を有する、方法。
【請求項9】
請求項6に記載の方法により生成された公開鍵によってデータを暗号化する段階を有する、方法。
【請求項10】
コンピュータ装置に、請求項1から8のいずれかに記載の方法を実行させる、プログラム。
【請求項11】
プロセッサと、前記プロセッサに請求項1から8のいずれかに記載の方法を実行させるプログラムを格納するメモリと、を備える、装置。
【請求項12】
公開鍵暗号方式において秘密鍵と公開鍵の対の生成に使用されるドメインパラメータpおよびqを生成する装置であって、
p,qは素数であり
pは、素数であるrか、qと同じ若しくはqより大きな素数の合成数であるrを用いて、式p=2qr+1により計算されるセキュアー素数であり、
前記秘密鍵および前記公開鍵の生成に使用するセキュリティパラメータをk,前記qのビット長をN,aを0<a<2である奇数としたとき、qを、式q=22k−aもしくは式q=2−a、または、式q=22k+aもしくは式q=2N−1+aに基づいて生成する手段を有することを特徴とする、装置。
【請求項13】
pの所望のビット長をL,bを0<bである奇数としたとき、
qを、式q=22k−aもしくは式q=2−aにより生成した場合は、rを、式r=2L−2k−1+bもしくは式r=2L−N−1+b、または、式r=2L−2k−bもしくは式r=2L−N−bにより生成し、
qを、式q=22k+aもしくは式q=2N−1+aにより生成した場合は、rを、式r=2L−2k−1−bもしくは式r=2L−N−b、または、式r=2L−2k−2+bもしくは式r=2L−N−1+bにより生成する、
手段を有することを特徴とする、請求項12に記載の装置。
【請求項14】
公開鍵暗号方式において秘密鍵と公開鍵の対の生成に使用されるドメインパラメータpおよびqを生成する装置であって、
p,qは素数であり
pは、素数であるrか、qと同じ若しくはqより大きな素数の合成数であるrを用いて、式p=2qr+1により計算されるセキュアー素数であり、
前記秘密鍵および前記公開鍵の生成に使用するセキュリティパラメータをk,前記qのビット長をN,pの所望のビット長をL,bを0<bである奇数としたとき、rを、式r=2L−2k−1+b,式r=2L−N−1+b,式r=2L−2k−b,式r=2L−N−b,式r=2L−2k−1−b,式r=2L−2k−2+bのいずれか1つに基づいて生成することを特徴とする、装置。
【請求項15】
pを式p=2qr+1により計算し、計算したpがLビットの素数でない場合は、rおよびqのいずれか又は両方を再生成し、該再生成した値に基づいてpを再計算する手段を有する、請求項12から14のいずれかに記載の装置。
【請求項16】
式p=2qr+1により計算したpがLビットの素数である場合は、計算したpおよびqを出力する手段を有する、請求項12から15のいずれかに記載の装置。
【請求項17】
請求項16に記載の装置により出力されたpおよびqに基づいて、生成元g,秘密鍵,公開鍵の少なくともいずれかを生成する手段を有する、装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate