双曲線暗号の設計ツール
【課題】2次双曲線群はその位数が一定で初等的取り扱い方が可能であるが、複数の単位暗号化装置を具備する鍵生成装置において多数の曲線パラメータの組を特定する作業が必要になる。例えば、整数論的関数で、法p及び曲線パラメータa,b,cを定めなければならない。従って、これ等の曲線パラメータ等を簡易に生成できるツール(ソフトウェア)を提供する。
【解決手段】双曲線暗号の設計ツールであって、素数テストツール、2次双曲線群設計ツール、2次双曲線群解析ツール、拡張2次双曲線群解析ツール等から構成されている複合ツールで、このツールだけで設計と解析が完結する構成を有している。
【解決手段】双曲線暗号の設計ツールであって、素数テストツール、2次双曲線群設計ツール、2次双曲線群解析ツール、拡張2次双曲線群解析ツール等から構成されている複合ツールで、このツールだけで設計と解析が完結する構成を有している。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、拡張された2次双曲線群の離散対数を利用した双曲線暗号の設計ツール(ソフトウェア)及び鍵生成方法に関するものである。
【背景技術】
【0002】
2005年の7月に楕円曲線暗号に代わる双曲線暗号の探索において2次双曲線群が発見された後、その成果は2007年2月特許出願された「二次双曲線群を使用する鍵生成方法、復号方法、署名検証方法、鍵ストリーム生成方法および装置」(特許文献1)に結び付けられた。その後2次双曲線群の研究が進み、法nが合成数である拡張2次双曲線群、特に法nが素数pのべき乗(pn)である場合に拡張され、拡張2次双曲線半群、拡張オイラー関数、逆元計算後回し法、2次双曲線群を用いた素因数分解の方法等の成果が2008年3月の特許出願「双曲線暗号の鍵生成方法」(特許文献2)に開示されるに至った。
【特許文献1】特開2008-203548号
【特許文献2】特開2009-223035号
【0003】
楕円曲線暗号で使用される楕円曲線関数は3次関数であり、双曲線暗号で使用される2次双曲線関数は整数論的関数ではあるが実質的には3次関数であるので、楕円関数を限定すれば双曲線関数と等価になる。どの様な数学的な条件下で等価になるかはまだ明らかではないが、双曲線暗号に近い形で楕円曲線暗号を形成することは可能だろう。更に、前記特許文献で案出した同値対や拡張2次双曲線半群等の概念が類似の形態で出現する可能性は高い。しかし、2次双曲線群は具体的に種々の条件が特定されているので、より明確な結果が出現すると予想される。
【発明の開示】
【発明が解決しようとする課題】
【0004】
2次双曲線群はその位数が一定で初等的取り扱い方が可能であることから、その理解に困難な点はないが、その全体像が複雑であることは否めない。特に2次曲線の判別式D及び当該2次曲線自体が平方非剰余であること等の制限から、複数の単位暗号化装置を具備する鍵生成装置において多数の曲線パラメータの組を特定する作業が必要になる。例えば、
【数1】
・・・・(1―1)
という整数論的関数で、法p及び曲線パラメータa,b,cを定めなければならない。
従って、これ等の曲線パラメータ等を簡易に生成できるツール(ソフトウェア)があれば大変に便利である。また、双曲線暗号はまだ開発が始まったばかりであり、初心者が簡易に2次双曲線群を構成でき、かつ、その解析ができれば、その理解を助け、双曲線暗号の普及に拍車が係るに違いない。
【0005】
曲線パラメータ特定作業を簡易に生成できるツールとはどの様なものだろうか。双曲線暗号を全く知らない者がその曲線パラメータを特定するとき、その選択肢を行使でき、色々と試してみる自由度を有していなければならないだろう。そもそも法pの特定はどうすべきだろうか。選択した法nが素数なのか合成数なのかも知らなければならない。当該2次双曲線群の最大位数kqを得るためには、ベースポイントP(x)の選択にも配慮しなければならない。選択し特定した2次双曲線群の下で双曲線暗号を構成したとき、その2次双曲線群がその利用に適したものか否かを判定するためには、初心者でも容易に解析でき、かつ、その結果を表示できるツールにしておきたい。
【0006】
作成した2次双曲線群を具体的に利用するためにはファイル構成を採用することが望ましい。他のアプリケーションソフトウェアでの簡便な利用が可能になる。
【課題を解決するための手段】
【0007】
本発明に係る双曲線暗号の設計ツール(HCC Design Tools)は複合ツールであり、素数テストツール(Prime Test Tool)、2次双曲線群設計ツール(HCG
Design tool)、2次双曲線群解析ツール(HCG Analysis tool)、拡張2次双曲線群解析ツール(Extended HCG Analysis
tool)等から構成されており、このツールだけで設計と解析が完結する構成を有している。
【0008】
素数テストツールは法nが素数か否か判定し、素数pをその後利用するときはその採択を決定できる構成を有している。Germann素数判定機能、素因数分解表示機能はこの素数テストツールの特徴になっている。
【0009】
2次双曲線群設計ツールでは、曲線パラメータの選択窓を有し、諸条件を満たす曲線パラメータ値が提示される。設計者はその中から任意に曲線パラメータを選択でき、かつ、新たな曲線パラメータへの更新も行うことができる。選択された曲線パラメータは、その旨の表示が行われる。特定の2次双曲線群に対応する採用された曲線パラメータの組は、保持され容易にその表示を行うことができ、かつ、必要な装置分だけ保存することができる。この組の一覧は、グリッドビュウ(Grid View)においてリスト化し、編集できる機能を有している。
【0010】
2次双曲線群解析ツールでは、確認された曲線パラメータで特定された2次双曲線群の解析及び集計が行われ、その部分群の全体が明らかにされる。位数kgを有する共役部分群の個数、ベースポイントP(x)、及び当該部分群の構成要素の表示はこの解析ツールの特徴に成っている。設計者は特定された2次双曲線群の全体像、及び構成を知り、その採否を決定する材料にすることができる。
【0011】
拡張2次双曲線群解析ツールは、拡張2次双曲線群の解析、特に法nが合成数である場合の拡張オイラー関数(GCD totient)の解析を行うことができる。拡張オイラー関数は、発明者により新たに発見された整数論的関数で、この特許明細書でその詳細が明らかにされる。しかし、このツールでは設計ツールとして、その項別級数表示、要素(GCD
set)解析等を行って、その結果を表示するにとまっている。ただ、拡張オイラー関数のグラフィクスツール(Graphics tool)も用意し、研究者等の利用の便宜を図った。
【発明の効果】
【0012】
本発明に係る双曲線暗号の設計ツールは、複合ツールで設計と解析が完結する構成を有し設計者に使い易くなっている。各ツールの固有な構成からは以下の効果を奏する。
【0013】
素数テストツールは本発明に係る設計ツールで採用される法pを選択する機能を有しており、単なるテストだけを行うものではない。そのGermann素数判定機能は、選択した2次双曲線群の位数が法pの下でも素数であることを保証する。これは任意にベースポイントを採択する自由を設計者に提供する効果を奏する。従って、設計者が係る法pを採用する手助けになる。素因数分解表示機能は、言うまでも無く法nが合成数でどの様な素因数から構成されるかを簡明に知らしめる。
【0014】
2次双曲線群設計ツールの曲線パラメータの選択窓は、諸条件を満たす曲線パラメータの候補を提示し、その選択を設計者に委ねる効果を有する。提示されるパラメータ値は何度でも更新することができるので、設計者は小さ過ぎるパラメータ値若しくは法pに近いパラメータ値を避け、適当な大きさの値を選択できる。特定の2次双曲線群に対応する採用された曲線パラメータの組は、ソフトウェア内で保持され、容易にその表示を行うことができ、かつ、必要な装置分だけ保存することができると共に、何時でも更新することができる。特に、グリッドビュウによりリスト化し、編集できる機能を有しているので、簡易に必要な数の組を揃えるのに便宜である。
【0015】
2次双曲線群解析ツールでは、曲線パラメータで特定された2次双曲線群の解析及び集計が行われ、その部分群の全体が明らかにされることから、設計者は採用した曲線パラメータの組が適当な群構成を有していることを確認でき、特に群位数が合成数kgである場合に当該群位数の約数を位数とする部分群の確認を行うことができる。法nがGermann素数で、その群位数が素数である場合には、ゼロ元を除く全てのベースポイントが最大位数kgであることを確認することができる。
【0016】
拡張2次双曲線群解析ツールで取り扱う拡張オイラー関数Φは、拡張2次双曲線群の位数kg及びその約数を位数とする共役部分群の個数を与える重要な意義があり、位数kgを有する部分群の個数はΦ(kg)個である。ここで共役とは位数kgが同一で同型である部分群間の関係を言う。その項別級数表示は、従来のオイラー関数との対比を明示するもので、その拡張性を明示する表示方法である。積集合の要素表示は、GCD演算と部分群位数kiの積を集合(積集合)と捉えた場合の1要素を与えるもので、位数k(k=Πki)の構造を明らかにする。従って、要素表示の具体的計算は位数kの構造そのものを明らかにする。
【0017】
拡張オイラー関数のグラフィクスツールは、拡張オイラー関数Φを具体的に計算しグラフ表示するものであり、従来のオイラー関数φとの差異を視覚的に明示する効果を奏する。
【発明を実施するための最良の形態】
【0018】
以下、本発明に係る種々の実施例について説明する。
【0019】
<第1実施例>
図1は、本発明の2次双曲線群設計ツール(ソフトウェア)の全体図であり、素数テストツール、2次双曲線群設計ツール、2次双曲線群解析ツール、及び拡張2次双曲線群解析ツール等から構成されている。このように各ツールを1個のソフトウェアに統合し、かつ、フロントに並べたので、設計者にとって使い回しの良いツールとして利用することができる。設計者は、図1左上の素数テストツールで法pを決めた後に、図1右の2次双曲線群設計ツールで曲線パラメータの各組を採用し、図1左中の2次双曲線群解析ツールで採用した2次双曲線群の適否を確認し、採用した各2次双曲線群をファイルの形で保存することができる。
【0020】
このソフトウェアの開発は、2008年5月にマイクロソフト社の「Visual Studio 2008」を用いて、VC++で行われた。NET.Framework V3.5のWindows(登録商標)プログラムである。開発開始後、約半年の作業で原型が出来上がり、その後半年掛けてバグ抜きや改良が行われた。同時にデモンストレーション用のアプリケーションソフトウェアも開発されたが、本発明との直接の関連が薄いので別の機会に開示する予定である。ただ、このツールで採用された2次双曲線群のパラメータファイルが利用できる構成が採用されている。
【0021】
図2は、本発明の素数テストツールであり、本発明に係る設計ツールで採用される法pを選択する機能を有しており、単なるテストだけを行うものではない。素数判定の方法には「篩(ふるい)法(sieve method)」を用いており、高級な方法は採用していない。その1の理由は本発明に係るツールが主にデモンストレーションを目的として開発され、法pが大きなビット数を有することは前提としていないことを挙げる。法pに大きな数値を選択した場合、その後の群演算に大きな負担となり、事実上群演算は困難になる。その第2の理由は、単純ループで割り算を行うのでPCによる高速演算に向いている、ことにある。
【0022】
図3は、法nとしてn=1023をテストした結果を表示してある。この結果は、
「n=3^1*11^1*31^1」、「_1023 is not a prime」であるので、法nが合成数で素因数3,11,31の積であることを示す。次に図3において法nとしてn=1031をテストした結果を表示してある。この結果は、「n=1031^1」、「1031
is a prime」であるので、法nが素数であることを示す。テストは第1のテキストボックス(textBox1)にn値を入力し、テストボタン「Test」を押下することにより行われる。
【0023】
篩法の具体的なアルゴリズムは図4に示されている。図4で、「Start」から開始し、最初に法nの候補値である数値を入力し、「Test」を押下すると、最初は小さな素因数(2,3,5,7)を割り数値kとした直接の割り算が行われる。素数密度の関係からも、n値に小さな素因数が含まれる可能性が高いからである。
【0024】
その余りが0であればその素因数を値nが有するので当該割り数値kを保存し、余りが0でなければその素因数を値nが有していない、と判定できる。
【0025】
その素因数をn値が有していれば、新たなテスト値をn←n/kとして、残りの素因数を探し出すことになる。但し、素因数のべき乗の場合を考え、同一の素因数による割り算が繰り返され、割り切れない場合にのみ前記割り数値kの更新が行われる。割り数値kの値が候補値である値nの平方根(√n)を越えた場合には、1以外の如何なる素因数をも有していないので、当該n値を素数と判定できる。
【0026】
本発明に係る素因数分解表示の方法は、以下に示すように主に2通りあるが、実際には後者の方法が採用されている。
【0027】
第1の方法は素因数分解が終了し、素因数の個数Iが判明した場合に、各素因数毎にテキスト列を増やしてゆく方法(テキスト増加法)である。例えば、法nとしてn=1023を選択したとき、最初に空文字列「String^myText=””」が定義された後に、各素因数毎に「myText=3^1」>「myText=3^1*11^1」>「myText=3^1*11^1*31^1」とテキストの長さを増やしてゆき、リスト(listBox1)への書き込みは一度に行う
「listBox1->Items->Add(myText)」。
【0028】
第2の方法は、リスト内の当該行のデータ「myText=listBox1->Items[i]->ToString()」を読み取り、新たなデータを追加し「myText=myText+”*”+p+”^”+a」(p:当該素因数、a:当該ベキ数)
、当該行を削除した後に追加後のデータを書き込む方法(書き込み行更新法)で、書き込みと削除は素因数の個数IにつきI回行われる。即ち、各素因数毎に当該行の表示が「n=3^1」>「n=3^1*11^1」>「n=3^1*11^1*31^1」と切り替わってゆく。この方法は既にある表示をそのまま生かす点で便利である。
【0029】
図5は、本発明に係るGermann素数判定方法を開示したフロー図である。最初に試し数pを入力し、前記図4に示した篩法のアルゴリズムにより当該p値が素数か否か判定し、その後q=(p+1)/2を計算した後、再び篩法のアルゴリズムにより当該q値が素数か否か判定する。当該q値が素数であれば、対応する素数pはGermann素数である。当該q値が素数でなければ、対応する素数pはGermann素数ではない。
【0030】
図6は、本発明に係るGermann素数判定機能を実行した図である。試し数n=1237を素数テストした結果素数と判明したので、当該行「1237 is a
prime.」を青く選択した後に「Judge」ボタンを押すと、Germann素数判定が行われる。
【0031】
Germann素数とは、素数pに対し値q=(p+1)/2も素数であるような素数pを言う。このような素数の組はその存在密度は高くないが、無限に存在することが知られている。2次双曲線群では、法phの場合、その群位数kはk=ph-1(p+1)/2であるので、h=1の場合は法pがGermann素数であることは当該2次双曲線群で素数位数を獲得することを意味する。
【0032】
そして、その群位数が素数である場合には、ゼロ元を除く全てのベースポイントが最大位数kを有する部分群であることが、理論上明らかになっている。即ち、この様な2次双曲線群では位数qを有するφ(q)=q-1個の部分群と位数1を有するゼロ元1個で構成される。従って、ゼロ元を避ければ、ベースポイントP(x)が最大位数を与えるか否かの判定をする必要がない。
【0033】
図7は、法pが素数と判定された後に、その後の曲線パラメータの選定において当該法pを採用する方法を開示する。判定された素数を青く選択した後にラジオボタン(radio button)「Yes」をクリックすると、「p=1237 is adopted.」と表示されて、その後の法pの採用が確定する。
【0034】
図8は、2次双曲線群設計ツールの上段部を示す。上部には2次双曲線方程式が画像(picutureBox1)として表示され、これから決定すべき曲線パラメータの配置を確認することができる。このソフトウェアでは最初に曲線パラメータcを決定する構成にしたが、先に曲線パラメータcを決定する構成にしても良い。何れにしても、判別式D/4=c2+4aが平方非剰余になるように双方を選択しなければならない。2次双曲線群の群位数kをk=(p+1)/2の関係に保つためである。
【0035】
曲線パラメータc及びaでは何れの値も法pにおける剰余群(Z/pZ)に従うので、通常値p以下の値を入力する。テキストボックス(textBox2)に直接入力しても良いし、「Generate‘c’」ボタンを押して乱数から採用しても良い。ただ、前記法pの指定が行われていない場合には、この選択はできないようになっている。曲線パラメータcの採用は「Select‘c’」ボタンの押下により行われ、「c=1
is adopted.」のように表示される。
【0036】
また、同時に、前記判別式の条件を満たす複数の曲線パラメータa値4個がリストボックス(listBox2)に列挙される。曲線パラメータaの選択は乱数に基づいているので、「Select‘c’」ボタンの押下を再度行うと別の候補値4個が提示される。これは設計者が適当な選択をする便宜となる。図9のように、リストボックス内の1個の値を青く選択し、「Select‘a’」ボタンの押下を行うと、その採用と共に「a=311
is adopted.」のように表示される。
【0037】
図10は設計ツールの中段部で、曲線パラメータb値及びd値を定める。最初に「Renewal」ボタンを押下すると、曲線パラメータb及びdの候補がリストボックス(liastBox3)内に表示される。この条件は(d2+cd-a),(b2+cb-a)が平方非剰余となることである。即ち、(x2+cx-a)
が平方非剰余となるようなx値を乱数の中から選び出し、リストアップする。
【0038】
このうち、曲線パラメータdはゼロ元P(d)≡Oを定めることに相当し、曲線パラメータbは関数値のゼロ点であるが、必ずしもゼロ元とは関係がない。しかし、特殊な関係であるb=dのような制約下でも、2次双曲線群の特性が損なわれることはない。「Select‘d’」ボタン若しくは「Select‘b’」ボタンを押すと、それぞれのパラメータ値の採用が決められ、「d=55
is adopted.」若しくは「b=189 is adopted.」のように表示される。
【0039】
図11は設計ツールの下段部で、曲線パラメータの組の保存を行う。保存スタックは20段用意されており、20組の各曲線パラメータを保存することができる。現スタック番号はテキストボックス(textBox3)に表示されており、この番号は「Num.Up」ボタンの押下で上昇し、「Num.Down」ボタンの押下で下降する。従って、素数テストツールで定めた法p値、本設計ツールの上段で定めた曲線パラメータc値、a値、本設計ツールの中段で定めた曲線パラメータd値、b値の組が、一体として当該スタック番号に記憶される。
【0040】
曲線パラメータ等の設定が終了した時点で、「Import」ボタンを押すと、前記曲線パラメータ等が現に表示されているスタック番号に記憶され、仮に前データが存在した場合にも上書きが行われる。また、インポートされた曲線パラメータ等はリストボックス(listBox4)内に表示される。なお、現スタック番号の記憶内容がリストボックス内に表示されるので、「Num.Up」ボタン若しくは「Num.Down」ボタンの押下で、その表示も変化する。
【0041】
「SetData」ボタンは解析のために現に表示されたデータを使うためのもので、その押下により、解析用の場所に当該曲線パラメータ等を複写する。橙色の「EditParam」ボタンは、選択された複数のパラメータの組をリストアップし、その一覧を表示する等ために使われる。これについては以下に詳しく解説する。
【0042】
図12は、本発明によるパラメータリスト(ParamList)であり、採用された曲線パラメータ等の一覧(右段)と共に、群計算の初期条件等を指定する領域(左段)を有している。このパラメータリストは、前記「EditParam」ボタンの押下により出現する。前記スタックは採用された曲線パラメータ等の記憶はできるが、その一覧には支障がある。そこで、本発明によるパラメータリストが採用され、その訂正等の便宜を図った他、併せて設計者が群計算の初期条件等を指定できるようにもした。このような初期条件は、前記アプリケーションソフトウェアへ提供され、利用されるもので、このツールとの直接の関係はない。
【0043】
図12右段のGridViewで作成されたパラメータリストは、本発明が曲線パラメータ等の生成ツールであることを配慮し、数多くのショートカットメニュー(Sort
Cut Menu)を有している。ショートカットメニューはリスト(gridView1)内で右クリックすると出現し、図13のような内容を有している。パラメータリスト内の数値は自由に変更できるが、前記諸条件を満たす保証は一切ない。その変更は、「OK」ボタンを押すと、更新されて保存される。この更新は、前記スタックにおいても行われる。「Cancel」ボタンでは何の変更も反映されない。
【0044】
図13のショートカットメニューで、「ClearRowData」メニューは当該選択行のデータを全て0値にする。「RestoreRowData」メニューは、前記変更が行われた後にスッタクに記憶された元の値に戻したいときに使われる。「DeleteSelectedRow」メニューは、当該選択された行を削除し、新たに最終行(第20行目)に1行追加する操作である。従って、当該行以下の既存のデータ行が1個ずつ繰り上がる。「CopySelectedRow」メニューは、当該選択された行のデータをコピーし、保存用のスタックに退避する。「PasteCopiedRow」メニューは、前記保存用スタックのデータを当該選択行に貼り付ける。「InsertNewdRow」メニューは、選択行の位置に新たに1行挿入する操作である。選択行以下の既存の行は1行ずつ繰り下がり、最終行は消滅する。
【0045】
「ReCreateRowData」メニューは、自動設計ツールでもある。与えられた「Modulo p」値を法pとする曲線パラメータを、前記諸条件を満たすように、乱数を利用して自動生成する。従って、このメニューの利用のためには、予め適切な法p値を当該選択行上に入力しておかなければならない。自動選択の後に当該行のデータを元に戻すには、「RestoreRowData」メニューを使うことができる。
【0046】
図14には、「ReCreateAllData」メニューを実行した後のリストが表示されている。「ReCreateAllData」メニューも自動設計ツールで、全ての行のデータを第1行目の「Modulo
p」値のもとで自動選択する。従って、このメニューの利用のためには、予め適切な法p値を第1行目に入力しておかなければならない。自動生成で、偶然にパラメータ値の2個が同一値の場合は、当該後に生成されるデータにつき再度の自動生成が行われるが、通常同一値が出現することは稀である。
「SetDataToAnalyze」メニューは、前掲の「SetData」ボタンと同じ役割であり、当該選択行のデータを解析のために提供する。その実行は、当該選択行のデータを解析用の場所に複写する。
【0047】
図12左段の群計算の初期条件等を指定する領域は、このツールとの直接の関係はなく、アプリケーションソフトウェアのために提供されているが、一応の説明をする。「Initia Oop Cycles」項目は、群計算の暗号化開始設定を遮蔽するために必要な群計算の回数を指定する。秘密鍵との連携が取られる。「KeyMargin」項目は、群演算の最低演算回数を指定するもので、これも秘匿性の向上のためである。「InitialWorkingKey」項目は、複数の暗号化装置が連帯して作動するときの初期値を与える。
【0048】
「InitialBP(x)」項目は、ベースポイントを与えるx値を選択する項目で、x値は任意に入力できるが、所定の要件を満たさなければならないことから、そのテストが行われる。選択行の曲線パラメータ等の下でそのベースポイントが有効か否かは、「BP
Test」ボタンの押下で判定され、その結果が表示される。「EncryptMethod」項目は、その暗号化方式の選択のために使われる。
【0049】
図15は、本発明に係る2次双曲線群解析ツールの全体図であり、与えられた曲線パラメータ等の下での2次双曲線群の構造を明らかにする。
【0050】
図16は、本発明に係る解析集計アルゴリズムを示したフロー図で、それぞれ上半部は解析プロセス、下半部を集計プロセスを開示する。
【0051】
解析プロセスでは、ベースポイントと成り得る全てのx値が対象となり、そのベースポイントP(x)を出発点とする部分群Q(x)の位数kgが調べられる。最初にx=0の条件から始め、
【数2】
が平方非剰余であるかを調べる。具体的には、
【数3】
が計算され、その値が-1(平方非剰余)か+1(平方剰余)であるかを調べる。そのτ(x)値が平方非剰余であれば、そのベースポイントP(x)は当該2次双曲線群の元であり、当該ベースポイントP(x)を出発点とする部分群Q(x)の位数kgを調べる。
【0052】
k=1から始め、kP(x)を計算し、その値がゼロ点O=P(d)に一致するかが調べられる。実際にはx=dであれば足りる。k=kgのとき、kgP(x)=Oであれば、そのkg値が当該部分群Q(x)の位数になる。計算された群位数は、当該x値と共にテキストファイルに出力される。その後の集計プロセスの便宜のためである。x値は剰余群Z/pZのもとで定義されているのでp個の値が可能である。2次双曲線群の理論によれば、平方非剰余を与えるx値の数は法pの下では最大(p+1)/2個で、当該2次双曲線群の元の数、位数kに一致する。即ち、
【数4】
である。
【0053】
前記解析プロセスの終了後、集計プロセスを始める。最初にファイルの先頭から1行ずつ読み出し、当該計算された位数kgを読み取り、既に同一のkg値が存在する場合にはその値の計数個数を+1する。同一のkg値が存在しない場合には当該kg値の欄を新たに設け、その計数個数を1個とする。この方法により最後の行を処理した後、群位数kgの大きさの順番に並べ替える。表示リストには、存在したkg値の異なる値の数の分だけ大きさの順に項別表示する。
【0054】
図17は、解析で用いる曲線パラメータ値等の確認を行っている。「ConfirmSet」ボタンを押すと、前記「SetData」ボタン等で指定した曲線パラメータ値等の確認を、リスト(listBox5)内の表示により行うことができる。
この例では「p=1031,a=244,b=167,c=1,d=145」と表示されている。
【0055】
図18は、解析実行のために「Analyze」ボタンを押したときの、その実行結果を表示している。その解析プロセスは図15上段に示されている。実行結果は、ファイルにも出力されるが、リストにも表示することにした。例えば、「Q(1);
kg=129;」とあるのは、ベースポイントP(1)を始点として群演算を開始したとき、129P(1)に至ったとき始めてゼロ元Oと一致したことを意味する。従って、このベースポイントP(1)を有する部分群Q(1)の位数はkg=129と言うことになる。なお、法pの値が大きく、群演算の負担が大きいときには、プログレスバーでその実行の進行度を知ることができる。
【0056】
リスト内には全ての実行結果が表示されているが、このままでは群構造全体の有効な情報を引き出すことはできない。そこで、「DataSum」ボタンを押して、データの集計、整理を自動的に行う。この集計は前記ファイルの検索により実行され、その集計プロセスは図15下段に示されている。
【0057】
例えば、「The number of Q(x) with kg=516 is 168.」とあるのは、この2次双曲線群で位数kgを有する部分群Q(x)でkg=516であるものの個数は、全部で168個であることを意味する。リスト上部には、「rank
k=516」と表示され、発見された部分群位数のうち最大のものを表示している。これは2次双曲線群の群位数kが516であることを示している。2次双曲線群の理論によれば、位数kgを有する共役部分群Q(x)の個数は、法pが素数であるときφ(kg)個であるので、φ(516)=168により、その理論の確認をすることができる。しかし、ここでは理論と関係なく、群演算のみが実行されその結果が表示されている、と言う点に注意しなければならない。理論は現象を説明するために後から付けた理屈に過ぎない。
【0058】
設計者は、図19のリスト内の1行を青く選択した後に「Precisely」ボタンを押すと、その集計結果の詳細を知ることができる。図20は、その様な詳細結果の一例で、図19のリスト内の第2行目選択した場合の結果である。群位数kg=258を与える共役部分群Q(x)の個数は84個あり、それ等の一覧が昇順に「Q(16);Q(17);Q(31);Q(43);・・・」のように表示されている。
【0059】
ここでは、更に各部分群の詳細な構成を表示することができる。図21は、その様な詳細結果の一例で、図20に示された部分群Q(16)の詳細な構造を示してある。この表示は、図20の該当部分群を青く選択した後、再び「Precisely」ボタンを押すとその表示をすることができる。
「1P=(16,326),2P=(397,609),3P=(683,901),4P=(865,372),5P=(723,335),・・・」と表示されたのは部分群Q(16)の258個の各元に対応する。各数値は、例えば1P=P(16)、2P=
P(16)+P(16)の意味である。
【0060】
演算結果の取得には、リストボックス内で右クリックしたときに現れるショートカットメニューを利用することができる。「Copy」、「Paste」、及び「SellectAll」のように、複写、貼り付け、及び全選択のメニューを用意した。
【0061】
図6は、本発明に係る拡張2次双曲線群の解析ツールである。拡張2次双曲線群では、法nは合成数で、法が素数の場合に比べてかなり複雑な構造を有する。実際この数年間で理論的な究明が進んで、かなりの事実が明らかになっている。しかし、未だ明らかでなく、数値計算のみの手探りの分野も少なくない。このツールを提供する目的は、主に研究・開発の用途である。
【0062】
設計者が、法nの候補と考える数値をテキストボックス(textBox4)に入力し、「CalcEHCG」ボタンを押下すると、図22に示すように、リストボックス(listBox6)内に種々の計算結果が表示される。何を計算したのかは、順次説明することにする。
【0063】
図23では、n=1027の場合に、その計算結果を全て明示した。
第1行目の「EHCG
modulo: n=1027=13^1*79^1」は、法nの素因数分解表示で、これにより実際に法nが合成数であることが示される。
第2行目の「GruopRank:
k=280=7*40」は、拡張2次双曲線群の群位数がk=280であることを示し、次の積表示は拡張形でない2次双曲線群の群位数k1,k2との関係が示されている。法nの構成素因数p1=13,p2=79から生成される2次双曲線群の群位数k1,k2は、k1=(p1+1)/2=7,
k2=(p2+1)/2=40であり、ここではk=k1k2の関係が成立していることを確認できる。GCD(k1,k2)≡(k1,k2)=1だからである。(k1,k2)≠1の例は、後で取り扱う。
第3行目の「Max rank of sub-groups: kq=280;」は、群位数の最大値がkq=280であることを示している。2次双曲線群の理論によればkq=LCM(k1,k2)≡[k1,k2]であり、kq=
[7,40]=280であるので、理論値と一致する。
【0064】
第4行目以下には、本発明に係る拡張オイラー関数(GCD totient)Φm(x)の計算結果が示され、従来のオイラー関数(Euler’s totient)φとの比較が行なわれている。
例えば「φ(280)=96;Φ(280)=96;」とするのは、双方の値が一致することを示すが、この理由は(k1,k2)=1だからであり、(k1,k2)≠1の場合はこの様にならない。なお、次数m=2であるが、省略表示されている。
「Φ(280):=+280*1-140*1-56*1+28*1-40*1+20*1+8*1-4*1」の各項の係数は1であるので、
拡張オイラー関数の値はオイラー関数の値と一致する。これは、次のオイラー関数に係る級数公式と等価である。但し、μはメービウス関数である。
【数5】
・・・・(6―1)
【0065】
後半の「Σφ(d|kq)=280;ΣΦ(d|kq)=280=1*kq;」という表示は、次のオイラー関数に係る公式
【数6】
・・・・(6―2)
を、実際に各項を計算して確認している。ここでも(k1,k2)=1の場合は、拡張オイラー関数の値はオイラー関数の値と一致する。
【0066】
次の行の「Σ(-1)^(kq/d)Φ(d|kq)=0=-96+48+24-24-16+24+12+8+6+4-4+6+4+2+1+1」は拡張オイラー関数の計算式であるが、次のオイラー関数に関する公式
【数7】
・・・・(6―3)
に対応している。
【0067】
次の行の「Presentation of the GCD Set」は、本発明に係る拡張オイラー関数の導出の過程で考慮される積集合(the GCD
Set)の要素(GCD component)hの計算値であり、m次までの要素が全て計算されている。
【0068】
図24では、n=1035の場合に、その計算結果を全て明示した。
第1行目の「EHCG
modulo: n=1035=3^2*5^1*23^1」は、法nの素因数分解表示で、これにより実際に法nが合成数であることが示される。
第2行目の「GruopRank:
k=216=6*3*12」は、拡張2次双曲線群の群位数がk=216であることを示し、次の積表示は拡張形でない2次双曲線群の群位数k1,k2,k3との関係が示されている。法nの構成素因数p1=3,p2=5,p3=23から生成される2次双曲線群の群位数k1,k2,k3は、k=ph-1(p+1)/2であるので、k1=6,
k2=3, k2=12であり、ここではk=k1k2k3の関係が成立していることを確認できる。(k1,k2,k3)=3≠1であるので、群位数間に共通の素因数が存在する。なお、次数m=3であるが、省略表示されている。
第3行目の「Max
rank of sub-groups: kq=12;」は、群位数の最大値がkq=12であることを示している。2次双曲線群の理論によればkq=
[k1,k2,k3]=[6,3,12]=12であり、理論値と一致する。
【0069】
第4行目以下には、本発明に係る拡張オイラー関数Φm(x)の計算結果が示され、従来のオイラー関数φとの比較が行なわれている。
例えば「φ(12)=4;Φ(12)=104;」とするのは、双方の値が一致しないことを示すが、この理由は
(k1,k2)≠1だからである。(k1,k2)≠1の場合、拡張オイラー関数Φm(x)の級数表示の各項における係数は1以上の整数になる。例えば、「Φ(12):=+12*18-6*18-4*2+2*2」では、それぞれの整数係数は18,18,2,2である。これは拡張オイラー関数Φm(x)の級数表示が
【数8】
・・・・(6―4)
と言う形になるからである。Fは倍率関数と呼んでいるが、F=1であれば(6―1)式と一致する。
【0070】
後半の「Σφ(d|kq)=12;ΣΦ(d|kq)=216=18*kq;」という表示は、次の拡張オイラー関数に係る公式
【数9】
・・・・(6―5)
を、実際に各項を計算して確認している。
【0071】
次の行の「Σ(-1)^(kq/d)Φ(d|kq)=0=-104+78-4+26+3+1」は、拡張オイラー関数に係る公式(証明は後出)
【数10】
・・・・(6―6)
の計算値であり、理論との一致を確認することができる。
【0072】
次の行の「Presentation of the GCD Set」は、本発明に係る拡張オイラー関数の導出の過程で考慮される積集合の要素hの計算値であり、m次までの要素が全て計算されている。
【0073】
図22の「Graphics」ボタンは、拡張オイラー関数のグラフィックツールを起動する。これについての詳細を以下に説明する。
【0074】
図25は、拡張オイラー関数のグラフィックツールで、主に視覚上オイラー関数との差異を明らかにする。特に無限遠(n→∞)での拡張オイラー関数の漸近曲線等の研究道具として最適である。図25の「X-mag」値及び「Y-mag」値は表示倍率の変更を可能にし、「Origin」値は原点の移動を可能にする。下段の「Reset」ボタンは、グラフ上に様々な書き込みを行ったものをクリアするときに使い、常に図25の初期状態を回復する。
【0075】
図26は前記グラフィックツールで、「DispAll」ボタンを押したときの更新表示で、オイラー関数値(Green) φ(n)と拡張オイラー関数値(Cyan) Φm(n)の表示を行っている。双方の値が一致している場合には、色の濃さの違いからオイラー関数値(Green)だけが記載されているように見える。
【0076】
図27は、オイラー関数値と拡張オイラー関数値の比(Ratio)の表示で、前記グラフィックツールで、「Ratio」ボタンを押したときの更新表示である。表示上、比(Ratio)は黒点で示されている。拡張オイラー関数値Φm(n)とオイラー関数値φ(n)との比は理論的にも整数で、割り切れると言うことが知れていて、その確認を行うことができる。また、当該比の平均値(AveRatio)が赤線で、Log平均値(LogRatio)が青線で、それぞれ示されている。
関数値の表示等を行った後に、マーカ(marker)の書き込みをすることができる。
【0077】
図28は、n値にn=550を指定し「Express」ボタンを押したときの図面であり、当該n値に該当する場所に、当該n値から派生する部分群の最大位数kqにつき、拡張オイラー関数値Φm(kq)を赤線で、オイラー関数値φ(kq)を青線で示した図である。欄外には、kq=30,
φ(kq)=8, Φ(kq)=32, Ratio=4と数値が示される。このマーカは、表示窓(pictureBox1)上でのマウスの左クリックでも表示することができる。
【0078】
図29は、関数表示機能の例示であり、前記マーカと同様の補助表示を与える。表示窓(pictureBox1)上でのマウスの右クリックで生じるコンテキストメニューでは、関数表示の一つを選択することができる。経験から、y=x^0.7以上の傾斜を有する関数は採用されず、y=Log(1+x)のような関数が幾つか選ばれた。図中、y=x^0.5の関数が青い点線で表示され、拡張オイラー関数値の増加傾向や、拡張オイラー関数の漸近形を知る手掛かりになる。
【0079】
2次双曲線群の理論
ここからは、2次双曲線群の理論、特に本発明に係る拡張2次双曲線群の解析ツールで紹介されている上記拡張オイラー関数(GCD totient)についての説明をする。この理論は双曲線暗号の数学的な背景を強化するものである。
【0080】
拡張オイラー関数の着想は、既に特開2009-223035号で開示されていた。 その関数形を推定する方法は、2次双曲線群の群計算を合成数である法nの下で行い、全ての部分群の群位数を計算し、計数すると言うものである。位数kgを与える共役部分群Q(x)の個数がΦ(kg)個であるとしたとき、既にGCD関数への依存性が見出されていた。例えば、法nがn=p1p2という2個の素因数の積であ表されたとき、当該素因数から派生する部分群の位数k1,k2につき、
【数11】
・・・・(8―1)
と言う形をしていた。
【0081】
理論の出発点は、幾つかの合理的な仮定に基づいている。法pの下ではオイラー関数と拡張オイラー関数は一致していた。従って、(6―2)式が成立する。この式が意味するところは、部分群(剰余群)で位数d|nを有するものの個数はφ(d)個であり、その総個数は群位数であるnになることである。従って、拡張オイラー関数につき
【数12】
・・・・(8―2)
が成立すると考えることは自然である(仮定1)。但し、kは拡張2次双曲線群の群位数で、kqは最大位数である。即ち、共役部分群で群位数dを有するものの個数をΦ(d)個としたとき、その総個数は群位数kになる。
【0082】
ここで、可能な群位数dを最大位数kqの約数に限定している。前記文献でも指摘していたが、拡張2次双曲線群では群位数kと最大位数kq(<=k)とは、通常一致しない。群位数kは、当該拡張2次双曲線群が異なるk個の要素(P(x))を有すると言うことである。従って、全ての部分群の位数kgがその最大値kqを越えず、k個の要素の一部集合に止まるということは有り得そうである。k個の要素は何れも何処かの部分群の要素であるが、全部が纏まって入っている部分群は存在しない、そう言う状態である。
【0083】
群位数kは、法nを構成する素因数piから派生する部分群位数kiの積として与えられる(仮定2)。
【数13】
・・・・(8―3)
ここで値mは法nを構成する素因数piの個数である。数学的には、m=ν(n)と表示する。
この仮定には、法pがその巡回群を規定する、と言う基本的な考え方に立っている。従って、法nが合成数でも、値nを構成する各素因数が生成される巡回群を規定する、と考えることは自然である。この理解には状態数の考え方が有効である。各部分群はki個の状態を有するので、全体の状態数(組み合わせ)はその積で与えられる。
【0084】
法pihが生成する2次双曲線群では、ki=pih-1(pi+1)/2である。ここで、素因数pからは剰余群Z/pZしか生成されないとする考え方は狭い。現に2次双曲線群が存在し、異なる位数を有する。従って、部分群位数kiの値を固定しないで考えることが、理論の拡張につながる。
【0085】
最大位数kq(<=k)は、kq=[k1,,,km]で与えられる(仮定3)。一応仮定として扱うが、この仮定にはメービウス関数μとの関連で幾分の根拠がある。本来(8―2)式の級数和に対しては約数d|kを扱うべきであるが、係る約数dのうちkqよりも大きなものについては、kqが最小公倍数であるのでd=x*kqと言う形になり、x値に内在する素因数pにつき必ずd値にはp2という平方数、若しくはそれ以上のべき乗数が内在する。従って、μ(d)=0である。これは最大位数kqを越える部分群が存在しないか、考慮する必要がないことを意味している。(8―2)式には直接的にメービウス関数μが明示されていないが、次のメービウス変換の公式からして、この考え方は正しいと思われる。変換公式に現れる約数dは双方の式で同一だからである。
【数14】
・・・・(8―4)
【数15】
・・・・(8―5)
【0086】
次に、(8―2)式が成立する場合に、上記メービウス変換を利用して拡張オイラー関数を明示の形で求めることを考える。この過程は遠大であるので、最初に拡張オイラー関数導出の手順の概略を書いておく。
(1)群位数kを最大位数kqの関数として表示する。
[1]部分群位数kiを構成要素とする積集合(GCD set)を考え、同次GCD積に係る「簡略化定理」を導く。
[2]同次GCD積を組み合わせて1次LCMを構成する。積集合の要素hの公式と、高次LCMも解説する。
[3]約数d|kqに係る公式を導く。
(2)上記メービウス変換を利用して拡張オイラー関数を明示の形で求める。導出の後は、その一般化も行っておく。
【0087】
さて、上記手順に従い以下に詳細な説明を行う。
最初は部分群位数kiを基本構成要素とする積集合(GCD
set)の導入である。この集合の対象は群位数kであり、部分群位数kiを基本構成要素とし、その演算には部分群位数ki間のGCD演算を使う。GCD演算で区分された各領域hはこの積集合の構成要素(GCD
factor)であり、GCD演算の次元に従って同一の次元を有する。法nの構成素因数がm個であれば、最大次数はm次である。GCD演算の組み合わせは2m個あり、従ってこの積集合の要素数も2m個である。GCD演算なので各要素間には共通の素因数を有する場合がある。即ち、一般に(ha,hb)≠1(a≠b)である。但し、a,bはm次までの添え字列である。
【0088】
図30には4次(m=4)の積集合を例示した。図30で、横線領域は2次の同次要素ha,bだけを示すもので、互いに接点のみを有しmC2個が連結する。これは鎖(Chain)結合している。縦線領域は3次の同次要素ha,b,cだけを示すもので、互いに接点のみを有しmC3個が連結する。ここでa次の同次GCD積
を
【数16】
・・・・(8―6)
と定義する。組み合わせ記号とは添え字の並びが違うので区別できる。a個の添え字は同一の値を有しないので全ての組み合わせmCa個の積が取られる。
【0089】
このとき添え字m値を1個増やすとどうなるのか考えてみる。
添え字mが1個増えると、それは部分群位数km+1が追加されたことを意味し、全ての1の要素hi1-iaから次数が1次高い要素hi1-iam+1が1個生成され、同時に要素hi1-iaの内容は要素hi1-iam+1の分だけ減じる。図31を参照して欲しい。即ち、部分群位数が1個追加されると、次数aの同次GCD積はmCa個からm+1Ca個になり、積の個数が増える。全体では要素の個数は2m個から2m+1個へ増える。
全体で見ると次数a固定の同次GCD積
から新たに1次高い同次GCD積
【数17】
・・・・(8―7)
が生成され、新たに生成された次数aの同次GCD積は
だけである。ここで(i1,,,ia)はa個の添え字の全ての組み合わせにつき積演算を行うという意味である。
【0090】
(8―7)式から次数aの同次GCD積
は
【数18】
・・・・(8―8)
と表せる。即ち、
【数19】
・・・・(8―9)
である。これは組み合わせ公式
【数20】
を反映している。
【0091】
ここで積集合のLCM演算、
【数21】
について考える。図31の上記位数km+1の積集合の追加で、平原(plain=各要素の単純積)を構成する領域は、追加前のGCD演算の姿を基準にすると
【数22】
であり、新たに生成された1次高い要素
【数23】
で割り切ることにより得られた。これを同次GCD積の立場から見ると、全ての同次GCDの単純積なので、前記追加後1次高い同次GCD積で割るとその重複が解消され、再び平原(各要素の単純積)が現れる。
【0092】
同次GCD積(8―6)式では全ての同次数のGCDが単純積として現れているので、位数kの積集合の1次の同次GCD積を
【数24】
と考えたとき、
【数25】
とすると1次同次GCD積内の重複が解消される。
【0093】
しかし、まだ2次同次GCD積
内の重複が解消されていない。そこで、
【数26】
とすれば2次鎖まで重複が解消され、最終的には整った形式
【数27】
により全ての次数での重複が解消され、等号が成立する。
は1個でその重複はないからである。
【0094】
上式はm値が奇数の場合で、m値が偶数の場合は
が分母側にくる。この関係から、
【数28】
・・・・(8―10)
が成立する。これは位数kとその最大位数kqの間の関係を明示する。
【0095】
ここで前記同次GCD積構造Emを以下のように定義する。
【数29】
・・・・(8―11)
【0096】
このときEmとEm+1の関係を調べる。新たに位数km+1の積集合が追加された場合、上記同次GCD積
から1次高い
が生成され(8―8)式のように
と表せたのであるから、m値の偶奇の反転を考慮して
【数30】
となる。
【0097】
ここで
は新たに生成された最高次の同次GCD積(1個)で、上記重複解消の対象とならない。従って、
【数31】
である。
【0098】
いまEmの形に合わせて同次GCD積構造
【数32】
・・・・(8―12)
と置けば、
【数33】
と表せる。
【0099】
ここで(8―7)式より最高次の同次GCD積(1個)につき
【数34】
であるから
【数35】
・・・・(8―13)
である。これは位数kとその最大位数kqの間の関係を同次GCD積構造Emの漸化式で表し得たことを意味する。
【0100】
ここで
は新たに生成された2次の同次GCD積で、
【数36】
・・・・(8―14)
であり、
と共に漸化式の一部である。
【0101】
下準備ができたので、次の「簡略化定理」を証明しておく。
‖定理8―1‖
のとき、約数
に対し
【数37】
が成立する。
【0102】
‖証明‖
いま
として1次高い同次GCD積を考える。位数km+1の積集合の追加で、d=km+1と仮定した場合である。実際には新たな位数の追加は無いが、従前の式をそのまま利用できる。従って、(8―10)、(8―11)式から
【数38】
・・・・(8―15)
である。然るに
であるから、
【数39】
、かつ、(8―13)式が成立する。従って、
【数40】
であり、
【数41】
・・・・(8―16)
と求めることができる。
【0103】
ここでFmを変数d=km+1の関数として表示するためにFm+1を考える。(8―12)式より
【数42】
であるので、(8―7)式より
【数43】
と求められる。
【0104】
実際には新たな位数の追加は無かったのであるから、
【数44】
・・・・(8―17)
である。最高次数は分子から分母へ、若しくはその逆になっている。
これは(8―17)式のような複雑な式が、
の条件下では(8―16)式のような簡単な関係と等価であることを示す。
‖q.e.d‖
【0105】
さて、1個のGCDを集合要素hの積として表現することは容易い。積集合の或る領域がki1,ki2,,,kiaの共通要素であった場合、それは1個で
と表されるが、これは要素
を意味していない。各要素hは全てのGCD演算により分割された後の姿なので、その他の位数kjについてのGCD演算が行われて始めてその領域が確定する。
が要素
と一致するのはその他の位数kjについてのGCD演算で影響を受けない場合だけである。
【0106】
最初に
であったところに、新たにkj1を追加すると、
となり、以下同様に
と急速に増加する。
【0107】
一般的には、kjbまで追加すると
【数45】
となる。右辺は全体で(b+1)項ある。例えば上式の最終項の積は変数j1j2...jb(1<=b<=m-a)の重複がない全ての組み合わせ
個の積につき取る意味であり、上式全体で
個の要素の積につき取られる。従って、全ての細分が行われると(b=m-a)、
個の要素の積につき、
【数46】
・・・・(9―1)
と言う形になり、「GCDの要素表示」を得ることができた。
【0108】
これは要素
から派生する次数が+1以上の全ての要素と積をとることを意味している。即ち、積集合において当該要素より次数の高い内側の要素だけに関係し、次数の低い外側の要素とは関係がない。このように1個のGCD値を要素の積として表現することは容易であるが、逆に1個の要素hをGCDの積として表現すること、即ち(9―1)式の逆変換を行うことは容易ではない。
【0109】
さて、要素hの単純積の内最大のものがLCMであることを考えると、或るGCDを要素hの単純積で表すことは、高次(higher order)LCMという関係を意識させる。本来の最小公倍数[kj1,,,kjb]は1次最小公倍数であり、0次最小公倍数とは部分群位数kiそのものと考える。
【0110】
そこで、以下に高次LCMを考えてみる。
始めに、次数aが固定状態(fix)の次数a+bの同次GCD積
の次数bに係る部分積を
【数47】
・・・・(9―2)
と定義したとき、b個の添え字jbは同一の値を有しないのでbに係る全ての組み合わせ
個の積が取られる。但し、添え字列[i1,,,ia]は、表記された添え字が固定状態であることを意味し、LCMとは関係ない。
【0111】
ここで、(8―8)式と同様に新たにkm+1を追加すると
【数48】
・・・・(9―3)
が成立し、
【数49】
・・・・(9―4)
である。これは組み合わせ公式
【数50】
を反映している。
【0112】
ここで積集合の複数次最小公倍数ついて考える。a次LCM、
は1個の同次GCD積
を対象にし、kjxの追加でもその高原(tableland)の高度(=次数)を維持する積集合をいう。
【0113】
さて、次数a+xの同次GCD積
には1次高い同次GCD積
が重複しており、その高原の高度を維持するにはその1次高い同次GCD積
で割らなければならない。言わば、「高地を削って台地を作り出す」のである。
【0114】
【数51】
により、新たに追加したkj1に係る同次GCD積
の重複を除ける。但し、
【数52】
である。
【0115】
しかし、
にもその重複が存在する。従って、
【数53】
となり、最終的には
【数54】
for(b=m-a)・・・・(9―5)
により等号が成立し、a次LCMの明示式を得た。但し、値bと値aとの偶奇は等しいものとした。偶奇が異なれば、最高次数の同次GCD積
は分母側に来る。
【0116】
同次GCD積
を対象にした部分最小公倍数
は、その重なりがないことから通常、次数aの全ての要素の単純積
に一致する。
は少なくとも1個の要素hi1...iaを含み、
に係る重なりが無い場合は
であって、値aより大きな次数の要素を含まないからである。
【0117】
【数55】
・・・・(9―6)
この(9―6)式で固定添え字をなくしb→m とすれば、本来の1次LCM、
に一致する。ここではa個の添え字が固定状態(fix)の場合を扱っているので、
【数56】
であるから、(9―5)式より
【数57】
for(b=m-a) ・・・・(9―7)
である。
【0118】
従って、変数aと変数mの偶奇が同じものと仮定した場合は、
【数58】
・・・・(9―7)
である。変数aと変数mの偶奇が異なるものと仮定した場合は、
【数59】
・・・・(9―8)
である。
(9―7)、(9―8)式により、要素hのGCD表示を得ることができた。予想されたように、a次以上のGCDだけで構成される。
【0119】
ここで、図32に、n=351509の拡張オイラー関数の計算結果を表示した。下部にある要素計算は、(9―7)、(9―8)式を用いている。計算結果を図面で表示したものが図33である。そこでは、群位数kiを構成する要素hの全ての積が群位数ki自身を与える。
法nを構成する4個(m=4)の素因数17,23,29,31が生成する部分群の位数9,12,15,16に対し、例えばk1=9では、
【数60】
であり、積集合の理論値と一致する。
【0120】
拡張オイラー関数導出の最終段階は、(8―4)、(8―5)式のメービウス変換を利用して拡張オイラー関数を明示の形で求めることである。その最初のステップは、定理8―1と同様に、(8―17)式を分解し、約数dに依存する項とそうでない項に分別することである。
では、
【数61】
・・・・(10―1)
【数62】
・・・・(10―2)
としたとき、変数dをkiの1つと考えて
を右辺で展開すると、変数dに依存する積と依存しない積に分けることができ、
【数63】
・・・・(10―3)
となる。
【0121】
このとき定理8―1を利用すると、
【数64】
・・・・(10―4)
が導かれる。また、(10―1)、(10―2)式の比較から、
としたとき、
【数65】
・・・・(10―5)
が成立する。なお、(8―12)式の
とこの
は一致する。
【0122】
従って(10―4)式から、
【数66】
・・・・(10―6)
であり、群位数kをkqの関数として導くことができた。そこで(8―4)、(8―5)式のメービウス変換を利用できる体勢が整った。
【0123】
(8―5)式で
としたとき、
(10―6)式と定理8―1とから
【数67】
・・・・(10―7)
であるが、ここでは(6―4)式との対応に注意したい。即ち、(8―16)式は拡張オイラー関数の級数形であって、(6―4)式で倍率関数と呼んでいたものと等しい。
【0124】
次数mを入れた表現で、
【数68】
・・・・(10―8)
である。但し、m=ν(n)は法nが有する異なる素因数の個数である。(10―8)式はGCD積を有し、本発明に係る拡張オイラー関数を「GCD
totient」と呼ぶ理由を明示している。
【0125】
次に、この(10―8)式がkg|kqに対し正しいのか、数値的に検証する。
n=1001=7*11*13の場合、k1=4,k2=6,k3=7、従ってkq=84の拡張2次双曲線群では、
kg=84,42,28,21,14,12,7,6,4,3,2,1に対しΦ(kg)=48,36,24,12,18,8,6.6,4,2,3,1であった。(10―8)式によれば、
【数69】
となり、群計算から得た集計結果と一致した。
【0126】
(10―6)式にメービウス変換(8―4)、(8―5)式を適用すると、
【数70】
・・・・(10―9)
であるが、(ki,kq)=kiであり、左辺は群位数kに等しい。再び(8―2)式(仮定1)に戻ってきた事から、これまでの過程で矛盾は発生していない。逆に言えば、(10―9)式を出発点にしていれば、(10―8)式に容易に到達できたわけである。
【0127】
ここで、kqではなく、(10―9)式を次のように約数kg|kqに拡張できるのか考えたい。その出発点は(10―9)式で
【数71】
・・・・(11―1)
が成立すると仮定することである。(11―1)式は、kg=kq,kg=1で成立しているが、その中間で成立しているかは定かではない。
【0128】
しかし、(6―2)式からオイラー関数につき
【数72】
が成立し、拡張オイラー関数では倍率関数Fを用いて
【数73】
・・・・(11―2)
が成立すると仮定すると、この倍率関数Fが(8―12)式、(8―17)式に対応すると考えれば、(8―16)式、定理8―1より、
【数74】
が自然に導かれる。従って、(11―1)式成立の証明はないが、約数kg|kqに拡張するとき(11―1)式成立に矛盾はない。
【0129】
‖定理11−1‖kg=xy,
(x,y)=1としたとき、(11―1)式がkg=x,kg=yで成立するとすれば、(11―1)式はkg=xyでも成立する。
【0130】
‖証明‖ (11―1)式から、(x,y)=1としたとき、
、かつ、
が成立する。
仮定により、
、
であるので、
が成立する。
‖q.e.d‖
【0131】
GCDおよび拡張オイラー関数の何れもが乗積的だからである。しかし、このことは(11―1)式が証明されたことを意味していない。にもかかわらず、群計算の計数結果は(11―1)式の成立を支持している。以下は数値計算の結果である。
EHCG modulo:
n=1001; Max rank of sub-groups: kq=84;
The number of
Q(x) with kg is total Φ(kg).
φ(84)=24;Φ(84)=48;Ratio=2;Φ(84):=+84*2-42*2-28*2+14*2-12*2+6*2+4*2-2*2
φ(42)=12;Φ(42)=36;Ratio=3;Φ(42):=+42*2-21*1-14*2+7*1-6*2+3*1+2*2-1*1
φ(28)=12;Φ(28)=24;Ratio=2;Φ(28):=+28*2-14*2-4*2+2*2
φ(21)=12;Φ(21)=12;Ratio=1;Φ(21):=+21*1-7*1-3*1+1*1
φ(14)=6;Φ(14)=18;Ratio=3;Φ(14):=+14*2-7*1-2*2+1*1
φ(12)=4;Φ(12)=8;Ratio=2;Φ(12):=+12*2-6*2-4*2+2*2
φ(7)=6;Φ(7)=6;Ratio=1;Φ(7):=+7*1-1*1
φ(6)=2;Φ(6)=6;Ratio=3;Φ(6):=+6*2-3*1-2*2+1*1
φ(4)=2;Φ(4)=4;Ratio=2;Φ(4):=+4*2-2*2
φ(3)=2;Φ(3)=2;Ratio=1;Φ(3):=+3*1-1*1
φ(2)=1;Φ(2)=3;Ratio=3;Φ(2):=+2*2-1*1
φ(1)=1;Φ(1)=1;Ratio=1;Φ(1):=+1*1
Σφ(d|kq)=84;ΣΦ(d|kq)=168=2*kq;
【0132】
そこで、当面は(11―1)式を拡張オイラー関数の定義式にすべき、と考える。
【数75】
・・・・(11―3)
である。その証明はできていない。
【0133】
(11―1)式の形式を維持して、更にkgから自然数xに拡張することもできる。
【数76】
・・・・(12―1)
但し、m=ν(n)であり、あくまで法nの下で定義される整数論的関数である。
【0134】
(12―1)式から、メービウス変換により
【数77】
・・・・(12―2)
である。
【0135】
拡張オイラー関数Φ(x)は定義域が狭く、(11―2)式ではkg|kqなるkg値のみしか定義されていない。無理に全自然数xで定義しようとすればx|~kqでは、x値がp|~kqであるp値を素因数として有し、当該p値に対し(13―2)式よりΦ(p)=0であるので、定理12―3よりやはりΦ(x)=0である。また、x値が全てkqと共通する素因数のみで構成された場合、x>kq,(x,kq)=y≠1なるx値に対しては、y値を構成する素因数pに付き、必ずp2等のべき乗値を含み、μ(x)=0である。これは最大位数kqを越える部分群が存在しないか、考慮する必要がないことを意味している。
これを容認すると、(12―2)式のように約数kg|kqから自然数xに拡張できる。
【0136】
以下に、(12―2)式で定義される拡張オイラー関数の性質について調べる。この結果は、本発明に係る拡張オイラー関数(GCD totient)が、基本的で、かつ、原始的(primitive)な関数であることが判明している。
最初に拡張オイラー関数が乗積的な(multiplicative)関数であることを示す。まずは、予備定理を証明しておく。
【0137】
素因数の積集合におけるGCDには特別な性質が成立する。
‖予備定理12−1‖素因数の積集合Sで(A,B)=1ならば、
【数78】
が成立する。ただし、
である。
【0138】
‖証明‖xの1の素因数piにつき、それぞれ
、
、
であるが、(A,B)=1ならばeA 若しくはeBが0である。eA=0であれば、
、
であり、
が成立する。
同様にeB=0であれば、
が成立する。
従って、何れの場合でも
が成立する。
xの1の素因数piにつき与式が成立するので、xの他の素因数pjでその積pipjを考える。
そこでは(pi,pj)=1であるから、GCDの可換性により、同様の議論から
が成立し、結局、
が成立する。従って、他のxの素因数についても同様に扱える。
例えば、
につき
であり、これは
を意味する。
‖q.e.d‖
【0139】
次にオイラー関数φが乗積的(multiplicative)であることを示しておく。
‖予備定理12−2‖
ならば、
【数79】
である。
【0140】
‖証明‖オイラー関数φの級数展開
【数80】
において、
【数81】
であるが、
としたとき、
、
、
より
であるので、メービウス関数の乗積的な性質から
【数82】
・・・・[1] が成立する。
次に、
のときは総和の積はその組み合わせの積にわたる総和に等しいので、
【数83】
・・・・[2]
が成立する。従って、
【数84】
である。
‖q.e.d‖
【0141】
次に拡張オイラー関数Φが乗積的(multiplicative)であることを示す。
‖定理12−3‖
ならば、
【数85】
である。
【0142】
‖証明‖拡張オイラー関数Φの級数展開
において、
【数86】
であるが、
としたとき、
、
、及び
より
、かつ、
であるので、上記[1]及び[2]が成立する。
更に、GCDの乗積的な性質から、
ならば、
【数87】
・・・・[3]
が成立する(予備定理12―1)。従って、
【数88】
である。
‖q.e.d‖
ここでは、拡張オイラー関数Φの乗積的性質が部分群位数kiに依存していないことが重要である。即ち、拡張オイラー関数Φの乗積的性質は素因数から生成された群の性質に依存していない。
【0143】
オイラー関数についての公式が拡張オイラー関数でも成立するのか検討してみる。
例えば、(6―4)式で示した
と言う公式は以下のように拡張できる。
【0144】
‖定理12−4‖
【数89】
但し、k=Пki,
である。
【0145】
‖証明‖
kqが奇数なら、d|kqも奇数であり、かつ、kq/dも奇数である。
従って、
【数90】
である。
kqが偶数なら、kq=2ekg,
d=2fdg; と置くと、kg/dgが奇数であることから、
【数91】
であり、以下のように変数分離できる。
【数92】
このうち後の[]は奇数約数に係る和で、最初の[]は、
【数93】
である。但し、級数和の範囲
で1の素因数のみからか構成されるので、後出する定理(13−1)により
【数94】
である。従って、
【数95】
である。
‖q.e.d‖
【0146】
次に数値例を示す。
(1)kqが奇数の例
EHCG modulo:
n=493=17^1*29^1
GruopRank:
k=135=9*15
Max rank of
sub-groups: kq=45;
Σ(-1)^(kq/d)Φ(d|kq)=-135=-72-32-18-4-8-1
(2)kqが偶数の例
EHCG modulo:
n=11339=17^1*23^1*29^1
GruopRank:
k=1620=9*12*15
Max rank of
sub-groups: kq=180;
Σ(-1)^(kq/d)Φ(d|kq)=0=-432+216-208+216-108+104-8+54+104-52+4+54+26+4-2+26+1+1
ここでは、kq=22*45であるので、e=2,kg=45である。
-Φ(180)+Φ(90)+Φ(45)=0;
より、Φ(45){-22+2+1}=0とも書き直せる。同様に
-Φ(60)+Φ(30)+Φ(15)=0;
-Φ(36)+Φ(18)+Φ(9)=0;-Φ(20)+Φ(10)+Φ(5)=0;
-Φ(12)+Φ(6)+Φ(3)=0; -Φ(4)+Φ(2)+Φ(1)=0; が成立している。
【0147】
次に、拡張オイラー関数(GCD totient)Φ(x)が特定の条件下でオイラー関数φ(x)に帰着することを示しておく。
‖定理13−1‖合成数である法nから派生する部分群の位数kiにつき、互いに共通する素因数を有しない場合には、拡張オイラー関数Φ(x)はオイラー関数φ(x)に一致する。
即ち、
で部分群位数ki=ki(pi)、群位数k=Πki、最大位数kq=[k1,k2,,,km]である場合に、任意の添え字i,jにつき(ki,
kj)=1ならば、Φ(x)=φ(x)である。
【0148】
‖証明‖(ki,
kj)=1ならば、拡張オイラー関数
において、GCDの乗積的性質(予備定理12―1)により
【数96】
であるが、k=khkq、(x/d)|kqであるので、約数x/dは群位数kで割り切れる。よって、
【数97】
である。そこで、
【数98】
である。
‖q.e.d‖
【0149】
次に、拡張オイラー関数Φ(n)の積表示を検討する。オイラー関数については、
【数99】
・・・・(13―1)
という積表示があるが、拡張オイラー関数Φ(n)でもその積表示があれば有用である。
【0150】
最初にΦ(pe)を検討する。最初に(12―1)式で、x=
peと置いてみる。値xが1個の素因数で構成されるので、メービウス関数μ(d)の定義から、xの約数のうちd=1,pの場合だけを検討すれば足りる。
【数100】
・・・・(13―2)
である。素因数の個数m=1であるので、上式より
Φ(pe)=φ(pe)=
pe-pe-1である。
素因数の個数m>1であれば、変数xの素因数pに係る指数eに等しいかより大きなeiに係るkiの個数α(>=0)につき
である。
従って、(13―2)式より
【数101】
・・・・(13―3)
若しくは
【数102】
・・・・(13―4)
と求められる。それ故、一般にkiに依存するのでΦ(pe)の値が一意に定まることはない。
【0151】
ここで拡張オイラー関数Φ(x)とオイラー関数φ(x)の比(Ratio)を検討する。既に本発明に係るグラフィックツールにおいて、オイラー関数値と拡張オイラー関数値の比の表示で説明していたように、以下の定理が成立する。
‖定理13−2‖拡張オイラー関数Φ(x)はオイラー関数φ(x)で割り切れる。
【0152】
‖証明‖
(13―1)、(13―2)、(13―3)式より、x= peの場合、
【数103】
・・・(13―5)
若しくは
【数104】
となり、α(>=1)で、拡張オイラー関数Φ(pe)はオイラー関数φ(pe)で割り切れることが分かる。然るに、kg=peであるとすれば、kg|kq
及びkq=[k1,…,km]であるので部分群位数kiの中に素因数pに関しei>=eであるようなものが必ずあり、α>=1である。
xを構成する他の素因数も同様である。
従って、(13―5)式より、拡張オイラー関数Φ(x)はオイラー関数φ(x)で割り切れる。
‖q.e.d‖
【0153】
この議論ををもう少し説明しておく。kq=[k1,…,km]より、k1,…,kmの中で素因数pに関し最高次数eMaxを有するものkMがあり、その他の指数はこれより小さいか等しく、素因数pに関し割り切れる。従ってkqの素因数pに関する次数はeMaxである。然らばe<=eMaxであるから、少なくともei>=eであるようなkiが存在し、e<=ei<=eMaxである。従って、x=kg|kqである変数xにおいて、その各素因数pjでαj>=1であることから、xに係る素因数の個数m1=ν(x)に対しΣαj>=ν(x)である。なお、比の中には法nや位数kiに含まれない新たな素因数がΣpiから派生する。
【0154】
ここで数値例で検証する。
法n=11339,k1=9,k2=12,k3=15,kq=180の拡張2次双曲線群で、
kg=3とした場合、φ(3)=2及び(13―2)式より
であるので、
比
である。(13―7)式を使った場合、p=3,e=1,α=3であるので、
であり、理論計算と一致した。この素因数q=13は新たに派生した素因数である。
【0155】
法n=351509,k1=9,k2=12,k3=15,k4=16,kq=720の拡張2次双曲線群で
kg=180とした場合、φ(180)=48及び
Φ(180)=+180*36-90*18-60*36+30*18-36*36+18*18+12*36-6*18=2592,
Ratio=54である。
(13―5)式を使った場合、kg=180=22*32*5,k1=32,k2=22*3,k3=3*5,k4=24であるから、
p1=2, e1=2,α1=2;
p2=3, e2=2,α2=1; p3=5, e3=1,α3=1; であり、
Φ(22)/φ(22)=
20+1(2+1)=6; Φ(32)/φ(32)= 32+0(1)=9;
Φ(5)/φ(5)= 50+0(1)=1;
従って、Φ(180)/φ(180)=6*9*1=54
であり、理論計算と一致した。同様に、kg=24, φ(24)=8及び
Φ(24)=+24*36-12*36-8*4+4*4=416,
Ratio=52である。
(13―5)式を使った場合、kg=24=23*3,k1=32,k2=22*3,k3=3*5,k4=24であるから、
p1=2, e1=3,α1=1;
p2=3, e2=1,α2=3;であり、
Φ(23)/φ(23)=
22+0(1)=4; Φ(3)/φ(3)= 30+0(9+3+1)=13;
従って、Φ(24)/φ(24)=4*13=52であり、理論計算と一致した。
【0156】
(13―4)式において、xを構成する素因数qは必ずしもnを構成する素因数pと一致しないので、本来
と表現すべきである。しかし、nを構成する素因数piは部分群位数kiを与えるだけで拡張オイラー関数Φ(x)の表現上直接現れない。そこで、ここでは素因数qを用いた表現はしないことにする。従って、素因数piは全てk若しくはkiに係る素因数のみで、法nとの直接の関係は無い。(13―4)式より
【数105】
・・・・(13―6)
となって、拡張オイラー関数Φ(x)の積表示を得ることができた。但し、素因数pjに関しベキ数ejに等しいかより大きなベキ数eiを有するkiの個数αjにつきαj>=1である。
【0157】
後の議論のために、拡張オイラー関数Φ(x)とオイラー関数φ(x)の比(Ratio)を明示の形で求めておく。
【数106】
・・・・(13―7)
である。また、次の表示も見易い。
【数107】
・・・・(13―8)
である。但し、素因数pjに関しベキ数ejに等しいかより大きなベキ数eiを有するkiの個数αjにつきαj>=1である。
【0158】
定理13−2から、直ちに次の定理が導かれる。
‖定理13−3‖
(a,n)=1であるようなaにつき
【数108】
である。
【0159】
‖証明‖拡張オイラー関数Φ(x)は定義域が狭く、通常x|kqなるx値のみしか定義されていない。無理に全自然数で定義しようとすればx|~kqでは、(13―2)式よりΦ(x)=0である。そこで、x|kqなるx値に対しては、(3−13)式により
とおけば、
【数109】
であり、x|~kqなるx値に対しては、
【数110】
である。
‖q.e.d‖
【0160】
次に2次双曲線群から導かれた拡張オイラー関数Φ(x)を他の拡張オイラー関数と比べてみることにする。整数論の教科書によれば著名なものとしてジョルダンのオイラー関数(Jordan’s
totient) Jm(x)がある。変数xを構成する素因数pjにつき
【数111】
・・・・(13―9)
である。これをΦ(x)の積表示(13―6)式と比べてみれば、添え字mを追加して
【数112】
・・・・(13―10)
であるので、似ていることがわかる。
【0161】
‖定理13−4‖拡張オイラー関数Φ(x)は、ki=k0(固定)とすれば、ジョルダンのオイラー関数Jm(x)に帰着する。
【0162】
‖証明‖
(13―10)式で、ki=k0(固定)とすれば、kq=LCM(k0,k0,,,k0)=k0, x|kqであるのでkqは変数xで割り切れる。また、変数αjは変数xに係る素因数pjに関しベキ数ejに等しいかより大きなベキ数eiを有する「kiの個数」であり従って、ki=k0(固定)とすればαjはmの倍数でαj=m
or 0である。 2次双曲線群ではαj>=1であった。従って、
【数113】
・・・(13―11)
である。(13―11)式は2次双曲線群から導かれた拡張オイラー関数Φ(x)が、特定の条件下で、m次のジョルダン・オイラー関数と一致することを示している。
‖q.e.d‖
【0163】
このことから、本発明に係る拡張オイラー関数(GCD totient)が、数ある拡張オイラー関数の中でも基本的で、かつ、原始的な関数であることがわかる。しかしながら、ki=k0(固定)とと言う条件は、異なる素因数から派生する部分群が全て同一の位数を有することを意味し、通常では有り得ない。この意味で、ジョルダン・オイラー関数は、その汎用性が失われている特殊関数である。
【産業上の利用可能性】
【0164】
以上のように、本発明に係る拡張オイラー関数等は未だ知られていないことが多く、研究段階の関数である。中でも拡張オイラー関数は拡張2次双曲線群の共役部分群の個数を規定する明確な意味があり、数学上も有用な関数と考えられる。そこで、本発明では拡張2次双曲線群解析ツールを設け、かつ、拡張オイラー関数のグラフィクスツールも付属させた。従って、この双曲線暗号の設計ツールが、双曲線暗号の初心者ばかりでなく、設計者、及び研究者に非常に有用である、と考えている。
【0165】
暗号の世界では、DES、RSA暗号が依然有用と考えられているが、要求されるセキュリティのレベルも向上して、ビット数の増大で計算負担も増大し、暗号の簡単な利用ができない状況に至っている。双曲線暗号は、少ないビット数計算でも多ビット暗号と等価の計算困難性を容易に付加できるので、次世代の暗号として普及する可能性がある。
【図面の簡単な説明】
【0166】
【図1】2次双曲線設計ツールの全体図である。
【図2】素数テストツールでのn=1023のテスト結果である。
【図3】素数テストツールでのn=1031のテスト結果である。
【図4】素数テストツールでの篩法アルゴリズムのフロー図である。
【図5】素数テストツールでのGermann素数判定アルゴリズムのフロー図である。
【図6】素数テストツールでのn=1237のテスト結果である。
【図7】素数テストツールでの法pの採用方法を説明した図である。
【図3A】設計ツールの上段部、曲線パラメータcの採用を説明した図である。
【図9】設計ツールの上段部、曲線パラメータaの採用を説明した図である。
【図10】設計ツールの中段部、曲線パラメータd及びbの採用を説明した図である。
【図11】設計ツールの下段部、データ保存を説明した図である。
【図12】曲線パラメータのパラメータリストの全体図である。
【図13】パラメータリストのショートカットメニューを説明した図である。
【図14】ショートカットメニューの「ReCreateAllData」を実行したリスト図である。
【図15】2次双曲線群解析ツールの全体図である。
【図16】2次双曲線群解析ツールの解析集計アルゴリズムを示すフロー図である。
【図17】2次双曲線群解析ツールの解析用曲線パラメータ等の確認を説明した図である。
【図18】2次双曲線群解析ツールの解析結果を説明した図である。
【図19】2次双曲線群解析ツールの集計結果を説明した図である。
【図20】2次双曲線群解析ツールの詳細結果の表示を説明した図である。
【図21】2次双曲線群解析ツールの詳細結果の表示、その2を説明した図である。
【図22】拡張2次双曲線群解析ツールの指定した拡張2次双曲線群の計算結果を説明した図である。
【図23】拡張2次双曲線群解析ツールの指定した拡張2次双曲線群の計算結果、その2を説明した図である。
【図24】拡張2次双曲線群解析ツールの指定した拡張2次双曲線群の計算結果、その3を説明した図である。
【図25】拡張2次双曲線群解析ツールに付属するグラフィックツールの全体図である。
【図26】拡張オイラー関数のグラフィックツールにおけるオイラー関数値と拡張オイラー関数値の表示を説明した図である。
【図27】拡張オイラー関数のグラフィックツールにおけるオイラー関数値と拡張オイラー関数値の比(Ratio)の表示を説明した図である。
【図28】拡張オイラー関数のグラフィックツールにおけるマーカの書き込みを説明した図である。
【図29】拡張オイラー関数のグラフィックツールにおける関数表示機能を説明した図である。
【図30】4次の積集合を説明した図である。
【図31】群位数の追加を説明した図である。
【図32】拡張オイラー関数による群位数kの要素計算(n=351509) を説明した図である。
【図33】群位数kの要素表示(n=351509,m=4) を説明した図である。
【符号の説明】
【0167】
【技術分野】
【0001】
本発明は、拡張された2次双曲線群の離散対数を利用した双曲線暗号の設計ツール(ソフトウェア)及び鍵生成方法に関するものである。
【背景技術】
【0002】
2005年の7月に楕円曲線暗号に代わる双曲線暗号の探索において2次双曲線群が発見された後、その成果は2007年2月特許出願された「二次双曲線群を使用する鍵生成方法、復号方法、署名検証方法、鍵ストリーム生成方法および装置」(特許文献1)に結び付けられた。その後2次双曲線群の研究が進み、法nが合成数である拡張2次双曲線群、特に法nが素数pのべき乗(pn)である場合に拡張され、拡張2次双曲線半群、拡張オイラー関数、逆元計算後回し法、2次双曲線群を用いた素因数分解の方法等の成果が2008年3月の特許出願「双曲線暗号の鍵生成方法」(特許文献2)に開示されるに至った。
【特許文献1】特開2008-203548号
【特許文献2】特開2009-223035号
【0003】
楕円曲線暗号で使用される楕円曲線関数は3次関数であり、双曲線暗号で使用される2次双曲線関数は整数論的関数ではあるが実質的には3次関数であるので、楕円関数を限定すれば双曲線関数と等価になる。どの様な数学的な条件下で等価になるかはまだ明らかではないが、双曲線暗号に近い形で楕円曲線暗号を形成することは可能だろう。更に、前記特許文献で案出した同値対や拡張2次双曲線半群等の概念が類似の形態で出現する可能性は高い。しかし、2次双曲線群は具体的に種々の条件が特定されているので、より明確な結果が出現すると予想される。
【発明の開示】
【発明が解決しようとする課題】
【0004】
2次双曲線群はその位数が一定で初等的取り扱い方が可能であることから、その理解に困難な点はないが、その全体像が複雑であることは否めない。特に2次曲線の判別式D及び当該2次曲線自体が平方非剰余であること等の制限から、複数の単位暗号化装置を具備する鍵生成装置において多数の曲線パラメータの組を特定する作業が必要になる。例えば、
【数1】
・・・・(1―1)
という整数論的関数で、法p及び曲線パラメータa,b,cを定めなければならない。
従って、これ等の曲線パラメータ等を簡易に生成できるツール(ソフトウェア)があれば大変に便利である。また、双曲線暗号はまだ開発が始まったばかりであり、初心者が簡易に2次双曲線群を構成でき、かつ、その解析ができれば、その理解を助け、双曲線暗号の普及に拍車が係るに違いない。
【0005】
曲線パラメータ特定作業を簡易に生成できるツールとはどの様なものだろうか。双曲線暗号を全く知らない者がその曲線パラメータを特定するとき、その選択肢を行使でき、色々と試してみる自由度を有していなければならないだろう。そもそも法pの特定はどうすべきだろうか。選択した法nが素数なのか合成数なのかも知らなければならない。当該2次双曲線群の最大位数kqを得るためには、ベースポイントP(x)の選択にも配慮しなければならない。選択し特定した2次双曲線群の下で双曲線暗号を構成したとき、その2次双曲線群がその利用に適したものか否かを判定するためには、初心者でも容易に解析でき、かつ、その結果を表示できるツールにしておきたい。
【0006】
作成した2次双曲線群を具体的に利用するためにはファイル構成を採用することが望ましい。他のアプリケーションソフトウェアでの簡便な利用が可能になる。
【課題を解決するための手段】
【0007】
本発明に係る双曲線暗号の設計ツール(HCC Design Tools)は複合ツールであり、素数テストツール(Prime Test Tool)、2次双曲線群設計ツール(HCG
Design tool)、2次双曲線群解析ツール(HCG Analysis tool)、拡張2次双曲線群解析ツール(Extended HCG Analysis
tool)等から構成されており、このツールだけで設計と解析が完結する構成を有している。
【0008】
素数テストツールは法nが素数か否か判定し、素数pをその後利用するときはその採択を決定できる構成を有している。Germann素数判定機能、素因数分解表示機能はこの素数テストツールの特徴になっている。
【0009】
2次双曲線群設計ツールでは、曲線パラメータの選択窓を有し、諸条件を満たす曲線パラメータ値が提示される。設計者はその中から任意に曲線パラメータを選択でき、かつ、新たな曲線パラメータへの更新も行うことができる。選択された曲線パラメータは、その旨の表示が行われる。特定の2次双曲線群に対応する採用された曲線パラメータの組は、保持され容易にその表示を行うことができ、かつ、必要な装置分だけ保存することができる。この組の一覧は、グリッドビュウ(Grid View)においてリスト化し、編集できる機能を有している。
【0010】
2次双曲線群解析ツールでは、確認された曲線パラメータで特定された2次双曲線群の解析及び集計が行われ、その部分群の全体が明らかにされる。位数kgを有する共役部分群の個数、ベースポイントP(x)、及び当該部分群の構成要素の表示はこの解析ツールの特徴に成っている。設計者は特定された2次双曲線群の全体像、及び構成を知り、その採否を決定する材料にすることができる。
【0011】
拡張2次双曲線群解析ツールは、拡張2次双曲線群の解析、特に法nが合成数である場合の拡張オイラー関数(GCD totient)の解析を行うことができる。拡張オイラー関数は、発明者により新たに発見された整数論的関数で、この特許明細書でその詳細が明らかにされる。しかし、このツールでは設計ツールとして、その項別級数表示、要素(GCD
set)解析等を行って、その結果を表示するにとまっている。ただ、拡張オイラー関数のグラフィクスツール(Graphics tool)も用意し、研究者等の利用の便宜を図った。
【発明の効果】
【0012】
本発明に係る双曲線暗号の設計ツールは、複合ツールで設計と解析が完結する構成を有し設計者に使い易くなっている。各ツールの固有な構成からは以下の効果を奏する。
【0013】
素数テストツールは本発明に係る設計ツールで採用される法pを選択する機能を有しており、単なるテストだけを行うものではない。そのGermann素数判定機能は、選択した2次双曲線群の位数が法pの下でも素数であることを保証する。これは任意にベースポイントを採択する自由を設計者に提供する効果を奏する。従って、設計者が係る法pを採用する手助けになる。素因数分解表示機能は、言うまでも無く法nが合成数でどの様な素因数から構成されるかを簡明に知らしめる。
【0014】
2次双曲線群設計ツールの曲線パラメータの選択窓は、諸条件を満たす曲線パラメータの候補を提示し、その選択を設計者に委ねる効果を有する。提示されるパラメータ値は何度でも更新することができるので、設計者は小さ過ぎるパラメータ値若しくは法pに近いパラメータ値を避け、適当な大きさの値を選択できる。特定の2次双曲線群に対応する採用された曲線パラメータの組は、ソフトウェア内で保持され、容易にその表示を行うことができ、かつ、必要な装置分だけ保存することができると共に、何時でも更新することができる。特に、グリッドビュウによりリスト化し、編集できる機能を有しているので、簡易に必要な数の組を揃えるのに便宜である。
【0015】
2次双曲線群解析ツールでは、曲線パラメータで特定された2次双曲線群の解析及び集計が行われ、その部分群の全体が明らかにされることから、設計者は採用した曲線パラメータの組が適当な群構成を有していることを確認でき、特に群位数が合成数kgである場合に当該群位数の約数を位数とする部分群の確認を行うことができる。法nがGermann素数で、その群位数が素数である場合には、ゼロ元を除く全てのベースポイントが最大位数kgであることを確認することができる。
【0016】
拡張2次双曲線群解析ツールで取り扱う拡張オイラー関数Φは、拡張2次双曲線群の位数kg及びその約数を位数とする共役部分群の個数を与える重要な意義があり、位数kgを有する部分群の個数はΦ(kg)個である。ここで共役とは位数kgが同一で同型である部分群間の関係を言う。その項別級数表示は、従来のオイラー関数との対比を明示するもので、その拡張性を明示する表示方法である。積集合の要素表示は、GCD演算と部分群位数kiの積を集合(積集合)と捉えた場合の1要素を与えるもので、位数k(k=Πki)の構造を明らかにする。従って、要素表示の具体的計算は位数kの構造そのものを明らかにする。
【0017】
拡張オイラー関数のグラフィクスツールは、拡張オイラー関数Φを具体的に計算しグラフ表示するものであり、従来のオイラー関数φとの差異を視覚的に明示する効果を奏する。
【発明を実施するための最良の形態】
【0018】
以下、本発明に係る種々の実施例について説明する。
【0019】
<第1実施例>
図1は、本発明の2次双曲線群設計ツール(ソフトウェア)の全体図であり、素数テストツール、2次双曲線群設計ツール、2次双曲線群解析ツール、及び拡張2次双曲線群解析ツール等から構成されている。このように各ツールを1個のソフトウェアに統合し、かつ、フロントに並べたので、設計者にとって使い回しの良いツールとして利用することができる。設計者は、図1左上の素数テストツールで法pを決めた後に、図1右の2次双曲線群設計ツールで曲線パラメータの各組を採用し、図1左中の2次双曲線群解析ツールで採用した2次双曲線群の適否を確認し、採用した各2次双曲線群をファイルの形で保存することができる。
【0020】
このソフトウェアの開発は、2008年5月にマイクロソフト社の「Visual Studio 2008」を用いて、VC++で行われた。NET.Framework V3.5のWindows(登録商標)プログラムである。開発開始後、約半年の作業で原型が出来上がり、その後半年掛けてバグ抜きや改良が行われた。同時にデモンストレーション用のアプリケーションソフトウェアも開発されたが、本発明との直接の関連が薄いので別の機会に開示する予定である。ただ、このツールで採用された2次双曲線群のパラメータファイルが利用できる構成が採用されている。
【0021】
図2は、本発明の素数テストツールであり、本発明に係る設計ツールで採用される法pを選択する機能を有しており、単なるテストだけを行うものではない。素数判定の方法には「篩(ふるい)法(sieve method)」を用いており、高級な方法は採用していない。その1の理由は本発明に係るツールが主にデモンストレーションを目的として開発され、法pが大きなビット数を有することは前提としていないことを挙げる。法pに大きな数値を選択した場合、その後の群演算に大きな負担となり、事実上群演算は困難になる。その第2の理由は、単純ループで割り算を行うのでPCによる高速演算に向いている、ことにある。
【0022】
図3は、法nとしてn=1023をテストした結果を表示してある。この結果は、
「n=3^1*11^1*31^1」、「_1023 is not a prime」であるので、法nが合成数で素因数3,11,31の積であることを示す。次に図3において法nとしてn=1031をテストした結果を表示してある。この結果は、「n=1031^1」、「1031
is a prime」であるので、法nが素数であることを示す。テストは第1のテキストボックス(textBox1)にn値を入力し、テストボタン「Test」を押下することにより行われる。
【0023】
篩法の具体的なアルゴリズムは図4に示されている。図4で、「Start」から開始し、最初に法nの候補値である数値を入力し、「Test」を押下すると、最初は小さな素因数(2,3,5,7)を割り数値kとした直接の割り算が行われる。素数密度の関係からも、n値に小さな素因数が含まれる可能性が高いからである。
【0024】
その余りが0であればその素因数を値nが有するので当該割り数値kを保存し、余りが0でなければその素因数を値nが有していない、と判定できる。
【0025】
その素因数をn値が有していれば、新たなテスト値をn←n/kとして、残りの素因数を探し出すことになる。但し、素因数のべき乗の場合を考え、同一の素因数による割り算が繰り返され、割り切れない場合にのみ前記割り数値kの更新が行われる。割り数値kの値が候補値である値nの平方根(√n)を越えた場合には、1以外の如何なる素因数をも有していないので、当該n値を素数と判定できる。
【0026】
本発明に係る素因数分解表示の方法は、以下に示すように主に2通りあるが、実際には後者の方法が採用されている。
【0027】
第1の方法は素因数分解が終了し、素因数の個数Iが判明した場合に、各素因数毎にテキスト列を増やしてゆく方法(テキスト増加法)である。例えば、法nとしてn=1023を選択したとき、最初に空文字列「String^myText=””」が定義された後に、各素因数毎に「myText=3^1」>「myText=3^1*11^1」>「myText=3^1*11^1*31^1」とテキストの長さを増やしてゆき、リスト(listBox1)への書き込みは一度に行う
「listBox1->Items->Add(myText)」。
【0028】
第2の方法は、リスト内の当該行のデータ「myText=listBox1->Items[i]->ToString()」を読み取り、新たなデータを追加し「myText=myText+”*”+p+”^”+a」(p:当該素因数、a:当該ベキ数)
、当該行を削除した後に追加後のデータを書き込む方法(書き込み行更新法)で、書き込みと削除は素因数の個数IにつきI回行われる。即ち、各素因数毎に当該行の表示が「n=3^1」>「n=3^1*11^1」>「n=3^1*11^1*31^1」と切り替わってゆく。この方法は既にある表示をそのまま生かす点で便利である。
【0029】
図5は、本発明に係るGermann素数判定方法を開示したフロー図である。最初に試し数pを入力し、前記図4に示した篩法のアルゴリズムにより当該p値が素数か否か判定し、その後q=(p+1)/2を計算した後、再び篩法のアルゴリズムにより当該q値が素数か否か判定する。当該q値が素数であれば、対応する素数pはGermann素数である。当該q値が素数でなければ、対応する素数pはGermann素数ではない。
【0030】
図6は、本発明に係るGermann素数判定機能を実行した図である。試し数n=1237を素数テストした結果素数と判明したので、当該行「1237 is a
prime.」を青く選択した後に「Judge」ボタンを押すと、Germann素数判定が行われる。
【0031】
Germann素数とは、素数pに対し値q=(p+1)/2も素数であるような素数pを言う。このような素数の組はその存在密度は高くないが、無限に存在することが知られている。2次双曲線群では、法phの場合、その群位数kはk=ph-1(p+1)/2であるので、h=1の場合は法pがGermann素数であることは当該2次双曲線群で素数位数を獲得することを意味する。
【0032】
そして、その群位数が素数である場合には、ゼロ元を除く全てのベースポイントが最大位数kを有する部分群であることが、理論上明らかになっている。即ち、この様な2次双曲線群では位数qを有するφ(q)=q-1個の部分群と位数1を有するゼロ元1個で構成される。従って、ゼロ元を避ければ、ベースポイントP(x)が最大位数を与えるか否かの判定をする必要がない。
【0033】
図7は、法pが素数と判定された後に、その後の曲線パラメータの選定において当該法pを採用する方法を開示する。判定された素数を青く選択した後にラジオボタン(radio button)「Yes」をクリックすると、「p=1237 is adopted.」と表示されて、その後の法pの採用が確定する。
【0034】
図8は、2次双曲線群設計ツールの上段部を示す。上部には2次双曲線方程式が画像(picutureBox1)として表示され、これから決定すべき曲線パラメータの配置を確認することができる。このソフトウェアでは最初に曲線パラメータcを決定する構成にしたが、先に曲線パラメータcを決定する構成にしても良い。何れにしても、判別式D/4=c2+4aが平方非剰余になるように双方を選択しなければならない。2次双曲線群の群位数kをk=(p+1)/2の関係に保つためである。
【0035】
曲線パラメータc及びaでは何れの値も法pにおける剰余群(Z/pZ)に従うので、通常値p以下の値を入力する。テキストボックス(textBox2)に直接入力しても良いし、「Generate‘c’」ボタンを押して乱数から採用しても良い。ただ、前記法pの指定が行われていない場合には、この選択はできないようになっている。曲線パラメータcの採用は「Select‘c’」ボタンの押下により行われ、「c=1
is adopted.」のように表示される。
【0036】
また、同時に、前記判別式の条件を満たす複数の曲線パラメータa値4個がリストボックス(listBox2)に列挙される。曲線パラメータaの選択は乱数に基づいているので、「Select‘c’」ボタンの押下を再度行うと別の候補値4個が提示される。これは設計者が適当な選択をする便宜となる。図9のように、リストボックス内の1個の値を青く選択し、「Select‘a’」ボタンの押下を行うと、その採用と共に「a=311
is adopted.」のように表示される。
【0037】
図10は設計ツールの中段部で、曲線パラメータb値及びd値を定める。最初に「Renewal」ボタンを押下すると、曲線パラメータb及びdの候補がリストボックス(liastBox3)内に表示される。この条件は(d2+cd-a),(b2+cb-a)が平方非剰余となることである。即ち、(x2+cx-a)
が平方非剰余となるようなx値を乱数の中から選び出し、リストアップする。
【0038】
このうち、曲線パラメータdはゼロ元P(d)≡Oを定めることに相当し、曲線パラメータbは関数値のゼロ点であるが、必ずしもゼロ元とは関係がない。しかし、特殊な関係であるb=dのような制約下でも、2次双曲線群の特性が損なわれることはない。「Select‘d’」ボタン若しくは「Select‘b’」ボタンを押すと、それぞれのパラメータ値の採用が決められ、「d=55
is adopted.」若しくは「b=189 is adopted.」のように表示される。
【0039】
図11は設計ツールの下段部で、曲線パラメータの組の保存を行う。保存スタックは20段用意されており、20組の各曲線パラメータを保存することができる。現スタック番号はテキストボックス(textBox3)に表示されており、この番号は「Num.Up」ボタンの押下で上昇し、「Num.Down」ボタンの押下で下降する。従って、素数テストツールで定めた法p値、本設計ツールの上段で定めた曲線パラメータc値、a値、本設計ツールの中段で定めた曲線パラメータd値、b値の組が、一体として当該スタック番号に記憶される。
【0040】
曲線パラメータ等の設定が終了した時点で、「Import」ボタンを押すと、前記曲線パラメータ等が現に表示されているスタック番号に記憶され、仮に前データが存在した場合にも上書きが行われる。また、インポートされた曲線パラメータ等はリストボックス(listBox4)内に表示される。なお、現スタック番号の記憶内容がリストボックス内に表示されるので、「Num.Up」ボタン若しくは「Num.Down」ボタンの押下で、その表示も変化する。
【0041】
「SetData」ボタンは解析のために現に表示されたデータを使うためのもので、その押下により、解析用の場所に当該曲線パラメータ等を複写する。橙色の「EditParam」ボタンは、選択された複数のパラメータの組をリストアップし、その一覧を表示する等ために使われる。これについては以下に詳しく解説する。
【0042】
図12は、本発明によるパラメータリスト(ParamList)であり、採用された曲線パラメータ等の一覧(右段)と共に、群計算の初期条件等を指定する領域(左段)を有している。このパラメータリストは、前記「EditParam」ボタンの押下により出現する。前記スタックは採用された曲線パラメータ等の記憶はできるが、その一覧には支障がある。そこで、本発明によるパラメータリストが採用され、その訂正等の便宜を図った他、併せて設計者が群計算の初期条件等を指定できるようにもした。このような初期条件は、前記アプリケーションソフトウェアへ提供され、利用されるもので、このツールとの直接の関係はない。
【0043】
図12右段のGridViewで作成されたパラメータリストは、本発明が曲線パラメータ等の生成ツールであることを配慮し、数多くのショートカットメニュー(Sort
Cut Menu)を有している。ショートカットメニューはリスト(gridView1)内で右クリックすると出現し、図13のような内容を有している。パラメータリスト内の数値は自由に変更できるが、前記諸条件を満たす保証は一切ない。その変更は、「OK」ボタンを押すと、更新されて保存される。この更新は、前記スタックにおいても行われる。「Cancel」ボタンでは何の変更も反映されない。
【0044】
図13のショートカットメニューで、「ClearRowData」メニューは当該選択行のデータを全て0値にする。「RestoreRowData」メニューは、前記変更が行われた後にスッタクに記憶された元の値に戻したいときに使われる。「DeleteSelectedRow」メニューは、当該選択された行を削除し、新たに最終行(第20行目)に1行追加する操作である。従って、当該行以下の既存のデータ行が1個ずつ繰り上がる。「CopySelectedRow」メニューは、当該選択された行のデータをコピーし、保存用のスタックに退避する。「PasteCopiedRow」メニューは、前記保存用スタックのデータを当該選択行に貼り付ける。「InsertNewdRow」メニューは、選択行の位置に新たに1行挿入する操作である。選択行以下の既存の行は1行ずつ繰り下がり、最終行は消滅する。
【0045】
「ReCreateRowData」メニューは、自動設計ツールでもある。与えられた「Modulo p」値を法pとする曲線パラメータを、前記諸条件を満たすように、乱数を利用して自動生成する。従って、このメニューの利用のためには、予め適切な法p値を当該選択行上に入力しておかなければならない。自動選択の後に当該行のデータを元に戻すには、「RestoreRowData」メニューを使うことができる。
【0046】
図14には、「ReCreateAllData」メニューを実行した後のリストが表示されている。「ReCreateAllData」メニューも自動設計ツールで、全ての行のデータを第1行目の「Modulo
p」値のもとで自動選択する。従って、このメニューの利用のためには、予め適切な法p値を第1行目に入力しておかなければならない。自動生成で、偶然にパラメータ値の2個が同一値の場合は、当該後に生成されるデータにつき再度の自動生成が行われるが、通常同一値が出現することは稀である。
「SetDataToAnalyze」メニューは、前掲の「SetData」ボタンと同じ役割であり、当該選択行のデータを解析のために提供する。その実行は、当該選択行のデータを解析用の場所に複写する。
【0047】
図12左段の群計算の初期条件等を指定する領域は、このツールとの直接の関係はなく、アプリケーションソフトウェアのために提供されているが、一応の説明をする。「Initia Oop Cycles」項目は、群計算の暗号化開始設定を遮蔽するために必要な群計算の回数を指定する。秘密鍵との連携が取られる。「KeyMargin」項目は、群演算の最低演算回数を指定するもので、これも秘匿性の向上のためである。「InitialWorkingKey」項目は、複数の暗号化装置が連帯して作動するときの初期値を与える。
【0048】
「InitialBP(x)」項目は、ベースポイントを与えるx値を選択する項目で、x値は任意に入力できるが、所定の要件を満たさなければならないことから、そのテストが行われる。選択行の曲線パラメータ等の下でそのベースポイントが有効か否かは、「BP
Test」ボタンの押下で判定され、その結果が表示される。「EncryptMethod」項目は、その暗号化方式の選択のために使われる。
【0049】
図15は、本発明に係る2次双曲線群解析ツールの全体図であり、与えられた曲線パラメータ等の下での2次双曲線群の構造を明らかにする。
【0050】
図16は、本発明に係る解析集計アルゴリズムを示したフロー図で、それぞれ上半部は解析プロセス、下半部を集計プロセスを開示する。
【0051】
解析プロセスでは、ベースポイントと成り得る全てのx値が対象となり、そのベースポイントP(x)を出発点とする部分群Q(x)の位数kgが調べられる。最初にx=0の条件から始め、
【数2】
が平方非剰余であるかを調べる。具体的には、
【数3】
が計算され、その値が-1(平方非剰余)か+1(平方剰余)であるかを調べる。そのτ(x)値が平方非剰余であれば、そのベースポイントP(x)は当該2次双曲線群の元であり、当該ベースポイントP(x)を出発点とする部分群Q(x)の位数kgを調べる。
【0052】
k=1から始め、kP(x)を計算し、その値がゼロ点O=P(d)に一致するかが調べられる。実際にはx=dであれば足りる。k=kgのとき、kgP(x)=Oであれば、そのkg値が当該部分群Q(x)の位数になる。計算された群位数は、当該x値と共にテキストファイルに出力される。その後の集計プロセスの便宜のためである。x値は剰余群Z/pZのもとで定義されているのでp個の値が可能である。2次双曲線群の理論によれば、平方非剰余を与えるx値の数は法pの下では最大(p+1)/2個で、当該2次双曲線群の元の数、位数kに一致する。即ち、
【数4】
である。
【0053】
前記解析プロセスの終了後、集計プロセスを始める。最初にファイルの先頭から1行ずつ読み出し、当該計算された位数kgを読み取り、既に同一のkg値が存在する場合にはその値の計数個数を+1する。同一のkg値が存在しない場合には当該kg値の欄を新たに設け、その計数個数を1個とする。この方法により最後の行を処理した後、群位数kgの大きさの順番に並べ替える。表示リストには、存在したkg値の異なる値の数の分だけ大きさの順に項別表示する。
【0054】
図17は、解析で用いる曲線パラメータ値等の確認を行っている。「ConfirmSet」ボタンを押すと、前記「SetData」ボタン等で指定した曲線パラメータ値等の確認を、リスト(listBox5)内の表示により行うことができる。
この例では「p=1031,a=244,b=167,c=1,d=145」と表示されている。
【0055】
図18は、解析実行のために「Analyze」ボタンを押したときの、その実行結果を表示している。その解析プロセスは図15上段に示されている。実行結果は、ファイルにも出力されるが、リストにも表示することにした。例えば、「Q(1);
kg=129;」とあるのは、ベースポイントP(1)を始点として群演算を開始したとき、129P(1)に至ったとき始めてゼロ元Oと一致したことを意味する。従って、このベースポイントP(1)を有する部分群Q(1)の位数はkg=129と言うことになる。なお、法pの値が大きく、群演算の負担が大きいときには、プログレスバーでその実行の進行度を知ることができる。
【0056】
リスト内には全ての実行結果が表示されているが、このままでは群構造全体の有効な情報を引き出すことはできない。そこで、「DataSum」ボタンを押して、データの集計、整理を自動的に行う。この集計は前記ファイルの検索により実行され、その集計プロセスは図15下段に示されている。
【0057】
例えば、「The number of Q(x) with kg=516 is 168.」とあるのは、この2次双曲線群で位数kgを有する部分群Q(x)でkg=516であるものの個数は、全部で168個であることを意味する。リスト上部には、「rank
k=516」と表示され、発見された部分群位数のうち最大のものを表示している。これは2次双曲線群の群位数kが516であることを示している。2次双曲線群の理論によれば、位数kgを有する共役部分群Q(x)の個数は、法pが素数であるときφ(kg)個であるので、φ(516)=168により、その理論の確認をすることができる。しかし、ここでは理論と関係なく、群演算のみが実行されその結果が表示されている、と言う点に注意しなければならない。理論は現象を説明するために後から付けた理屈に過ぎない。
【0058】
設計者は、図19のリスト内の1行を青く選択した後に「Precisely」ボタンを押すと、その集計結果の詳細を知ることができる。図20は、その様な詳細結果の一例で、図19のリスト内の第2行目選択した場合の結果である。群位数kg=258を与える共役部分群Q(x)の個数は84個あり、それ等の一覧が昇順に「Q(16);Q(17);Q(31);Q(43);・・・」のように表示されている。
【0059】
ここでは、更に各部分群の詳細な構成を表示することができる。図21は、その様な詳細結果の一例で、図20に示された部分群Q(16)の詳細な構造を示してある。この表示は、図20の該当部分群を青く選択した後、再び「Precisely」ボタンを押すとその表示をすることができる。
「1P=(16,326),2P=(397,609),3P=(683,901),4P=(865,372),5P=(723,335),・・・」と表示されたのは部分群Q(16)の258個の各元に対応する。各数値は、例えば1P=P(16)、2P=
P(16)+P(16)の意味である。
【0060】
演算結果の取得には、リストボックス内で右クリックしたときに現れるショートカットメニューを利用することができる。「Copy」、「Paste」、及び「SellectAll」のように、複写、貼り付け、及び全選択のメニューを用意した。
【0061】
図6は、本発明に係る拡張2次双曲線群の解析ツールである。拡張2次双曲線群では、法nは合成数で、法が素数の場合に比べてかなり複雑な構造を有する。実際この数年間で理論的な究明が進んで、かなりの事実が明らかになっている。しかし、未だ明らかでなく、数値計算のみの手探りの分野も少なくない。このツールを提供する目的は、主に研究・開発の用途である。
【0062】
設計者が、法nの候補と考える数値をテキストボックス(textBox4)に入力し、「CalcEHCG」ボタンを押下すると、図22に示すように、リストボックス(listBox6)内に種々の計算結果が表示される。何を計算したのかは、順次説明することにする。
【0063】
図23では、n=1027の場合に、その計算結果を全て明示した。
第1行目の「EHCG
modulo: n=1027=13^1*79^1」は、法nの素因数分解表示で、これにより実際に法nが合成数であることが示される。
第2行目の「GruopRank:
k=280=7*40」は、拡張2次双曲線群の群位数がk=280であることを示し、次の積表示は拡張形でない2次双曲線群の群位数k1,k2との関係が示されている。法nの構成素因数p1=13,p2=79から生成される2次双曲線群の群位数k1,k2は、k1=(p1+1)/2=7,
k2=(p2+1)/2=40であり、ここではk=k1k2の関係が成立していることを確認できる。GCD(k1,k2)≡(k1,k2)=1だからである。(k1,k2)≠1の例は、後で取り扱う。
第3行目の「Max rank of sub-groups: kq=280;」は、群位数の最大値がkq=280であることを示している。2次双曲線群の理論によればkq=LCM(k1,k2)≡[k1,k2]であり、kq=
[7,40]=280であるので、理論値と一致する。
【0064】
第4行目以下には、本発明に係る拡張オイラー関数(GCD totient)Φm(x)の計算結果が示され、従来のオイラー関数(Euler’s totient)φとの比較が行なわれている。
例えば「φ(280)=96;Φ(280)=96;」とするのは、双方の値が一致することを示すが、この理由は(k1,k2)=1だからであり、(k1,k2)≠1の場合はこの様にならない。なお、次数m=2であるが、省略表示されている。
「Φ(280):=+280*1-140*1-56*1+28*1-40*1+20*1+8*1-4*1」の各項の係数は1であるので、
拡張オイラー関数の値はオイラー関数の値と一致する。これは、次のオイラー関数に係る級数公式と等価である。但し、μはメービウス関数である。
【数5】
・・・・(6―1)
【0065】
後半の「Σφ(d|kq)=280;ΣΦ(d|kq)=280=1*kq;」という表示は、次のオイラー関数に係る公式
【数6】
・・・・(6―2)
を、実際に各項を計算して確認している。ここでも(k1,k2)=1の場合は、拡張オイラー関数の値はオイラー関数の値と一致する。
【0066】
次の行の「Σ(-1)^(kq/d)Φ(d|kq)=0=-96+48+24-24-16+24+12+8+6+4-4+6+4+2+1+1」は拡張オイラー関数の計算式であるが、次のオイラー関数に関する公式
【数7】
・・・・(6―3)
に対応している。
【0067】
次の行の「Presentation of the GCD Set」は、本発明に係る拡張オイラー関数の導出の過程で考慮される積集合(the GCD
Set)の要素(GCD component)hの計算値であり、m次までの要素が全て計算されている。
【0068】
図24では、n=1035の場合に、その計算結果を全て明示した。
第1行目の「EHCG
modulo: n=1035=3^2*5^1*23^1」は、法nの素因数分解表示で、これにより実際に法nが合成数であることが示される。
第2行目の「GruopRank:
k=216=6*3*12」は、拡張2次双曲線群の群位数がk=216であることを示し、次の積表示は拡張形でない2次双曲線群の群位数k1,k2,k3との関係が示されている。法nの構成素因数p1=3,p2=5,p3=23から生成される2次双曲線群の群位数k1,k2,k3は、k=ph-1(p+1)/2であるので、k1=6,
k2=3, k2=12であり、ここではk=k1k2k3の関係が成立していることを確認できる。(k1,k2,k3)=3≠1であるので、群位数間に共通の素因数が存在する。なお、次数m=3であるが、省略表示されている。
第3行目の「Max
rank of sub-groups: kq=12;」は、群位数の最大値がkq=12であることを示している。2次双曲線群の理論によればkq=
[k1,k2,k3]=[6,3,12]=12であり、理論値と一致する。
【0069】
第4行目以下には、本発明に係る拡張オイラー関数Φm(x)の計算結果が示され、従来のオイラー関数φとの比較が行なわれている。
例えば「φ(12)=4;Φ(12)=104;」とするのは、双方の値が一致しないことを示すが、この理由は
(k1,k2)≠1だからである。(k1,k2)≠1の場合、拡張オイラー関数Φm(x)の級数表示の各項における係数は1以上の整数になる。例えば、「Φ(12):=+12*18-6*18-4*2+2*2」では、それぞれの整数係数は18,18,2,2である。これは拡張オイラー関数Φm(x)の級数表示が
【数8】
・・・・(6―4)
と言う形になるからである。Fは倍率関数と呼んでいるが、F=1であれば(6―1)式と一致する。
【0070】
後半の「Σφ(d|kq)=12;ΣΦ(d|kq)=216=18*kq;」という表示は、次の拡張オイラー関数に係る公式
【数9】
・・・・(6―5)
を、実際に各項を計算して確認している。
【0071】
次の行の「Σ(-1)^(kq/d)Φ(d|kq)=0=-104+78-4+26+3+1」は、拡張オイラー関数に係る公式(証明は後出)
【数10】
・・・・(6―6)
の計算値であり、理論との一致を確認することができる。
【0072】
次の行の「Presentation of the GCD Set」は、本発明に係る拡張オイラー関数の導出の過程で考慮される積集合の要素hの計算値であり、m次までの要素が全て計算されている。
【0073】
図22の「Graphics」ボタンは、拡張オイラー関数のグラフィックツールを起動する。これについての詳細を以下に説明する。
【0074】
図25は、拡張オイラー関数のグラフィックツールで、主に視覚上オイラー関数との差異を明らかにする。特に無限遠(n→∞)での拡張オイラー関数の漸近曲線等の研究道具として最適である。図25の「X-mag」値及び「Y-mag」値は表示倍率の変更を可能にし、「Origin」値は原点の移動を可能にする。下段の「Reset」ボタンは、グラフ上に様々な書き込みを行ったものをクリアするときに使い、常に図25の初期状態を回復する。
【0075】
図26は前記グラフィックツールで、「DispAll」ボタンを押したときの更新表示で、オイラー関数値(Green) φ(n)と拡張オイラー関数値(Cyan) Φm(n)の表示を行っている。双方の値が一致している場合には、色の濃さの違いからオイラー関数値(Green)だけが記載されているように見える。
【0076】
図27は、オイラー関数値と拡張オイラー関数値の比(Ratio)の表示で、前記グラフィックツールで、「Ratio」ボタンを押したときの更新表示である。表示上、比(Ratio)は黒点で示されている。拡張オイラー関数値Φm(n)とオイラー関数値φ(n)との比は理論的にも整数で、割り切れると言うことが知れていて、その確認を行うことができる。また、当該比の平均値(AveRatio)が赤線で、Log平均値(LogRatio)が青線で、それぞれ示されている。
関数値の表示等を行った後に、マーカ(marker)の書き込みをすることができる。
【0077】
図28は、n値にn=550を指定し「Express」ボタンを押したときの図面であり、当該n値に該当する場所に、当該n値から派生する部分群の最大位数kqにつき、拡張オイラー関数値Φm(kq)を赤線で、オイラー関数値φ(kq)を青線で示した図である。欄外には、kq=30,
φ(kq)=8, Φ(kq)=32, Ratio=4と数値が示される。このマーカは、表示窓(pictureBox1)上でのマウスの左クリックでも表示することができる。
【0078】
図29は、関数表示機能の例示であり、前記マーカと同様の補助表示を与える。表示窓(pictureBox1)上でのマウスの右クリックで生じるコンテキストメニューでは、関数表示の一つを選択することができる。経験から、y=x^0.7以上の傾斜を有する関数は採用されず、y=Log(1+x)のような関数が幾つか選ばれた。図中、y=x^0.5の関数が青い点線で表示され、拡張オイラー関数値の増加傾向や、拡張オイラー関数の漸近形を知る手掛かりになる。
【0079】
2次双曲線群の理論
ここからは、2次双曲線群の理論、特に本発明に係る拡張2次双曲線群の解析ツールで紹介されている上記拡張オイラー関数(GCD totient)についての説明をする。この理論は双曲線暗号の数学的な背景を強化するものである。
【0080】
拡張オイラー関数の着想は、既に特開2009-223035号で開示されていた。 その関数形を推定する方法は、2次双曲線群の群計算を合成数である法nの下で行い、全ての部分群の群位数を計算し、計数すると言うものである。位数kgを与える共役部分群Q(x)の個数がΦ(kg)個であるとしたとき、既にGCD関数への依存性が見出されていた。例えば、法nがn=p1p2という2個の素因数の積であ表されたとき、当該素因数から派生する部分群の位数k1,k2につき、
【数11】
・・・・(8―1)
と言う形をしていた。
【0081】
理論の出発点は、幾つかの合理的な仮定に基づいている。法pの下ではオイラー関数と拡張オイラー関数は一致していた。従って、(6―2)式が成立する。この式が意味するところは、部分群(剰余群)で位数d|nを有するものの個数はφ(d)個であり、その総個数は群位数であるnになることである。従って、拡張オイラー関数につき
【数12】
・・・・(8―2)
が成立すると考えることは自然である(仮定1)。但し、kは拡張2次双曲線群の群位数で、kqは最大位数である。即ち、共役部分群で群位数dを有するものの個数をΦ(d)個としたとき、その総個数は群位数kになる。
【0082】
ここで、可能な群位数dを最大位数kqの約数に限定している。前記文献でも指摘していたが、拡張2次双曲線群では群位数kと最大位数kq(<=k)とは、通常一致しない。群位数kは、当該拡張2次双曲線群が異なるk個の要素(P(x))を有すると言うことである。従って、全ての部分群の位数kgがその最大値kqを越えず、k個の要素の一部集合に止まるということは有り得そうである。k個の要素は何れも何処かの部分群の要素であるが、全部が纏まって入っている部分群は存在しない、そう言う状態である。
【0083】
群位数kは、法nを構成する素因数piから派生する部分群位数kiの積として与えられる(仮定2)。
【数13】
・・・・(8―3)
ここで値mは法nを構成する素因数piの個数である。数学的には、m=ν(n)と表示する。
この仮定には、法pがその巡回群を規定する、と言う基本的な考え方に立っている。従って、法nが合成数でも、値nを構成する各素因数が生成される巡回群を規定する、と考えることは自然である。この理解には状態数の考え方が有効である。各部分群はki個の状態を有するので、全体の状態数(組み合わせ)はその積で与えられる。
【0084】
法pihが生成する2次双曲線群では、ki=pih-1(pi+1)/2である。ここで、素因数pからは剰余群Z/pZしか生成されないとする考え方は狭い。現に2次双曲線群が存在し、異なる位数を有する。従って、部分群位数kiの値を固定しないで考えることが、理論の拡張につながる。
【0085】
最大位数kq(<=k)は、kq=[k1,,,km]で与えられる(仮定3)。一応仮定として扱うが、この仮定にはメービウス関数μとの関連で幾分の根拠がある。本来(8―2)式の級数和に対しては約数d|kを扱うべきであるが、係る約数dのうちkqよりも大きなものについては、kqが最小公倍数であるのでd=x*kqと言う形になり、x値に内在する素因数pにつき必ずd値にはp2という平方数、若しくはそれ以上のべき乗数が内在する。従って、μ(d)=0である。これは最大位数kqを越える部分群が存在しないか、考慮する必要がないことを意味している。(8―2)式には直接的にメービウス関数μが明示されていないが、次のメービウス変換の公式からして、この考え方は正しいと思われる。変換公式に現れる約数dは双方の式で同一だからである。
【数14】
・・・・(8―4)
【数15】
・・・・(8―5)
【0086】
次に、(8―2)式が成立する場合に、上記メービウス変換を利用して拡張オイラー関数を明示の形で求めることを考える。この過程は遠大であるので、最初に拡張オイラー関数導出の手順の概略を書いておく。
(1)群位数kを最大位数kqの関数として表示する。
[1]部分群位数kiを構成要素とする積集合(GCD set)を考え、同次GCD積に係る「簡略化定理」を導く。
[2]同次GCD積を組み合わせて1次LCMを構成する。積集合の要素hの公式と、高次LCMも解説する。
[3]約数d|kqに係る公式を導く。
(2)上記メービウス変換を利用して拡張オイラー関数を明示の形で求める。導出の後は、その一般化も行っておく。
【0087】
さて、上記手順に従い以下に詳細な説明を行う。
最初は部分群位数kiを基本構成要素とする積集合(GCD
set)の導入である。この集合の対象は群位数kであり、部分群位数kiを基本構成要素とし、その演算には部分群位数ki間のGCD演算を使う。GCD演算で区分された各領域hはこの積集合の構成要素(GCD
factor)であり、GCD演算の次元に従って同一の次元を有する。法nの構成素因数がm個であれば、最大次数はm次である。GCD演算の組み合わせは2m個あり、従ってこの積集合の要素数も2m個である。GCD演算なので各要素間には共通の素因数を有する場合がある。即ち、一般に(ha,hb)≠1(a≠b)である。但し、a,bはm次までの添え字列である。
【0088】
図30には4次(m=4)の積集合を例示した。図30で、横線領域は2次の同次要素ha,bだけを示すもので、互いに接点のみを有しmC2個が連結する。これは鎖(Chain)結合している。縦線領域は3次の同次要素ha,b,cだけを示すもので、互いに接点のみを有しmC3個が連結する。ここでa次の同次GCD積
を
【数16】
・・・・(8―6)
と定義する。組み合わせ記号とは添え字の並びが違うので区別できる。a個の添え字は同一の値を有しないので全ての組み合わせmCa個の積が取られる。
【0089】
このとき添え字m値を1個増やすとどうなるのか考えてみる。
添え字mが1個増えると、それは部分群位数km+1が追加されたことを意味し、全ての1の要素hi1-iaから次数が1次高い要素hi1-iam+1が1個生成され、同時に要素hi1-iaの内容は要素hi1-iam+1の分だけ減じる。図31を参照して欲しい。即ち、部分群位数が1個追加されると、次数aの同次GCD積はmCa個からm+1Ca個になり、積の個数が増える。全体では要素の個数は2m個から2m+1個へ増える。
全体で見ると次数a固定の同次GCD積
から新たに1次高い同次GCD積
【数17】
・・・・(8―7)
が生成され、新たに生成された次数aの同次GCD積は
だけである。ここで(i1,,,ia)はa個の添え字の全ての組み合わせにつき積演算を行うという意味である。
【0090】
(8―7)式から次数aの同次GCD積
は
【数18】
・・・・(8―8)
と表せる。即ち、
【数19】
・・・・(8―9)
である。これは組み合わせ公式
【数20】
を反映している。
【0091】
ここで積集合のLCM演算、
【数21】
について考える。図31の上記位数km+1の積集合の追加で、平原(plain=各要素の単純積)を構成する領域は、追加前のGCD演算の姿を基準にすると
【数22】
であり、新たに生成された1次高い要素
【数23】
で割り切ることにより得られた。これを同次GCD積の立場から見ると、全ての同次GCDの単純積なので、前記追加後1次高い同次GCD積で割るとその重複が解消され、再び平原(各要素の単純積)が現れる。
【0092】
同次GCD積(8―6)式では全ての同次数のGCDが単純積として現れているので、位数kの積集合の1次の同次GCD積を
【数24】
と考えたとき、
【数25】
とすると1次同次GCD積内の重複が解消される。
【0093】
しかし、まだ2次同次GCD積
内の重複が解消されていない。そこで、
【数26】
とすれば2次鎖まで重複が解消され、最終的には整った形式
【数27】
により全ての次数での重複が解消され、等号が成立する。
は1個でその重複はないからである。
【0094】
上式はm値が奇数の場合で、m値が偶数の場合は
が分母側にくる。この関係から、
【数28】
・・・・(8―10)
が成立する。これは位数kとその最大位数kqの間の関係を明示する。
【0095】
ここで前記同次GCD積構造Emを以下のように定義する。
【数29】
・・・・(8―11)
【0096】
このときEmとEm+1の関係を調べる。新たに位数km+1の積集合が追加された場合、上記同次GCD積
から1次高い
が生成され(8―8)式のように
と表せたのであるから、m値の偶奇の反転を考慮して
【数30】
となる。
【0097】
ここで
は新たに生成された最高次の同次GCD積(1個)で、上記重複解消の対象とならない。従って、
【数31】
である。
【0098】
いまEmの形に合わせて同次GCD積構造
【数32】
・・・・(8―12)
と置けば、
【数33】
と表せる。
【0099】
ここで(8―7)式より最高次の同次GCD積(1個)につき
【数34】
であるから
【数35】
・・・・(8―13)
である。これは位数kとその最大位数kqの間の関係を同次GCD積構造Emの漸化式で表し得たことを意味する。
【0100】
ここで
は新たに生成された2次の同次GCD積で、
【数36】
・・・・(8―14)
であり、
と共に漸化式の一部である。
【0101】
下準備ができたので、次の「簡略化定理」を証明しておく。
‖定理8―1‖
のとき、約数
に対し
【数37】
が成立する。
【0102】
‖証明‖
いま
として1次高い同次GCD積を考える。位数km+1の積集合の追加で、d=km+1と仮定した場合である。実際には新たな位数の追加は無いが、従前の式をそのまま利用できる。従って、(8―10)、(8―11)式から
【数38】
・・・・(8―15)
である。然るに
であるから、
【数39】
、かつ、(8―13)式が成立する。従って、
【数40】
であり、
【数41】
・・・・(8―16)
と求めることができる。
【0103】
ここでFmを変数d=km+1の関数として表示するためにFm+1を考える。(8―12)式より
【数42】
であるので、(8―7)式より
【数43】
と求められる。
【0104】
実際には新たな位数の追加は無かったのであるから、
【数44】
・・・・(8―17)
である。最高次数は分子から分母へ、若しくはその逆になっている。
これは(8―17)式のような複雑な式が、
の条件下では(8―16)式のような簡単な関係と等価であることを示す。
‖q.e.d‖
【0105】
さて、1個のGCDを集合要素hの積として表現することは容易い。積集合の或る領域がki1,ki2,,,kiaの共通要素であった場合、それは1個で
と表されるが、これは要素
を意味していない。各要素hは全てのGCD演算により分割された後の姿なので、その他の位数kjについてのGCD演算が行われて始めてその領域が確定する。
が要素
と一致するのはその他の位数kjについてのGCD演算で影響を受けない場合だけである。
【0106】
最初に
であったところに、新たにkj1を追加すると、
となり、以下同様に
と急速に増加する。
【0107】
一般的には、kjbまで追加すると
【数45】
となる。右辺は全体で(b+1)項ある。例えば上式の最終項の積は変数j1j2...jb(1<=b<=m-a)の重複がない全ての組み合わせ
個の積につき取る意味であり、上式全体で
個の要素の積につき取られる。従って、全ての細分が行われると(b=m-a)、
個の要素の積につき、
【数46】
・・・・(9―1)
と言う形になり、「GCDの要素表示」を得ることができた。
【0108】
これは要素
から派生する次数が+1以上の全ての要素と積をとることを意味している。即ち、積集合において当該要素より次数の高い内側の要素だけに関係し、次数の低い外側の要素とは関係がない。このように1個のGCD値を要素の積として表現することは容易であるが、逆に1個の要素hをGCDの積として表現すること、即ち(9―1)式の逆変換を行うことは容易ではない。
【0109】
さて、要素hの単純積の内最大のものがLCMであることを考えると、或るGCDを要素hの単純積で表すことは、高次(higher order)LCMという関係を意識させる。本来の最小公倍数[kj1,,,kjb]は1次最小公倍数であり、0次最小公倍数とは部分群位数kiそのものと考える。
【0110】
そこで、以下に高次LCMを考えてみる。
始めに、次数aが固定状態(fix)の次数a+bの同次GCD積
の次数bに係る部分積を
【数47】
・・・・(9―2)
と定義したとき、b個の添え字jbは同一の値を有しないのでbに係る全ての組み合わせ
個の積が取られる。但し、添え字列[i1,,,ia]は、表記された添え字が固定状態であることを意味し、LCMとは関係ない。
【0111】
ここで、(8―8)式と同様に新たにkm+1を追加すると
【数48】
・・・・(9―3)
が成立し、
【数49】
・・・・(9―4)
である。これは組み合わせ公式
【数50】
を反映している。
【0112】
ここで積集合の複数次最小公倍数ついて考える。a次LCM、
は1個の同次GCD積
を対象にし、kjxの追加でもその高原(tableland)の高度(=次数)を維持する積集合をいう。
【0113】
さて、次数a+xの同次GCD積
には1次高い同次GCD積
が重複しており、その高原の高度を維持するにはその1次高い同次GCD積
で割らなければならない。言わば、「高地を削って台地を作り出す」のである。
【0114】
【数51】
により、新たに追加したkj1に係る同次GCD積
の重複を除ける。但し、
【数52】
である。
【0115】
しかし、
にもその重複が存在する。従って、
【数53】
となり、最終的には
【数54】
for(b=m-a)・・・・(9―5)
により等号が成立し、a次LCMの明示式を得た。但し、値bと値aとの偶奇は等しいものとした。偶奇が異なれば、最高次数の同次GCD積
は分母側に来る。
【0116】
同次GCD積
を対象にした部分最小公倍数
は、その重なりがないことから通常、次数aの全ての要素の単純積
に一致する。
は少なくとも1個の要素hi1...iaを含み、
に係る重なりが無い場合は
であって、値aより大きな次数の要素を含まないからである。
【0117】
【数55】
・・・・(9―6)
この(9―6)式で固定添え字をなくしb→m とすれば、本来の1次LCM、
に一致する。ここではa個の添え字が固定状態(fix)の場合を扱っているので、
【数56】
であるから、(9―5)式より
【数57】
for(b=m-a) ・・・・(9―7)
である。
【0118】
従って、変数aと変数mの偶奇が同じものと仮定した場合は、
【数58】
・・・・(9―7)
である。変数aと変数mの偶奇が異なるものと仮定した場合は、
【数59】
・・・・(9―8)
である。
(9―7)、(9―8)式により、要素hのGCD表示を得ることができた。予想されたように、a次以上のGCDだけで構成される。
【0119】
ここで、図32に、n=351509の拡張オイラー関数の計算結果を表示した。下部にある要素計算は、(9―7)、(9―8)式を用いている。計算結果を図面で表示したものが図33である。そこでは、群位数kiを構成する要素hの全ての積が群位数ki自身を与える。
法nを構成する4個(m=4)の素因数17,23,29,31が生成する部分群の位数9,12,15,16に対し、例えばk1=9では、
【数60】
であり、積集合の理論値と一致する。
【0120】
拡張オイラー関数導出の最終段階は、(8―4)、(8―5)式のメービウス変換を利用して拡張オイラー関数を明示の形で求めることである。その最初のステップは、定理8―1と同様に、(8―17)式を分解し、約数dに依存する項とそうでない項に分別することである。
では、
【数61】
・・・・(10―1)
【数62】
・・・・(10―2)
としたとき、変数dをkiの1つと考えて
を右辺で展開すると、変数dに依存する積と依存しない積に分けることができ、
【数63】
・・・・(10―3)
となる。
【0121】
このとき定理8―1を利用すると、
【数64】
・・・・(10―4)
が導かれる。また、(10―1)、(10―2)式の比較から、
としたとき、
【数65】
・・・・(10―5)
が成立する。なお、(8―12)式の
とこの
は一致する。
【0122】
従って(10―4)式から、
【数66】
・・・・(10―6)
であり、群位数kをkqの関数として導くことができた。そこで(8―4)、(8―5)式のメービウス変換を利用できる体勢が整った。
【0123】
(8―5)式で
としたとき、
(10―6)式と定理8―1とから
【数67】
・・・・(10―7)
であるが、ここでは(6―4)式との対応に注意したい。即ち、(8―16)式は拡張オイラー関数の級数形であって、(6―4)式で倍率関数と呼んでいたものと等しい。
【0124】
次数mを入れた表現で、
【数68】
・・・・(10―8)
である。但し、m=ν(n)は法nが有する異なる素因数の個数である。(10―8)式はGCD積を有し、本発明に係る拡張オイラー関数を「GCD
totient」と呼ぶ理由を明示している。
【0125】
次に、この(10―8)式がkg|kqに対し正しいのか、数値的に検証する。
n=1001=7*11*13の場合、k1=4,k2=6,k3=7、従ってkq=84の拡張2次双曲線群では、
kg=84,42,28,21,14,12,7,6,4,3,2,1に対しΦ(kg)=48,36,24,12,18,8,6.6,4,2,3,1であった。(10―8)式によれば、
【数69】
となり、群計算から得た集計結果と一致した。
【0126】
(10―6)式にメービウス変換(8―4)、(8―5)式を適用すると、
【数70】
・・・・(10―9)
であるが、(ki,kq)=kiであり、左辺は群位数kに等しい。再び(8―2)式(仮定1)に戻ってきた事から、これまでの過程で矛盾は発生していない。逆に言えば、(10―9)式を出発点にしていれば、(10―8)式に容易に到達できたわけである。
【0127】
ここで、kqではなく、(10―9)式を次のように約数kg|kqに拡張できるのか考えたい。その出発点は(10―9)式で
【数71】
・・・・(11―1)
が成立すると仮定することである。(11―1)式は、kg=kq,kg=1で成立しているが、その中間で成立しているかは定かではない。
【0128】
しかし、(6―2)式からオイラー関数につき
【数72】
が成立し、拡張オイラー関数では倍率関数Fを用いて
【数73】
・・・・(11―2)
が成立すると仮定すると、この倍率関数Fが(8―12)式、(8―17)式に対応すると考えれば、(8―16)式、定理8―1より、
【数74】
が自然に導かれる。従って、(11―1)式成立の証明はないが、約数kg|kqに拡張するとき(11―1)式成立に矛盾はない。
【0129】
‖定理11−1‖kg=xy,
(x,y)=1としたとき、(11―1)式がkg=x,kg=yで成立するとすれば、(11―1)式はkg=xyでも成立する。
【0130】
‖証明‖ (11―1)式から、(x,y)=1としたとき、
、かつ、
が成立する。
仮定により、
、
であるので、
が成立する。
‖q.e.d‖
【0131】
GCDおよび拡張オイラー関数の何れもが乗積的だからである。しかし、このことは(11―1)式が証明されたことを意味していない。にもかかわらず、群計算の計数結果は(11―1)式の成立を支持している。以下は数値計算の結果である。
EHCG modulo:
n=1001; Max rank of sub-groups: kq=84;
The number of
Q(x) with kg is total Φ(kg).
φ(84)=24;Φ(84)=48;Ratio=2;Φ(84):=+84*2-42*2-28*2+14*2-12*2+6*2+4*2-2*2
φ(42)=12;Φ(42)=36;Ratio=3;Φ(42):=+42*2-21*1-14*2+7*1-6*2+3*1+2*2-1*1
φ(28)=12;Φ(28)=24;Ratio=2;Φ(28):=+28*2-14*2-4*2+2*2
φ(21)=12;Φ(21)=12;Ratio=1;Φ(21):=+21*1-7*1-3*1+1*1
φ(14)=6;Φ(14)=18;Ratio=3;Φ(14):=+14*2-7*1-2*2+1*1
φ(12)=4;Φ(12)=8;Ratio=2;Φ(12):=+12*2-6*2-4*2+2*2
φ(7)=6;Φ(7)=6;Ratio=1;Φ(7):=+7*1-1*1
φ(6)=2;Φ(6)=6;Ratio=3;Φ(6):=+6*2-3*1-2*2+1*1
φ(4)=2;Φ(4)=4;Ratio=2;Φ(4):=+4*2-2*2
φ(3)=2;Φ(3)=2;Ratio=1;Φ(3):=+3*1-1*1
φ(2)=1;Φ(2)=3;Ratio=3;Φ(2):=+2*2-1*1
φ(1)=1;Φ(1)=1;Ratio=1;Φ(1):=+1*1
Σφ(d|kq)=84;ΣΦ(d|kq)=168=2*kq;
【0132】
そこで、当面は(11―1)式を拡張オイラー関数の定義式にすべき、と考える。
【数75】
・・・・(11―3)
である。その証明はできていない。
【0133】
(11―1)式の形式を維持して、更にkgから自然数xに拡張することもできる。
【数76】
・・・・(12―1)
但し、m=ν(n)であり、あくまで法nの下で定義される整数論的関数である。
【0134】
(12―1)式から、メービウス変換により
【数77】
・・・・(12―2)
である。
【0135】
拡張オイラー関数Φ(x)は定義域が狭く、(11―2)式ではkg|kqなるkg値のみしか定義されていない。無理に全自然数xで定義しようとすればx|~kqでは、x値がp|~kqであるp値を素因数として有し、当該p値に対し(13―2)式よりΦ(p)=0であるので、定理12―3よりやはりΦ(x)=0である。また、x値が全てkqと共通する素因数のみで構成された場合、x>kq,(x,kq)=y≠1なるx値に対しては、y値を構成する素因数pに付き、必ずp2等のべき乗値を含み、μ(x)=0である。これは最大位数kqを越える部分群が存在しないか、考慮する必要がないことを意味している。
これを容認すると、(12―2)式のように約数kg|kqから自然数xに拡張できる。
【0136】
以下に、(12―2)式で定義される拡張オイラー関数の性質について調べる。この結果は、本発明に係る拡張オイラー関数(GCD totient)が、基本的で、かつ、原始的(primitive)な関数であることが判明している。
最初に拡張オイラー関数が乗積的な(multiplicative)関数であることを示す。まずは、予備定理を証明しておく。
【0137】
素因数の積集合におけるGCDには特別な性質が成立する。
‖予備定理12−1‖素因数の積集合Sで(A,B)=1ならば、
【数78】
が成立する。ただし、
である。
【0138】
‖証明‖xの1の素因数piにつき、それぞれ
、
、
であるが、(A,B)=1ならばeA 若しくはeBが0である。eA=0であれば、
、
であり、
が成立する。
同様にeB=0であれば、
が成立する。
従って、何れの場合でも
が成立する。
xの1の素因数piにつき与式が成立するので、xの他の素因数pjでその積pipjを考える。
そこでは(pi,pj)=1であるから、GCDの可換性により、同様の議論から
が成立し、結局、
が成立する。従って、他のxの素因数についても同様に扱える。
例えば、
につき
であり、これは
を意味する。
‖q.e.d‖
【0139】
次にオイラー関数φが乗積的(multiplicative)であることを示しておく。
‖予備定理12−2‖
ならば、
【数79】
である。
【0140】
‖証明‖オイラー関数φの級数展開
【数80】
において、
【数81】
であるが、
としたとき、
、
、
より
であるので、メービウス関数の乗積的な性質から
【数82】
・・・・[1] が成立する。
次に、
のときは総和の積はその組み合わせの積にわたる総和に等しいので、
【数83】
・・・・[2]
が成立する。従って、
【数84】
である。
‖q.e.d‖
【0141】
次に拡張オイラー関数Φが乗積的(multiplicative)であることを示す。
‖定理12−3‖
ならば、
【数85】
である。
【0142】
‖証明‖拡張オイラー関数Φの級数展開
において、
【数86】
であるが、
としたとき、
、
、及び
より
、かつ、
であるので、上記[1]及び[2]が成立する。
更に、GCDの乗積的な性質から、
ならば、
【数87】
・・・・[3]
が成立する(予備定理12―1)。従って、
【数88】
である。
‖q.e.d‖
ここでは、拡張オイラー関数Φの乗積的性質が部分群位数kiに依存していないことが重要である。即ち、拡張オイラー関数Φの乗積的性質は素因数から生成された群の性質に依存していない。
【0143】
オイラー関数についての公式が拡張オイラー関数でも成立するのか検討してみる。
例えば、(6―4)式で示した
と言う公式は以下のように拡張できる。
【0144】
‖定理12−4‖
【数89】
但し、k=Пki,
である。
【0145】
‖証明‖
kqが奇数なら、d|kqも奇数であり、かつ、kq/dも奇数である。
従って、
【数90】
である。
kqが偶数なら、kq=2ekg,
d=2fdg; と置くと、kg/dgが奇数であることから、
【数91】
であり、以下のように変数分離できる。
【数92】
このうち後の[]は奇数約数に係る和で、最初の[]は、
【数93】
である。但し、級数和の範囲
で1の素因数のみからか構成されるので、後出する定理(13−1)により
【数94】
である。従って、
【数95】
である。
‖q.e.d‖
【0146】
次に数値例を示す。
(1)kqが奇数の例
EHCG modulo:
n=493=17^1*29^1
GruopRank:
k=135=9*15
Max rank of
sub-groups: kq=45;
Σ(-1)^(kq/d)Φ(d|kq)=-135=-72-32-18-4-8-1
(2)kqが偶数の例
EHCG modulo:
n=11339=17^1*23^1*29^1
GruopRank:
k=1620=9*12*15
Max rank of
sub-groups: kq=180;
Σ(-1)^(kq/d)Φ(d|kq)=0=-432+216-208+216-108+104-8+54+104-52+4+54+26+4-2+26+1+1
ここでは、kq=22*45であるので、e=2,kg=45である。
-Φ(180)+Φ(90)+Φ(45)=0;
より、Φ(45){-22+2+1}=0とも書き直せる。同様に
-Φ(60)+Φ(30)+Φ(15)=0;
-Φ(36)+Φ(18)+Φ(9)=0;-Φ(20)+Φ(10)+Φ(5)=0;
-Φ(12)+Φ(6)+Φ(3)=0; -Φ(4)+Φ(2)+Φ(1)=0; が成立している。
【0147】
次に、拡張オイラー関数(GCD totient)Φ(x)が特定の条件下でオイラー関数φ(x)に帰着することを示しておく。
‖定理13−1‖合成数である法nから派生する部分群の位数kiにつき、互いに共通する素因数を有しない場合には、拡張オイラー関数Φ(x)はオイラー関数φ(x)に一致する。
即ち、
で部分群位数ki=ki(pi)、群位数k=Πki、最大位数kq=[k1,k2,,,km]である場合に、任意の添え字i,jにつき(ki,
kj)=1ならば、Φ(x)=φ(x)である。
【0148】
‖証明‖(ki,
kj)=1ならば、拡張オイラー関数
において、GCDの乗積的性質(予備定理12―1)により
【数96】
であるが、k=khkq、(x/d)|kqであるので、約数x/dは群位数kで割り切れる。よって、
【数97】
である。そこで、
【数98】
である。
‖q.e.d‖
【0149】
次に、拡張オイラー関数Φ(n)の積表示を検討する。オイラー関数については、
【数99】
・・・・(13―1)
という積表示があるが、拡張オイラー関数Φ(n)でもその積表示があれば有用である。
【0150】
最初にΦ(pe)を検討する。最初に(12―1)式で、x=
peと置いてみる。値xが1個の素因数で構成されるので、メービウス関数μ(d)の定義から、xの約数のうちd=1,pの場合だけを検討すれば足りる。
【数100】
・・・・(13―2)
である。素因数の個数m=1であるので、上式より
Φ(pe)=φ(pe)=
pe-pe-1である。
素因数の個数m>1であれば、変数xの素因数pに係る指数eに等しいかより大きなeiに係るkiの個数α(>=0)につき
である。
従って、(13―2)式より
【数101】
・・・・(13―3)
若しくは
【数102】
・・・・(13―4)
と求められる。それ故、一般にkiに依存するのでΦ(pe)の値が一意に定まることはない。
【0151】
ここで拡張オイラー関数Φ(x)とオイラー関数φ(x)の比(Ratio)を検討する。既に本発明に係るグラフィックツールにおいて、オイラー関数値と拡張オイラー関数値の比の表示で説明していたように、以下の定理が成立する。
‖定理13−2‖拡張オイラー関数Φ(x)はオイラー関数φ(x)で割り切れる。
【0152】
‖証明‖
(13―1)、(13―2)、(13―3)式より、x= peの場合、
【数103】
・・・(13―5)
若しくは
【数104】
となり、α(>=1)で、拡張オイラー関数Φ(pe)はオイラー関数φ(pe)で割り切れることが分かる。然るに、kg=peであるとすれば、kg|kq
及びkq=[k1,…,km]であるので部分群位数kiの中に素因数pに関しei>=eであるようなものが必ずあり、α>=1である。
xを構成する他の素因数も同様である。
従って、(13―5)式より、拡張オイラー関数Φ(x)はオイラー関数φ(x)で割り切れる。
‖q.e.d‖
【0153】
この議論ををもう少し説明しておく。kq=[k1,…,km]より、k1,…,kmの中で素因数pに関し最高次数eMaxを有するものkMがあり、その他の指数はこれより小さいか等しく、素因数pに関し割り切れる。従ってkqの素因数pに関する次数はeMaxである。然らばe<=eMaxであるから、少なくともei>=eであるようなkiが存在し、e<=ei<=eMaxである。従って、x=kg|kqである変数xにおいて、その各素因数pjでαj>=1であることから、xに係る素因数の個数m1=ν(x)に対しΣαj>=ν(x)である。なお、比の中には法nや位数kiに含まれない新たな素因数がΣpiから派生する。
【0154】
ここで数値例で検証する。
法n=11339,k1=9,k2=12,k3=15,kq=180の拡張2次双曲線群で、
kg=3とした場合、φ(3)=2及び(13―2)式より
であるので、
比
である。(13―7)式を使った場合、p=3,e=1,α=3であるので、
であり、理論計算と一致した。この素因数q=13は新たに派生した素因数である。
【0155】
法n=351509,k1=9,k2=12,k3=15,k4=16,kq=720の拡張2次双曲線群で
kg=180とした場合、φ(180)=48及び
Φ(180)=+180*36-90*18-60*36+30*18-36*36+18*18+12*36-6*18=2592,
Ratio=54である。
(13―5)式を使った場合、kg=180=22*32*5,k1=32,k2=22*3,k3=3*5,k4=24であるから、
p1=2, e1=2,α1=2;
p2=3, e2=2,α2=1; p3=5, e3=1,α3=1; であり、
Φ(22)/φ(22)=
20+1(2+1)=6; Φ(32)/φ(32)= 32+0(1)=9;
Φ(5)/φ(5)= 50+0(1)=1;
従って、Φ(180)/φ(180)=6*9*1=54
であり、理論計算と一致した。同様に、kg=24, φ(24)=8及び
Φ(24)=+24*36-12*36-8*4+4*4=416,
Ratio=52である。
(13―5)式を使った場合、kg=24=23*3,k1=32,k2=22*3,k3=3*5,k4=24であるから、
p1=2, e1=3,α1=1;
p2=3, e2=1,α2=3;であり、
Φ(23)/φ(23)=
22+0(1)=4; Φ(3)/φ(3)= 30+0(9+3+1)=13;
従って、Φ(24)/φ(24)=4*13=52であり、理論計算と一致した。
【0156】
(13―4)式において、xを構成する素因数qは必ずしもnを構成する素因数pと一致しないので、本来
と表現すべきである。しかし、nを構成する素因数piは部分群位数kiを与えるだけで拡張オイラー関数Φ(x)の表現上直接現れない。そこで、ここでは素因数qを用いた表現はしないことにする。従って、素因数piは全てk若しくはkiに係る素因数のみで、法nとの直接の関係は無い。(13―4)式より
【数105】
・・・・(13―6)
となって、拡張オイラー関数Φ(x)の積表示を得ることができた。但し、素因数pjに関しベキ数ejに等しいかより大きなベキ数eiを有するkiの個数αjにつきαj>=1である。
【0157】
後の議論のために、拡張オイラー関数Φ(x)とオイラー関数φ(x)の比(Ratio)を明示の形で求めておく。
【数106】
・・・・(13―7)
である。また、次の表示も見易い。
【数107】
・・・・(13―8)
である。但し、素因数pjに関しベキ数ejに等しいかより大きなベキ数eiを有するkiの個数αjにつきαj>=1である。
【0158】
定理13−2から、直ちに次の定理が導かれる。
‖定理13−3‖
(a,n)=1であるようなaにつき
【数108】
である。
【0159】
‖証明‖拡張オイラー関数Φ(x)は定義域が狭く、通常x|kqなるx値のみしか定義されていない。無理に全自然数で定義しようとすればx|~kqでは、(13―2)式よりΦ(x)=0である。そこで、x|kqなるx値に対しては、(3−13)式により
とおけば、
【数109】
であり、x|~kqなるx値に対しては、
【数110】
である。
‖q.e.d‖
【0160】
次に2次双曲線群から導かれた拡張オイラー関数Φ(x)を他の拡張オイラー関数と比べてみることにする。整数論の教科書によれば著名なものとしてジョルダンのオイラー関数(Jordan’s
totient) Jm(x)がある。変数xを構成する素因数pjにつき
【数111】
・・・・(13―9)
である。これをΦ(x)の積表示(13―6)式と比べてみれば、添え字mを追加して
【数112】
・・・・(13―10)
であるので、似ていることがわかる。
【0161】
‖定理13−4‖拡張オイラー関数Φ(x)は、ki=k0(固定)とすれば、ジョルダンのオイラー関数Jm(x)に帰着する。
【0162】
‖証明‖
(13―10)式で、ki=k0(固定)とすれば、kq=LCM(k0,k0,,,k0)=k0, x|kqであるのでkqは変数xで割り切れる。また、変数αjは変数xに係る素因数pjに関しベキ数ejに等しいかより大きなベキ数eiを有する「kiの個数」であり従って、ki=k0(固定)とすればαjはmの倍数でαj=m
or 0である。 2次双曲線群ではαj>=1であった。従って、
【数113】
・・・(13―11)
である。(13―11)式は2次双曲線群から導かれた拡張オイラー関数Φ(x)が、特定の条件下で、m次のジョルダン・オイラー関数と一致することを示している。
‖q.e.d‖
【0163】
このことから、本発明に係る拡張オイラー関数(GCD totient)が、数ある拡張オイラー関数の中でも基本的で、かつ、原始的な関数であることがわかる。しかしながら、ki=k0(固定)とと言う条件は、異なる素因数から派生する部分群が全て同一の位数を有することを意味し、通常では有り得ない。この意味で、ジョルダン・オイラー関数は、その汎用性が失われている特殊関数である。
【産業上の利用可能性】
【0164】
以上のように、本発明に係る拡張オイラー関数等は未だ知られていないことが多く、研究段階の関数である。中でも拡張オイラー関数は拡張2次双曲線群の共役部分群の個数を規定する明確な意味があり、数学上も有用な関数と考えられる。そこで、本発明では拡張2次双曲線群解析ツールを設け、かつ、拡張オイラー関数のグラフィクスツールも付属させた。従って、この双曲線暗号の設計ツールが、双曲線暗号の初心者ばかりでなく、設計者、及び研究者に非常に有用である、と考えている。
【0165】
暗号の世界では、DES、RSA暗号が依然有用と考えられているが、要求されるセキュリティのレベルも向上して、ビット数の増大で計算負担も増大し、暗号の簡単な利用ができない状況に至っている。双曲線暗号は、少ないビット数計算でも多ビット暗号と等価の計算困難性を容易に付加できるので、次世代の暗号として普及する可能性がある。
【図面の簡単な説明】
【0166】
【図1】2次双曲線設計ツールの全体図である。
【図2】素数テストツールでのn=1023のテスト結果である。
【図3】素数テストツールでのn=1031のテスト結果である。
【図4】素数テストツールでの篩法アルゴリズムのフロー図である。
【図5】素数テストツールでのGermann素数判定アルゴリズムのフロー図である。
【図6】素数テストツールでのn=1237のテスト結果である。
【図7】素数テストツールでの法pの採用方法を説明した図である。
【図3A】設計ツールの上段部、曲線パラメータcの採用を説明した図である。
【図9】設計ツールの上段部、曲線パラメータaの採用を説明した図である。
【図10】設計ツールの中段部、曲線パラメータd及びbの採用を説明した図である。
【図11】設計ツールの下段部、データ保存を説明した図である。
【図12】曲線パラメータのパラメータリストの全体図である。
【図13】パラメータリストのショートカットメニューを説明した図である。
【図14】ショートカットメニューの「ReCreateAllData」を実行したリスト図である。
【図15】2次双曲線群解析ツールの全体図である。
【図16】2次双曲線群解析ツールの解析集計アルゴリズムを示すフロー図である。
【図17】2次双曲線群解析ツールの解析用曲線パラメータ等の確認を説明した図である。
【図18】2次双曲線群解析ツールの解析結果を説明した図である。
【図19】2次双曲線群解析ツールの集計結果を説明した図である。
【図20】2次双曲線群解析ツールの詳細結果の表示を説明した図である。
【図21】2次双曲線群解析ツールの詳細結果の表示、その2を説明した図である。
【図22】拡張2次双曲線群解析ツールの指定した拡張2次双曲線群の計算結果を説明した図である。
【図23】拡張2次双曲線群解析ツールの指定した拡張2次双曲線群の計算結果、その2を説明した図である。
【図24】拡張2次双曲線群解析ツールの指定した拡張2次双曲線群の計算結果、その3を説明した図である。
【図25】拡張2次双曲線群解析ツールに付属するグラフィックツールの全体図である。
【図26】拡張オイラー関数のグラフィックツールにおけるオイラー関数値と拡張オイラー関数値の表示を説明した図である。
【図27】拡張オイラー関数のグラフィックツールにおけるオイラー関数値と拡張オイラー関数値の比(Ratio)の表示を説明した図である。
【図28】拡張オイラー関数のグラフィックツールにおけるマーカの書き込みを説明した図である。
【図29】拡張オイラー関数のグラフィックツールにおける関数表示機能を説明した図である。
【図30】4次の積集合を説明した図である。
【図31】群位数の追加を説明した図である。
【図32】拡張オイラー関数による群位数kの要素計算(n=351509) を説明した図である。
【図33】群位数kの要素表示(n=351509,m=4) を説明した図である。
【符号の説明】
【0167】
【特許請求の範囲】
【請求項1】
与えられた法nが素数であることを判定するために割り数xを値2より順次大きくして値n―1に至る過程で当該xが法nで割り切れた場合に法nが素数でなく、割り切れなかった場合に法nが素数であると判定する篩法において、法nが前記篩法において素数pと判定し、かつ、q=(p+1)/2も前記篩法において素数であると判定する方法を有し、当該法pを2次双曲線群の法とする指定を行う素数判定ツールを有する双曲線暗号の設計ツール。
【請求項2】
素数判定ツールにより指定された法pにおいて、2次曲線の判別式Dが平方非剰余であるように曲線パラメータの一部を選択し、若しくは、当該2次曲線値が平方非剰余であるように曲線パラメータの他の一部を選択し、当該選択された1又は複数の値を選択窓内に提示することにより、当該曲線パラメータの指定が可能な2次双曲線群の設計ツールを有する双曲線暗号の設計ツール。
【請求項3】
指定された法p及び曲線パラメータの組を用いて、所定のベースポイントから出発した2次双曲線群の群計算を行い、その計算結果がゼロ元に一致した場合の前記群計算の回数から部分群位数kgを判定した後に、前記部分群位数kgが同一の前記ベースポイントの個数を計数して表示する2次双曲線群の解析ツールを有する双曲線暗号の設計ツール。
【請求項4】
請求項2の指定により定められた法p及び曲線パラメータの組を一体のものとして保存し、その複数の組の1個を請求項3に係る2次双曲線群の解析ツールに提供する2次双曲線群の保存ツールを有する双曲線暗号の設計ツール。
【請求項5】
請求項2の指定により定められた法p及び曲線パラメータの組を一体のものとして保存し、その複数の組の全てをリスト化して表示し、かつ、編集することができ、かつ、その複数の組の1個を請求項3に係る2次双曲線群の解析ツールに提供する2次双曲線群の編集ツールを有する双曲線暗号の設計ツール。
【請求項6】
法nを指定し、当該法nにおける拡張2次双曲線群の群計算を拡張オイラー関数式により行い、その結果を集計し、表示する機能を有する拡張オイラー関数の解析ツールを有する双曲線暗号の設計ツール。
【請求項7】
法nを指定し、当該法nにおける拡張2次双曲線群の群計算を拡張オイラー関数式により行い、その結果をグラフ表示する機能を有する拡張オイラー関数のグラフィックツールを有する双曲線暗号の設計ツール。
【請求項1】
与えられた法nが素数であることを判定するために割り数xを値2より順次大きくして値n―1に至る過程で当該xが法nで割り切れた場合に法nが素数でなく、割り切れなかった場合に法nが素数であると判定する篩法において、法nが前記篩法において素数pと判定し、かつ、q=(p+1)/2も前記篩法において素数であると判定する方法を有し、当該法pを2次双曲線群の法とする指定を行う素数判定ツールを有する双曲線暗号の設計ツール。
【請求項2】
素数判定ツールにより指定された法pにおいて、2次曲線の判別式Dが平方非剰余であるように曲線パラメータの一部を選択し、若しくは、当該2次曲線値が平方非剰余であるように曲線パラメータの他の一部を選択し、当該選択された1又は複数の値を選択窓内に提示することにより、当該曲線パラメータの指定が可能な2次双曲線群の設計ツールを有する双曲線暗号の設計ツール。
【請求項3】
指定された法p及び曲線パラメータの組を用いて、所定のベースポイントから出発した2次双曲線群の群計算を行い、その計算結果がゼロ元に一致した場合の前記群計算の回数から部分群位数kgを判定した後に、前記部分群位数kgが同一の前記ベースポイントの個数を計数して表示する2次双曲線群の解析ツールを有する双曲線暗号の設計ツール。
【請求項4】
請求項2の指定により定められた法p及び曲線パラメータの組を一体のものとして保存し、その複数の組の1個を請求項3に係る2次双曲線群の解析ツールに提供する2次双曲線群の保存ツールを有する双曲線暗号の設計ツール。
【請求項5】
請求項2の指定により定められた法p及び曲線パラメータの組を一体のものとして保存し、その複数の組の全てをリスト化して表示し、かつ、編集することができ、かつ、その複数の組の1個を請求項3に係る2次双曲線群の解析ツールに提供する2次双曲線群の編集ツールを有する双曲線暗号の設計ツール。
【請求項6】
法nを指定し、当該法nにおける拡張2次双曲線群の群計算を拡張オイラー関数式により行い、その結果を集計し、表示する機能を有する拡張オイラー関数の解析ツールを有する双曲線暗号の設計ツール。
【請求項7】
法nを指定し、当該法nにおける拡張2次双曲線群の群計算を拡張オイラー関数式により行い、その結果をグラフ表示する機能を有する拡張オイラー関数のグラフィックツールを有する双曲線暗号の設計ツール。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【公開番号】特開2011−137897(P2011−137897A)
【公開日】平成23年7月14日(2011.7.14)
【国際特許分類】
【出願番号】特願2009−296536(P2009−296536)
【出願日】平成21年12月26日(2009.12.26)
【出願人】(709007423)
【Fターム(参考)】
【公開日】平成23年7月14日(2011.7.14)
【国際特許分類】
【出願日】平成21年12月26日(2009.12.26)
【出願人】(709007423)
【Fターム(参考)】
[ Back to top ]