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

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

Info

Publication number
JP5578553B2
JP5578553B2 JP2010126373A JP2010126373A JP5578553B2 JP 5578553 B2 JP5578553 B2 JP 5578553B2 JP 2010126373 A JP2010126373 A JP 2010126373A JP 2010126373 A JP2010126373 A JP 2010126373A JP 5578553 B2 JP5578553 B2 JP 5578553B2
Authority
JP
Japan
Prior art keywords
generated
formula
public key
bits
equation
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.)
Active
Application number
JP2010126373A
Other languages
English (en)
Other versions
JP2011253018A (ja
Inventor
星漢 辛
和邦 古原
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.)
National Institute of Advanced Industrial Science and Technology AIST
Original Assignee
National Institute of Advanced Industrial Science and Technology AIST
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 National Institute of Advanced Industrial Science and Technology AIST filed Critical National Institute of Advanced Industrial Science and Technology AIST
Priority to JP2010126373A priority Critical patent/JP5578553B2/ja
Publication of JP2011253018A publication Critical patent/JP2011253018A/ja
Application granted granted Critical
Publication of JP5578553B2 publication Critical patent/JP5578553B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

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

q=FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7,

r=7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8179,

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

〔実施例3〕
次に、実施例1,2とは更に若干異なる実施例を、実施例3として、図3を用いて説明する。実施例3に係るドメインパラメータ生成装置300は、実施例1や2のドメインパラメータ生成装置100,200と同様に、演算器106,素数判断部108,出力器110などを備える。これらの要素の機能は実施例1の場合と同様であるので、同様の符号を付し、説明を省略する。実施例3と実施例1との相違は、素数q生成器102が素数q生成器302に置き換えられ、r生成器104がr生成器304に置き換えられている点である。
素数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'を使って表すこともできる。
実施例3によるテストデータp,q,rの16進数表現を以下に示す。

q=10000000000000000000000000000000000000007,

r=3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F9F,

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

〔実施例4〕
次に、実施例3と若干異なる実施例を、実施例4として、図4を用いて説明する。実施例4に係るドメインパラメータ生成装置400は、実施例3のドメインパラメータ生成装置300と同様に、素数q生成器302,演算器106,素数判断部108,出力器110などを備える。これらの要素の機能は実施例1〜3の場合と同様であるので、同様の符号を付し、説明を省略する。実施例3との相違は、r生成器304がr生成器404に置き換えられている点である。
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'を使って表すこともできる。
実施例4によるテストデータp,q,rの16進数表現を以下に示す。

q=10000000000000000000000000000000000000007,

r=40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002083B,

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

Claims (13)

  1. メモリを備える装置の処理手段がプログラム命令を実行することにより、前記装置が遂行する方法であって、前記方法は、公開鍵暗号方式において秘密鍵と公開鍵の対の生成に使用されるドメインパラメータpおよびqであって素数であるpおよびqを生成する方法であり、前記方法は:
    前記装置が、前記秘密鍵および前記公開鍵の生成に使用するセキュリティパラメータであるk,および,前記qのビット長であるNの少なくともいずれかの入力を受け取ることと;
    前記装置が、前記pの所望のビット長であるLの入力を受け取ることと;
    前記装置が、前記qを、式q=22k−aもしくは式q=2−a、または、式q=22k+aもしくは式q=2N−1+aに基づいて生成し、前記生成されたqのビット中の連続する値を別の表現にして前記メモリに保持する、ただし前記aは0<a<2である奇数である、ことと;
    前記装置が、前記qを、式q=22k−aもしくは式q=2−aにより生成した場合は、素数であるか、前記qと同じ若しくは前記qより大きな素数の合成数であるrを、式r=2L−2k−1+bもしくは式r=2L−N−1+b、または、式r=2L−2k−bもしくは式r=2L−N−bにより生成し、前記生成されたrのビット中の連続する値を別の表現にして前記メモリに保持し;前記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により生成し、前記生成されたrのビット中の連続する値を別の表現にして前記メモリに保持する、ただしbは0<bである奇数である、ことと;
    前記装置が、前記生成されて前記メモリに保持されたqおよびrに基づいて前記pを式p=2qr+1により生成し、前記生成されたpのビット中の連続する値を別の表現にして前記メモリに保持することと;
    を含む、方法。
  2. 前記生成したpがLビットの素数でない場合は、前記rおよび前記qのいずれか又は両方を再生成し、前記再生成した値に基づいてpを再生成する段階を有する、請求項に記載の方法。
  3. 前記生成したpがLビットの素数である場合は、前記生成したpおよびqを出力する段階を有する、請求項1または2に記載の方法。
  4. 請求項に記載の方法により出力されたpおよびqに基づいて、生成元g,秘密鍵,公開鍵の少なくともいずれかを生成する段階を有する、方法。
  5. 請求項に記載の方法により生成された公開鍵を公開する段階を有する、方法。
  6. 請求項に記載の方法により生成された公開鍵によって暗号化されたデータを、請求項に記載の方法により生成された秘密鍵により復号する段階を有する、方法。
  7. 請求項に記載の方法により生成された公開鍵によってデータを暗号化する段階を有する、方法。
  8. 装置の処理手段に実行されることにより、前記装置に、請求項1から7のいずれかに記載の方法を実行させるように構成される命令を備える、プログラム。
  9. 処理手段及び記憶手段を備える装置であって、前記記憶手段は、前記処理手段により実行されることにより前記装置に請求項1から7のいずれかに記載の方法を実行させるようにプログラム命令を格納する、装置。
  10. メモリを備え、公開鍵暗号方式において秘密鍵と公開鍵の対の生成に使用されるドメインパラメータpおよびqであって素数であるpおよびqを生成する装置であって、
    前記秘密鍵および前記公開鍵の生成に使用するセキュリティパラメータであるk,および,前記qのビット長であるNの少なくともいずれかの入力を受け取る手段と;
    前記pの所望のビット長であるLの入力を受け取る手段と;
    前記qを、式q=22k−aもしくは式q=2−a、または、式q=22k+aもしくは式q=2N−1+aに基づいて生成し、前記生成されたqのビット中の連続する値を別の表現にして前記メモリに保持する手段、ただし前記aは0<a<2である奇数である、と
    前記qを、式q=22k−aもしくは式q=2−aにより生成した場合は、素数であるか、前記qと同じ若しくは前記qより大きな素数の合成数であるrを、式r=2L−2k−1+bもしくは式r=2L−N−1+b、または、式r=2L−2k−bもしくは式r=2L−N−bにより生成し、前記生成されたrのビット中の連続する値を別の表現にして前記メモリに保持し;前記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により生成し、前記生成されたrのビット中の連続する値を別の表現にして前記メモリに保持する手段、ただしbは0<bである奇数である、と
    前記生成されて前記メモリに保持されたqおよびrに基づいて前記pを式p=2qr+1により生成し、前記生成されたpのビット中の連続する値を別の表現にして前記メモリに保存する手段と;
    を有することを特徴とする、装置。
  11. 前記生成したpがLビットの素数でない場合は、前記rおよび前記qのいずれか又は両方を再生成し、該再生成した値に基づいてpを再生成する手段を更に有する、請求項10に記載の装置。
  12. 前記生成したpがLビットの素数である場合は、前記生成したpおよびqを出力する手段を更に有する、請求項10または11に記載の装置。
  13. 請求項12に記載の装置により出力されたpおよびqに基づいて、生成元g,秘密鍵,公開鍵の少なくともいずれかを生成する手段を有する、装置。
JP2010126373A 2010-06-02 2010-06-02 公開鍵暗号技術におけるドメインパラメータの生成 Active JP5578553B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010126373A JP5578553B2 (ja) 2010-06-02 2010-06-02 公開鍵暗号技術におけるドメインパラメータの生成

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010126373A JP5578553B2 (ja) 2010-06-02 2010-06-02 公開鍵暗号技術におけるドメインパラメータの生成

Publications (2)

Publication Number Publication Date
JP2011253018A JP2011253018A (ja) 2011-12-15
JP5578553B2 true JP5578553B2 (ja) 2014-08-27

Family

ID=45417006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010126373A Active JP5578553B2 (ja) 2010-06-02 2010-06-02 公開鍵暗号技術におけるドメインパラメータの生成

Country Status (1)

Country Link
JP (1) JP5578553B2 (ja)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5231668A (en) * 1991-07-26 1993-07-27 The United States Of America, As Represented By The Secretary Of Commerce Digital signature algorithm
US5159632A (en) * 1991-09-17 1992-10-27 Next Computer, Inc. Method and apparatus for public key exchange in a cryptographic system
JPH08254949A (ja) * 1993-02-23 1996-10-01 Jonan Denki Kogyosho:Kk Rsa暗号方式の暗号化器及び復号器に使用する高速ベキ乗剰余演算法
JP3706398B2 (ja) * 1993-06-18 2005-10-12 松下電器産業株式会社 楕円曲線による署名、認証及び秘密通信方式

Also Published As

Publication number Publication date
JP2011253018A (ja) 2011-12-15

Similar Documents

Publication Publication Date Title
EP3913850A1 (en) Key management method and related device
CN108418686B (zh) 一种多分布式的sm9解密方法与介质及密钥生成方法与介质
JP5011264B2 (ja) セキュリティ強化のための転置データ変換
CN106487503B (zh) 基于剪裁的霍普菲尔德神经网络的多元公钥密码系统和方法
CA2792267C (en) Verifying implicit certificates and digital signatures
CN111010277B (zh) 密钥交换方法、装置和存储介质、计算装置
JP2010277085A (ja) Rsaアルゴリズムにおける素数生成の保護
Glas et al. Prime field ECDSA signature processing for reconfigurable embedded systems
CN104126284A (zh) 生成数字签名
US9172530B2 (en) Apparatus and method for generating secret key for ID-based encryption system and recording medium having program recorded thereon for causing computer to execute the method
TW201320701A (zh) 資訊處理裝置、資訊處理方法及程式
WO2016088453A1 (ja) 暗号化装置、復号装置、暗号処理システム、暗号化方法、復号方法、暗号化プログラム、及び復号プログラム
CN115694777A (zh) 基于同态加密的隐私集合求交方法、装置、设备及介质
JP2021086158A (ja) 格子ベースの暗号鍵生成方法及び電子署名方法
JP6607257B2 (ja) 秘密計算システム、秘密計算装置、および、秘密計算方法
CN109600225B (zh) 一种密钥交换方法、装置和存储介质
JP4690819B2 (ja) 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置
CN111314080B (zh) 一种基于sm9算法的协同签名方法、装置、介质
JP5578553B2 (ja) 公開鍵暗号技術におけるドメインパラメータの生成
CN112887097A (zh) 基于sm2椭圆曲线的签名方法、相关装置、及存储介质
CN115276961B (zh) 基于ot协议的数据处理方法及装置
JP5964759B2 (ja) 計算システム
WO2022091217A1 (ja) 鍵交換システム、端末、鍵交換方法、及びプログラム
CN111510299B (zh) 联合数字签名生成方法、电子设备和计算机可读介质
RU2558621C2 (ru) Способ шифрования сообщения, представленного в виде битовой строки

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140108

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140402

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140423

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140527

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140603

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: 20140701

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140702

R150 Certificate of patent or registration of utility model

Ref document number: 5578553

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250