JP2007171412A - 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム - Google Patents

鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム Download PDF

Info

Publication number
JP2007171412A
JP2007171412A JP2005367021A JP2005367021A JP2007171412A JP 2007171412 A JP2007171412 A JP 2007171412A JP 2005367021 A JP2005367021 A JP 2005367021A JP 2005367021 A JP2005367021 A JP 2005367021A JP 2007171412 A JP2007171412 A JP 2007171412A
Authority
JP
Japan
Prior art keywords
integer
calculating
key
encryption
rational
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005367021A
Other languages
English (en)
Other versions
JP4685621B2 (ja
Inventor
Toshiyuki Miyazawa
俊之 宮澤
Tetsutaro Kobayashi
鉄太郎 小林
Tatsuaki Okamoto
龍明 岡本
Shigenori Uchiyama
成憲 内山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2005367021A priority Critical patent/JP4685621B2/ja
Publication of JP2007171412A publication Critical patent/JP2007171412A/ja
Application granted granted Critical
Publication of JP4685621B2 publication Critical patent/JP4685621B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】既存の計算機でも比較的容易に利用可能でありながら、量子計算機が実現しても解読できないナップザック問題を安全性の拠り所とした公開鍵暗号を提供する。
【解決手段】素数冪の積である合成数Nを法とした既約剰余類群(Z/NZ)×の部分巡回群において乗法型ナップザック暗号を構成する。あるいは、代数体Kの整数環Zにおける複数の素イデアルの積νを法とした既約剰余類群(Z/ν)×の巡回部分群において乗法型ナップザック暗号を構成する。
【選択図】図10

Description

本発明は、情報セキュリティ技術に関し、より詳しくはナップザック問題を拠り所とする公開鍵暗号に関する。
公開鍵暗号は、その安全性の拠り所とする問題によって類別される。安全性の拠り所となる問題としては、素因数分解問題、離散対数問題などがある。そして具体的には、素因数分解問題を拠り所にした公開鍵暗号としてはRSA暗号、離散対数問題を拠り所とした公開鍵暗号としてはPSEC暗号などが挙げられる。
ところで、いわゆる量子計算機が実現すると、Shorによって提案されたアルゴリズムを用いることで、素因数分解問題や離散対数問題を非常に効率的に解くことが可能となることが知られている。従って、これら問題に基づく公開鍵暗号は完全に解読されてしまう。
これに対し、量子計算機が実現しても解読が困難であると考えられているナップザック問題を安全性の拠り所とした公開鍵暗号として、西暦2000年に岡本龍明、田中圭介、内山成憲が提案した公開鍵暗号(以下、「OTU暗号」と呼ぶ。)がある(特許文献1、特許文献2、特許文献3、非特許文献1参照。)。
特許第3615132号公報 特許第3615133号公報 特許第3615137号公報 T. Okamoto, K. Tanaka, S. Uchiyama, "Quantum Public-Key Cryptosystems", LNCS 1880, pp.147-165, Springer-Verlag, 2000
OTU暗号は、鍵生成の過程において、有限体上の離散対数問題に関する複数回の計算を必要とする。離散対数問題は量子計算機を用いることで容易に計算可能であるが、既存の計算機を用いた場合、剰余計算の法である素数pのビット長が長いとき(例えば素数pが1024ビットの場合など)の離散対数問題を解くことは、現状の計算機能力や技術においては容易なものではない。
そのため、OTU暗号は、量子計算機が実現した後に有効的な公開鍵暗号と言えるが、反面、現在の計算機で利用することが容易なものとは言い難い。
そこで本発明は、既存の計算機でも比較的容易に利用可能でありながら、量子計算機が実現しても解読できないナップザック問題を安全性の拠り所とした公開鍵暗号(鍵生成、暗号化および復号化を実現する各装置、これら装置で構成されるシステムおよびその方法)を提供することを目的とする。
上記課題を解決するために、本発明では、鍵生成装置は、s個の素数冪q〔1≦j≦s〕、正の有理整数nおよびkを記憶する記憶手段と、s個の素数冪q〔1≦j≦s〕の積を演算して合成数Nを算出する合成数算出手段と、各既約剰余類群(Z/qZ)×〔1≦j≦s〕の生成元となる有理整数gを算出する生成元算出手段と、どの2つも互いに素である有理整数p〔1≦i≦n;但し、各有理整数pは合成数Nと互いに素である。〕を算出する秘密鍵集合算出手段と、各i〔1≦i≦n〕に対してgai≡p(mod N)〔但し、gの指数aを記号aiで表している。〕を満たす有理整数aを算出するナップザック生成因子算出手段と、乱数dを生成して、これを出力する乱数生成手段と、各有理整数a〔1≦i≦n〕に乱数dを加算して有理整数b〔1≦i≦n〕を生成するナップザック生成手段とを備え、公開鍵は少なくとも正の有理整数k、有理整数b〔1≦i≦n〕、秘密鍵は合成数N、正の有理整数k、有理整数g、乱数d、有理整数p〔1≦i≦n〕であるとする。また、暗号化装置は、公開鍵(少なくとも正の有理整数k、有理整数b〔1≦i≦n〕)および平文Mを記憶する記憶手段と、平文を符号列に変換し(符号変換)、符号列を平文に変換する(逆符号変換)ことが可能な符号変換方式によって、平文Mを長さn、重みkの符号列m={m}〔1≦i≦n;但し、Σi=1 =kとする。〕に変換する符号変換手段と、符号列mおよび公開鍵bから暗号文c=Σi=1 を生成する暗号化手段とを備える。そして、復号化装置は、秘密鍵(合成数N、有理整数g、乱数d、有理整数p〔1≦i≦n〕)および暗号文cを記憶する記憶手段と、暗号文cから秘密鍵kと秘密鍵dとの積を減算して指数rを算出する指数算出手段と、指数r、秘密鍵gおよびNからu≡g(mod N)を演算した冪乗剰余演算結果uを算出する冪乗剰余演算手段と、冪乗剰余演算結果uを各秘密鍵p〔1≦i≦n〕で除し、割り切れた場合と割り切れなかった場合とでそれぞれ異なる符号値wを与え、符号列w={w}〔1≦i≦n〕を算出する符号再生手段と、上記暗号化装置における符号変換手段で用いた符号変換方式によって、符号列wを平文に変換してこの平文を出力する復号化手段とを備える。これら鍵生成装置、暗号化装置および復号化装置がそれぞれデータ送信可能に接続されて乗法型ナップザック暗号システムが構成される。
このように、素数冪の積である合成数Nを法とした、既約剰余類群(Z/NZ)×の部分巡回群において乗法型ナップザック暗号を構成する。
また、上記課題を解決するために、本発明では、鍵生成装置は、正の有理整数n、kを記憶する記憶手段と、少なくとも代数体Kの整数環Zのイデアルνを設定する基底設定手段と、各既約剰余類群(Z/τ×〔1≦j≦s;τはイデアルνを構成するどの2つのノルムも互いに素な素イデアルである。〕の生成元となる整数環Zの整数gを算出する生成元算出手段と、どの2つのノルムも互いに素である整数環Zの整数p〔1≦i≦n;但し、各整数pのノルムはイデアルνのノルムと互いに素である。〕を算出する秘密鍵集合算出手段と、各i〔1≦i≦n〕に対してgai≡p(mod ν)を満たす有理整数aを算出するナップザック生成因子算出手段と、乱数dを生成して、これを出力する乱数生成手段と、各有理整数a〔1≦i≦n〕に乱数dを加算して有理整数b〔1≦i≦n〕を生成するナップザック生成手段とを備え、公開鍵は少なくとも正の有理整数k、有理整数b〔1≦i≦n〕、秘密鍵は少なくともイデアルν、正の有理整数k、整数環Zの整数g、乱数d、整数環Zの整数p〔1≦i≦n〕であるとする。また、暗号化装置は、公開鍵(少なくとも正の有理整数k、有理整数b〔1≦i≦n〕)および平文Mを記憶する記憶手段と、平文を符号列に変換し(符号変換)、符号列を平文に変換する(逆符号変換)ことが可能な符号変換方式によって、平文Mを長さn、重みkの符号列m={m}〔1≦i≦n;但し、Σi=1 =kとする。〕に変換する符号変換手段と、符号列mおよび公開鍵bから暗号文c=Σi=1 を生成する暗号化手段とを備える。そして、復号化装置は、秘密鍵(少なくともイデアルν、正の有理整数k、整数環Zの整数g、乱数d、整数環Zの整数p〔1≦i≦n〕)および暗号文cを記憶する記憶手段と、暗号文cから秘密鍵kと秘密鍵dとの積を減算して指数rを算出する指数算出手段と、指数r、秘密鍵gおよびνからu≡g(mod ν)を演算した冪乗剰余演算結果uを算出する冪乗剰余演算手段と、冪乗剰余演算結果uを各秘密鍵p〔1≦i≦n〕で除し、割り切れた場合と割り切れなかった場合とでそれぞれ異なる符号値wを与え、符号列w={w}〔1≦i≦n〕を算出する符号再生手段と、上記暗号化装置における符号変換手段で用いた符号変換方式によって、符号列wを平文に変換してこの平文を出力する復号化手段とを備える。これら鍵生成装置、暗号化装置および復号化装置がそれぞれデータ送信可能に接続されて乗法型ナップザック暗号システムが構成される。
このように、代数体Kの整数環Zにおける複数の素イデアルの積νを法とした、既約剰余類群(Z/ν)×の巡回部分群において乗法型ナップザック暗号を構成する。
本発明は、素数冪の積である合成数Nを法とした既約剰余類群(Z/NZ)×の部分巡回群、あるいは、代数体Kの整数環Zにおける複数の素イデアルの積νを法とした既約剰余類群(Z/ν)×の巡回部分群において乗法型ナップザック暗号を構成することで、合成数を構成するより小さい素数冪あるいはイデアルνを構成するノルムがより小さい素イデアルを法として、乗法型ナップザック暗号で必要な離散対数計算を既存の計算機でも演算可能となるから、既存の計算機でも比較的容易に利用可能である。また、ナップザック問題を安全性の拠り所とするから、量子計算機が実現しても解読の虞がない。
一例として合成数Nが1024ビットの場合を考えると、従来は、1024ビットの素数を法とした離散対数計算をしなければならなかったが、本発明では、合成数Nを128ビットの素数冪8個q、q、・・・、qの積とすれば、各q(1≦i≦8)を法とした離散対数を計算すればよく、128ビット程度の離散対数計算は、現在の計算機環境においても、数体ふるい法などを利用することで、実用的な時間で解を得ることができる。
各実施形態で説明する本発明である鍵生成装置、暗号化装置および復号化装置の細部においては、整数論における数値計算処理が必要となる場合があるが、整数論における数値計算処理自体は、公知技術と同様にして達成されるので、その演算処理方法などの詳細な説明は省略する(この点の技術水準を示す整数論における数値計算処理が可能なソフトウェアとしては、例えばPARI/GP、KANT/KASHなどが挙げられる。PARI/GPについては、例えばインターネット〈URL: http://pari.math.u-bordeaux.fr/〉[平成17年12月14日検索]を参照のこと。KANT/KASHについては、例えばインターネット〈URL: http://www.math.tu-berlin.de/algebra/〉[平成17年12月14日検索]を参照のこと。)。
また、この点に関する文献として、参考文献1を挙げることができる。
(参考文献1) H. Cohen, "A Course in Computational Algebraic Number Theory", GTM 138, Springer-Verlag, 1993.
《第1実施形態》
本発明の第1実施形態を、図面を参照して説明する。
ここでは、第1実施形態の各装置(鍵生成装置、暗号化装置、復号化装置)の構成および処理、各装置で構成する乗法型ナップザック暗号システム、そのシステムにおける処理を叙述的に説明する。
第1実施形態における乗法型ナップザック暗号システムは、必要に応じて「鍵生成装置」「暗号化装置」「復号化装置」の各装置で構成される。
なお、第1実施形態では、下記の処理に係わる集合が有理整数環であることに留意しなければならない(第1実施形態で、「整数」とは「有理整数」を意味する。)。
[鍵生成装置]
(ハードウェア構成並びにハードウェア資源とソフトウェアとの協働による情報処理の実現)
図1は、鍵生成装置(1)のハードウェア構成を例示した構成ブロック図である。図1に例示するように、鍵生成装置(1)は、キーボードやポインティングデバイスなどの入力手段が接続可能な入力部(11)、液晶ディスプレイなどの出力手段が接続可能な出力部(12)、鍵生成装置(1)外部に通信可能な通信装置(例えば通信ケーブルなど。)が接続可能な通信部(13)、CPU(Central Processing Unit)(14)〔キャッシュメモリなどを備えていてもよい。〕、メモリであるRAM(15)、ROM(16)やハードディスクである外部記憶装置(17)並びにこれらの入力部(11)、出力部(12)、通信部(13)、CPU(14)、RAM(15)、ROM(16)、外部記憶装置(17)間のデータのやり取りが可能なように接続するバス(18)を備えている。また必要に応じて、鍵生成装置(1)に、CD−ROMなどの記憶媒体を読み書きできる装置(ドライブ)などを設けるとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
鍵生成装置(1)の外部記憶装置(17)には、後述する鍵(公開鍵、秘密鍵)を生成するためのプログラムおよびこのプログラムの処理において必要となるデータなどが保存記憶されている。また、プログラムの処理によって得られるデータなどは、RAM(15)や外部記憶装置(17)などに適宜に保存記憶される。
より具体的に外部記憶装置(17)〔あるいはROMなど〕には、合成数Nを生成するためのプログラム、既約剰余類群の生成元となる(合成数Nを法とする)整数gを求めるためのプログラム、ナップザック問題を解くために用いられる秘密鍵となる元の集合(以下、「秘密鍵集合」とも云う。)を生成するためのプログラム、合成数Nを法とし整数gを底として秘密鍵となる各元の指数(以下、「ナップザック生成因子」と云う。)を与えるためのプログラム、乱数を生成するためのプログラム、ナップザックを生成するためのプログラム、これらのプログラムに基づく処理を制御するための制御プログラムなどが保存記憶されている。
また、これらのプログラムの処理において必要となるデータとして、正の整数nおよびk(但し、n>kとする。)、合成数Nを与える素数冪q(1≦j≦s)が予め外部記憶装置(17)に保存記憶されているとする。なお、これらのデータは、予め鍵生成装置(1)の外部記憶装置(17)に保存記憶しておくのではなく、例えば、入力部(11)から入力されるとしてもよいし、あるいは、これらのデータを格納した記録媒体からドライブを駆動して読み込むようにしてもよく、適宜に変更可能である。
鍵生成装置(1)では、外部記憶装置(17)〔あるいはROMなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてRAM(15)に読み込まれて、適宜にCPU(14)で解釈実行・処理される。その結果、CPU(14)が所定の機能(合成数算出部、生成元算出部、秘密鍵集合算出部、ナップザック生成因子算出部、乱数生成部、ナップザック生成部、制御部)を実現する。
(鍵生成処理)
次に、図2および図3を参照して、鍵生成装置(1)における鍵生成処理の流れを叙述的に説明する。
まず、制御部(140)が、外部記憶装置(17)から、正の整数nおよびk、素数冪q(1≦j≦s)を読み込み、それぞれをRAM(15)の所定の格納領域に格納しておく。以後、「RAMから○○を読み込む」旨の説明をした場合は、「RAMにおいて○○が格納されている所定の格納領域から○○を読み込む」ことを意味するとする。
なお、素数冪とは素数の冪乗を表し、冪数が1の場合も含むとする。
〔ステップS12〕
次に、合成数算出部(141)が、RAM(15)から素数冪q(1≦j≦s)を読み込み、式(1)に従った演算を行って合成数Nを算出し、この算出した合成数NをRAM(15)の所定の格納領域に格納する。
Figure 2007171412
〔ステップS13〕
次に、生成元算出部(142)が、RAM(15)から素数冪q(1≦j≦s)を読み込み、全てのj(1≦j≦s)について既約剰余類群(Z/qZ)×の生成元となる(合成数Nを法とする)整数gを算出して、この算出した整数gをRAM(15)の所定の格納領域に格納する。
この整数gの算出は、公知の方法によって可能であり、例えば次のような方法による。即ち、まず、既約剰余類群(Z/qZ)×の生成元となる整数g、既約剰余類群(Z/qZ)×の生成元となる整数g、…、既約剰余類群(Z/qZ)×の生成元となる整数gをそれぞれの既約剰余類群ごとに総当りで求め、次いで、これらの整数g、g、…、gに対して中国人剰余定理を適用して整数gを求めればよい。
より具体的に説明すると、中国人剰余定理に拠れば、互いに素な各q(1≦j≦s)について、g≡g(mod q)、g≡g(mod q)、・・・、g≡g(mod q)なる連立方程式を満たす整数gがN=Πj=1 〔式(1)〕を法として一意に決まるので、全てのj(1≦j≦s)について既約剰余類群(Z/qZ)×の生成元となる(合成数Nを法とする)整数gを算出できる〔この場合、整数gは法qに関するgの類に一致する。〕。
〔ステップS14〕
次に、秘密鍵集合算出部(143)が、RAM(15)から正の整数nおよびk、合成数Nを読み込み、以下の条件を満たす、互いに素である元の集合{p,p,・・・,p}を生成して、この集合{p,p,・・・,p}をRAM(15)の所定の格納領域に格納する。この集合{p,p,・・・,p}が秘密鍵集合である。
・条件(a):各p(1≦i≦n)は合成数Nと互いに素である。
・条件(b):集合{p,p,・・・,p}の部分集合であり、要素数がkである任意の部分集合{ph1,ph2,…,phk}が、式(2)を満たす。
Figure 2007171412
条件(a)は、元pが既約剰余類群(Z/NZ)×の元となることの条件である。
また、条件(b)は、後述の復号化処理において復号の一意性を保証するための条件である。但し、式(2)は、後述する暗号化処理において平文Mを数え上げ符号方式でビット列に変換する場合に対応したものであり、例えば平文Mをパワーライン符号方式で自然数列に変換する場合には当該方式に適応した条件式になることに留意しなければならない。
いずれの符号変換方式でも満たすべき条件(b)は、式(3)で表すことができる〔式(3)は、パワーライン符号方式における条件式でもある。〕。
Figure 2007171412
集合{p,p,・・・,p}の生成は、公知の方法によって可能であり、例えば次のような方法による。即ち、p<p<・・・<pとして、既約剰余類群(Z/NZ)×の元の集合から、pn−k+1×pn−k+2×・・・×pn−1×p<Nを満たすようなn個の元を選択すればよい。なお、既約剰余類群(Z/NZ)×の元の集合の要素数は、nより大きいとする。
〔ステップS15〕
次に、ナップザック生成因子算出部(144)が、RAM(15)から合成数N、整数g、秘密鍵集合{p,p,・・・,p}を読み込み、式(4)を満たす整数a(1≦i≦n)を算出し、この算出した整数a(1≦i≦n)をRAM(15)の所定の格納領域に格納する。この整数a(1≦i≦n)がナップザック生成因子である。
Figure 2007171412
式(4)はいわゆる離散対数問題であり、一般的には整数aを求めることは困難とされる。
しかし、合成数Nの素因子qが或る程度小さい場合(現在の技術水準では上限400ビット程度であるが、例えば64ビット〜256ビット程度でよい。)には、容易に整数aを求めることが可能である。例えば、各i(1≦i≦n)について、以下の処理を行えばよい。
〔ステップS15−1〕
各j(1≦j≦s)について、式(5)を満たす整数ai,jを計算する。素因子qが短いビット長の素数冪であれば、ai,jを求めるためには、数体ふるい法やPollardのρと呼ばれる方式(モンテカルロ法)を用いることによって、容易に計算することが可能である。
Figure 2007171412
〔ステップS15−2〕
全てのj(1≦j≦s)について、式(6)を満たす整数aを計算する。なお、φはオイラー関数である。
Figure 2007171412
〔ステップS16〕
次に、乱数生成部(145)が、乱数dを生成して、この生成した乱数dをRAM(15)の所定の格納領域に格納する。
〔ステップS17〕
次に、ナップザック生成部(146)が、RAM(15)から乱数d、整数a(1≦i≦n)を読み込み、各i(1≦i≦n)について、整数aに乱数dを加算して整数b〔1≦i≦n〕を算出し、この算出されたbをRAM(15)の所定の格納領域に格納する。このb(1≦i≦n)がナップザックである。
ここで、「整数aに乱数dを加算して整数b〔1≦i≦n〕を算出」する具体的な方法としては、例えば、b=a+dを演算して行う。なお、ナップザックであるb(1≦i≦n)の算出方法は、b=a+dなる演算に限定されるものではない。要はナップザックとして利用可能なn個の元の集合を生成できればよく、例えば次のような方法でナップザックを生成してもよい。即ち、ナップザック生成部(146)が、RAM(15)から乱数d、整数a(1≦i≦n)、合成数Nを読み込み、各i(1≦i≦n)について、b=a+d mod φ(N)を演算してbを算出し、この算出されたbをRAM(15)の所定の格納領域に格納する。
〔ステップS18〕
以上の処理を経てRAM(15)に格納されている合成数N、正の整数k、整数g、乱数dおよび秘密鍵集合{p,p,・・・,p}が秘密鍵となり、ナップザックb(1≦i≦n)、正の整数nおよびkが公開鍵となる。なお、公開鍵のうちnについてはナップザックb(1≦i≦n)の個数から得られるから、nを公開鍵に含めることは必須ではない。本明細書では、説明の便宜上、このnを含めて公開鍵とする。
制御部(140)は、通信部(13)を制御して、公開鍵(n,k,b,b,・・・,b)を暗号化装置に送信し、秘密鍵(N,k,g,d,p,p,・・・,p)を復号化装置に送信する。なお、少なくとも秘密鍵を送信する通信路は安全性が保証されたものであることが望ましい。なお、鍵生成装置(1)が復号化装置を兼ねる場合には、秘密鍵を送信する必要がない。また、公開鍵を暗号化装置に送信するのではなく、例えば公開鍵登録サーバ装置などに送信して、公開鍵登録サーバ装置がこれにアクセスした暗号化装置に公開鍵を送信する構成としてもよい。結局のところ、秘密鍵が安全に復号化装置に供給されること、公開鍵が暗号化装置に供給されること、の2点を満たせば、その供給方法に限定はない。
[暗号化装置]
(ハードウェア構成並びにハードウェア資源とソフトウェアとの協働による情報処理の実現)
図4は、暗号化装置(2)のハードウェア構成を例示した構成ブロック図である。図4に例示するように、暗号化装置(2)は、キーボードやポインティングデバイスなどの入力手段が接続可能な入力部(21)、液晶ディスプレイなどの出力手段が接続可能な出力部(22)、暗号化装置(2)外部に通信可能な通信装置(例えば通信ケーブルなど。)が接続可能な通信部(23)、CPU(Central Processing Unit)(24)〔キャッシュメモリなどを備えていてもよい。〕、メモリであるRAM(25)、ROM(26)やハードディスクである外部記憶装置(27)並びにこれらの入力部(21)、出力部(22)、通信部(23)、CPU(24)、RAM(25)、ROM(26)、外部記憶装置(27)間のデータのやり取りが可能なように接続するバス(28)を備えている。また必要に応じて、暗号化装置(2)に、CD−ROMなどの記憶媒体を読み書きできる装置(ドライブ)などを設けるとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
暗号化装置(2)の外部記憶装置(27)には、平文を暗号化するためのプログラムおよびこのプログラムの処理において必要となるデータなどが保存記憶されている。また、プログラムの処理によって得られるデータなどは、RAM(25)や外部記憶装置(27)などに適宜に保存記憶される。
より具体的に外部記憶装置(27)〔あるいはROMなど〕には、平文Mを所定のビット長に符号化するためのプログラム、符号化された平文を暗号化するためのプログラム、これらのプログラムに基づく処理を制御するための制御プログラムなどが保存記憶されている。
また、これらのプログラムの処理において必要となるデータとして、平文M、公開鍵(n,k,b,b,・・・,b)が予め外部記憶装置(27)に保存記憶されているとする。なお、平文Mは、予め暗号化装置(2)の外部記憶装置(27)に保存記憶しておくのではなく、例えば、入力部(21)から入力されるとしてもよいし、あるいは、これらのデータを格納した記録媒体からドライブを駆動して読み込むようにしてもよく、適宜に変更可能である。また、公開鍵(n,k,b,b,・・・,b)は、暗号化装置(2)の通信部(23)によって、鍵生成装置(1)から受信して外部記憶装置(27)に保存記憶されたものである。
暗号化装置(2)では、外部記憶装置(27)〔あるいはROMなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてRAM(25)に読み込まれて、適宜にCPU(24)で解釈実行・処理される。その結果、CPU(24)が所定の機能(符号変換部、暗号化部、制御部)を実現する。
(暗号化処理)
次に、図5および図6を参照して、暗号化装置(2)における暗号化処理の流れを叙述的に説明する。
まず、制御部(240)が、外部記憶装置(27)から、平文Mおよび公開鍵(n,k,b,b,・・・,b)を読み込み、それぞれをRAM(25)の所定の格納領域に格納しておく。以後、「RAMから○○を読み込む」旨の説明をした場合は、「RAMにおいて○○が格納されている所定の格納領域から○○を読み込む」ことを意味するとする。
〔ステップS22〕
次に、符号変換部(241)が、RAM(25)から平文M、公開鍵nおよびkを読み込み、平文Mを、長さnビット、ハミング(Hamming)重みkの符号列m=(m,m,・・・,m)に変換し、変換された平文をRAM(25)の所定の格納領域に格納する。
ここで、平文Mのビット長は、log2 nk┛ビットとする(後述の数え上げ符号方式の場合に相当する。)。また、m(1≦i≦n)∈{0,1}、Σi=1 =kである。つまり、ビット列mの中では、値1のものがk個、値0のものがn−k個である。
なお、記号は、*を超えない最大の整数を表し、は、n個のものからk個のものを取り出す組み合わせの総数(いわゆる二項係数に相当する。)を表す。
平文Mを、長さnビット、ハミング(Hamming)重みkのビット列mに変換する方法は公知の方法によればよく、「数え上げ符号(enumerable encoding)」という方式を用いればよい(参考文献2参照。)。なお、この方式に限定する趣旨ではなく、後述する復号化処理が可能となるためには、符号列mがΣi=1 =kという条件を満たしていれば十分であるため、符号列m=(m,m,・・・,m)はビット列ではなく自然数列でもよい。平文Mをこのような自然数列に変換する方法として、「パワーライン符号(powerline encoding)」と呼ばれる方式がある(参考文献3参照。)。このパワーライン符号方式を用いる場合には、平文Mをこの方式に適合したビット長にすればよい。パワーライン符号方式の場合には、ビット長をlog2 nk┛log2 n+k-1k┛とする。パワーライン符号方式の場合、符号化できる整数の総数は「n個のものから重複を許してk個のものを取り出す組み合わせの総数(重複組み合わせ)」に一致する。
(参考文献2) T. M. Cover, "Enumerable source encoding", IEEE Trans. Inform. Theory, vol.IT-19, pp.73-77, 1973.
(参考文献3) P. Camion, H. Chabanne, "On the Powerline system", AAECC, vo1 9, pp.405-432, Springer-Verlag, 1999.
なお、第1実施形態では数え上げ符号方式を用いることから、平文Mのビット長をlog2 nk┛ビットとしたが、このようなビット長の平文Mに限定する趣旨ではない。あるビット長の平文をビット長log2 nk┛ごとに分割し、分割された平文(分割平文)ごとに符号化を行うようにしてもよい。分割でビット長log2 nk┛よりも短い分割平文ができた場合には、足りないビット長を0で埋めてビット長をlog2 nk┛に揃えればよい。このことは、パワーライン符号方式の場合でも同様である。
〔ステップS23〕
次に、暗号化部(242)が、RAM(25)からビット列m、公開鍵b,b,・・・,bを読み込み、c=Σi=1 なる演算を行って暗号文cを算出し、この算出した暗号文cをRAM(25)の所定の格納領域に格納する。
〔ステップS24〕
制御部(240)は、通信部(23)を制御して、RAM(25)に格納されている暗号文cを復号化装置に送信する。
[復号化装置]
(ハードウェア構成並びにハードウェア資源とソフトウェアとの協働による情報処理の実現)
図7は、復号化装置(3)のハードウェア構成を例示した構成ブロック図である。図7に例示するように、復号化装置(3)は、キーボードやポインティングデバイスなどの入力手段が接続可能な入力部(31)、液晶ディスプレイなどの出力手段が接続可能な出力部(32)、復号化装置(3)外部に通信可能な通信装置(例えば通信ケーブルなど。)が接続可能な通信部(33)、CPU(Central Processing Unit)(34)〔キャッシュメモリなどを備えていてもよい。〕、メモリであるRAM(35)、ROM(36)やハードディスクである外部記憶装置(37)並びにこれらの入力部(31)、出力部(32)、通信部(33)、CPU(34)、RAM(35)、ROM(36)、外部記憶装置(37)間のデータのやり取りが可能なように接続するバス(38)を備えている。また必要に応じて、復号化装置(3)に、CD−ROMなどの記憶媒体を読み書きできる装置(ドライブ)などを設けるとしてもよい。このようなハードウェア資源を備えた物理的実体としては、汎用コンピュータなどがある。
復号化装置(3)の外部記憶装置(37)には、暗号文を復号化するためのプログラムおよびこのプログラムの処理において必要となるデータなどが保存記憶されている。また、プログラムの処理によって得られるデータなどは、RAM(35)や外部記憶装置(37)などに適宜に保存記憶される。
より具体的に外部記憶装置(37)〔あるいはROMなど〕には、暗号文cおよび秘密鍵から暗号処理に用いる指数を求めるためのプログラム、秘密鍵および前記指数から冪乗剰余演算を行うためのプログラム、冪乗剰余演算結果から符号列を再生するためのプログラム、再生された符号列を平文に変換するためのプログラム、これらのプログラムに基づく処理を制御するための制御プログラムなどが保存記憶されている。
また、これらのプログラムの処理において必要となるデータとして、秘密鍵(N,k,g,d,p,p,・・・,p)、暗号文cが予め外部記憶装置(37)に保存記憶されているとする。秘密鍵(N,k,g,d,p,p,・・・,p)は、復号化装置(3)の通信部(33)によって、鍵生成装置(1)から受信して外部記憶装置(37)に保存記憶されたものである。また、暗号文cは、復号化装置(3)の通信部(33)によって、暗号化装置(2)から受信して外部記憶装置(37)に保存記憶されたものである。なお、これらのデータを格納した記録媒体からドライブを駆動して読み込むようにしてもよく、適宜に変更可能である。
復号化装置(3)では、外部記憶装置(37)〔あるいはROMなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてRAM(35)に読み込まれて、適宜にCPU(34)で解釈実行・処理される。その結果、CPU(34)が所定の機能(指数算出部、冪乗剰余演算部、符号列再生部、復号化部、制御部)を実現する。
(復号化処理)
次に、図8および図9を参照して、復号化装置(3)における復号化処理の流れを叙述的に説明する。
まず、制御部(340)が、外部記憶装置(37)から、秘密鍵(N,k,g,d,p,p,・・・,p)、暗号文cを読み込み、それぞれをRAM(35)の所定の格納領域に格納しておく。以後、「RAMから○○を読み込む」旨の説明をした場合は、「RAMにおいて○○が格納されている所定の格納領域から○○を読み込む」ことを意味するとする。
〔ステップS32〕
次に、指数算出部(341)が、RAM(35)から暗号文c、秘密鍵kおよびdを読み込み、r=c−kdなる演算を行って指数rを算出し、この算出した指数rをRAM(35)の所定の格納領域に格納する。
なお、ここで指数rの算出方法は、鍵生成装置(1)における鍵生成処理のステップS17に対応しており、ナップザックb(1≦i≦n)をb=a+dなる演算をして算出した場合には、r=c−kdなる演算を行って指数rを算出するが、例えばナップザックb(1≦i≦n)をb=a+d mod φ(N)を演算して算出した場合には、r=c−kd mod φ(N)なる演算を行って指数rを算出することに留意しなければならない。
〔ステップS33〕
次に、冪乗剰余演算部(342)が、RAM(35)から指数r、秘密鍵Nおよびgを読み込み、u=g mod Nなる演算を行って冪乗剰余演算結果uを算出し、この算出した冪乗剰余演算結果uをRAM(35)の所定の格納領域に格納する。
〔ステップS34〕
次に、符号列再生部(343)が、RAM(35)から冪乗剰余演算結果u、秘密鍵p,p,・・・,pを読み込み、各i(1≦i≦n)について、冪乗剰余演算結果uを秘密鍵pで除し、冪乗剰余演算結果uが秘密鍵pで割り切れる場合にはm=1とし、冪乗剰余演算結果uが秘密鍵pで割り切れない場合にはm=0として、符号列(ビット列)m=(m,m,・・・,m)を求める。そして、符号列再生部(343)は、求めた符号列(ビット列)m=(m,m,・・・,m)をRAM(35)の所定の格納領域に格納する。
ステップS32〜S34の処理について補足説明をする。
鍵生成処理のステップS17において、ナップザックb(1≦i≦n)をb=a+dなる演算をして算出した場合に対応して、ステップS32において、r=c−kdなる演算を行って指数rを算出した場合で説明すると、r=c−kdなる演算は、次のような演算であることを意味する。即ち、r=Σi=1 −kd=Σi=1 (a+d)−kd=Σi=1 +d×Σi=1 −kd=Σi=1 +kd−kd=Σi=1 である(∵Σi=1 =k)。
従って冪乗剰余演算は、u=g mod N=g^(Σi=1 ) mod N=g^(m)×g^(m)×・・・×g^(m) mod Nとなる〔但し、記号^は冪乗を表す。〕。ここで式(4)および秘密鍵集合{p,p,・・・,p}のどの2つの元も互いに素であることに留意すれば、冪乗剰余演算結果uが秘密鍵pで割り切れる場合とは、冪乗剰余演算結果uがg^aを素因子として有していることに他ならず、さらに、m(1≦i≦n)∈{0,1}であることに留意すれば、m=1であることが判明する。一方、冪乗剰余演算結果uが秘密鍵pで割り切れない場合とは、冪乗剰余演算結果uがg^aを素因子として有していないことに他ならず、さらに、m(1≦i≦n)∈{0,1}であることに留意すれば、m=0であることが判明する。
〔ステップS35〕
次に、復号化部(344)が、RAM(35)から符号列(ビット列)m=(m,m,・・・,m)を読み込み、暗号化装置(2)における暗号化処理のステップS22と対応した逆変換を行い(参考文献2参照。)、平文Mを復元してこれをRAM(35)の所定の格納領域に格納する。
なお、分割平文の場合には、分割平文ごとに暗号化された各分割暗号文に対してステップS31〜S35の処理を行って、得られた分割平文を結合することで平文全体を得ることができる。
[乗法型ナップザック暗号システムとその処理]
第1実施形態の乗法型ナップザック暗号システムは、種々のシステム構成が考えられ、ここでは代表的な2形態について説明する。
(システムその1)
乗法型ナップザック暗号システム(1000)は、上記鍵生成装置(1)、暗号化装置(2)、復号化装置(3)、公開鍵登録サーバ装置(4)で構成される。図10は、乗法型ナップザック暗号システム(1000)の構成例を示す図である。
鍵生成装置(1)、暗号化装置(2)、復号化装置(3)、公開鍵登録サーバ装置(4)は、それぞれインターネットやLAN(Local Area Network)などのネットワーク(5)に通信可能に接続される。なお、ネットワーク(5)には複数の暗号化装置(2)が接続されるとしてもよい。
鍵生成装置(1)によって生成された公開鍵(n,k,b,b,・・・,b)は、いずれも乗法型ナップザック暗号システム(1000)において公開される。乗法型ナップザック暗号システム(1000)において公開される公開鍵は、鍵生成装置(1)の外部記憶装置(17)に保存記憶されるとし、ネットワーク(5)を経由して暗号化装置(2)などからアクセスされることによって配布されるものとしてもよい。しかし、鍵生成装置(1)では、秘密鍵(N,g,k,d,p,p,・・・,p)も生成されるため、不正アクセスによる秘密鍵などの漏洩に対処するため、公開鍵登録サーバ装置(4)の外部記憶装置に、乗法型ナップザック暗号システム(1000)において公開される公開鍵を保存しておくのがよい。つまり乗法型ナップザック暗号システム(1000)では、公開鍵登録サーバ装置(4)が暗号化装置(2)からのアクセスを受けることで、公開鍵の提供がなされる。
鍵生成装置(1)において生成された秘密鍵は、その秘匿性が高度に要求される。従って、少なくとも秘密鍵を送信する通信路は安全性が保証されたものであることが望ましい。もし、ネットワーク(5)が通信傍受の可能性のあるものである場合には、これを経由して復号化装置(3)に秘密鍵が送信されるのではなく、別途記憶媒体に記憶して、この記憶媒体を郵送などの手段で復号化装置(3)の下に送り、この記憶媒体から復号化装置(3)の外部記憶装置(37)に記憶させるとしてもよい。
1つあるいは複数の暗号化装置(2)は、公開鍵登録サーバ装置(4)にアクセスして公開鍵を入手し、平文Mから暗号文cを生成する。暗号化装置(2)は生成した暗号文cを、ネットワーク(5)を介して復号化装置(3)に送信する。
復号化装置(3)は、秘密鍵を用いて、ネットワーク(5)経由で受信した、暗号化装置(2)で生成された暗号文cの復号化を行う。
図11は、乗法型ナップザック暗号システム(1000)における乗法型ナップザック暗号復号方法の処理フローを示す図である。
まず、鍵生成装置(1)が公開鍵および秘密鍵を生成する(ステップS100)。ステップS100の具体的な処理は、上記ステップS12〜S17を参照のこと。次に、鍵生成装置(1)の通信部(13)が、公開鍵登録サーバ装置(4)に公開鍵を送信する(ステップS101)。そして公開鍵登録サーバ装置(4)の通信部(図示しない。)が、鍵生成装置(1)から公開鍵を受信する(ステップS102)。また、鍵生成装置(1)の通信部(13)が、復号化装置(3)に秘密鍵を送信する(ステップS103)。そして復号化装置(3)の通信部(33)が、鍵生成装置(1)から秘密鍵を受信する(ステップS104)。暗号化装置(2)は、暗号化装置(2)の通信部(23)によって公開鍵登録サーバ装置(4)にアクセスし、公開鍵を取得する(ステップS105)。次いで、暗号化装置(2)は、平文Mおよび公開鍵を用いて暗号文cを生成する(ステップS106)。ステップS106の具体的な処理は、上記ステップS22、S23を参照のこと。そして、暗号化装置(2)の通信部(23)は、復号化装置(3)に暗号文cを送信する(ステップS107)。復号化装置(3)の通信部(33)は、暗号化装置(2)から暗号文cを受信する(ステップS108)。復号化装置(3)は、秘密鍵を用いて暗号文cから平文Mを得る(ステップS109)。ステップS109の具体的な処理は、上記ステップS32〜S35を参照のこと。
なお、乗法型ナップザック暗号システム(1000)が公開鍵登録サーバ装置(4)を備えない場合は、ステップS101、S102は不要となり、ステップS105の処理は、暗号化装置(2)が、暗号化装置(2)の通信部(23)によって鍵生成装置(1)にアクセスし、公開鍵を取得するものとなる。
(システムその2)
乗法型ナップザック暗号システム(1001)は、上記暗号化装置(2)、鍵生成装置を兼ねる復号化装置(3’)で構成される。図12は、乗法型ナップザック暗号システム(1001)の構成例を示す図である。
暗号化装置(2)、鍵生成装置兼復号化装置(3’)は、それぞれインターネットやLAN(Local Area Network)などのネットワーク(5)に通信可能に接続される。なお、ネットワーク(5)には複数の暗号化装置(2)が接続されるとしてもよい。
鍵生成装置兼復号化装置(3’)によって生成された公開鍵(n,k,b,b,・・・,b)および秘密鍵(N,g,k,d,p,p,・・・,p)は、鍵生成装置兼復号化装置(3’)の外部記憶装置(37’)に保存記憶されるとし、例えば鍵生成装置兼復号化装置(3’)と暗号化装置(2)とのネットワーク(5)を介したpeer to peerな通信によって、鍵生成装置兼復号化装置(3’)が公開鍵を暗号化装置(2)に送信する。
1つあるいは複数の暗号化装置(2)は、鍵生成装置兼復号化装置(3’)から受信した公開鍵を用いて平文Mから暗号文cを生成する。暗号化装置(2)は生成した暗号文cを、ネットワーク(5)を介して鍵生成装置兼復号化装置(3’)に送信する。
鍵生成装置兼復号化装置(3’)は、秘密鍵を用いて、ネットワーク(5)経由で受信した、暗号化装置(2)で生成された暗号文cの復号化を行う。
ところで、鍵生成装置兼復号化装置(3’)は、一般的に物理的実体という視点からは1つの筐体として存在する。しかし、このことは、鍵生成装置兼復号化装置(3’)が、鍵生成装置(1)や復号化装置(3)とは全く異なる装置であることを意味しない。例えば1つの汎用コンピュータが、処理するプログラムによって鍵生成装置(1)としても復号化装置(3)としても機能し、さらに、両者のプログラムを有することで、1つの汎用コンピュータが鍵生成装置(1)および復号化装置(3)としての役割を演じることを考慮すれば、1つの汎用コンピュータが機能的側面において二面性(多面性)を有していると考えることができる。この「機能」に対応して「装置」を定義すれば、物理的実体として1個の汎用コンピュータが、鍵生成装置(1)且つ復号化装置(3)であると云える。換言して言えば、1個の汎用コンピュータで実現される鍵生成装置兼復号化装置(3’)は、鍵生成装置(1)且つ復号化装置(3)であり、あたかも鍵生成装置(1)および復号化装置(3)という2つの物理的実体が存在することと同視できる。従って、システムその2で述べたシステム構成は、(秘密鍵の送信が不要という異なる点があるものの)システムその1のシステム構成と実質的に異なるものではないことに留意しなければならない。
図13は、乗法型ナップザック暗号システム(1001)における乗法型ナップザック暗号復号方法の処理フローを示す図である。
まず、鍵生成装置兼復号化装置(3’)が公開鍵および秘密鍵を生成する(ステップS200)。ステップS200の具体的な処理は、上記ステップS12〜S17を参照のこと。次に、鍵生成装置兼復号化装置(3’)の通信部が、暗号化装置(2)に公開鍵を送信する(ステップS201)。暗号化装置(2)は、鍵生成装置兼復号化装置(3’)から公開鍵を受信する(ステップS202)。次いで、暗号化装置(2)は、平文Mおよび公開鍵を用いて暗号文cを生成する(ステップS203)。ステップS203の具体的な処理は、上記ステップS22、S23を参照のこと。そして、暗号化装置(2)の通信部(23)は、鍵生成装置兼復号化装置(3’)に暗号文cを送信する(ステップS204)。鍵生成装置兼復号化装置(3’)の通信部は、暗号化装置(2)から暗号文cを受信する(ステップS205)。鍵生成装置兼復号化装置(3’)は、秘密鍵を用いて暗号文cから平文Mを得る(ステップS206)。ステップS206の具体的な処理は、上記ステップS32〜S35を参照のこと。
《第2実施形態》
本発明の第2実施形態を、図面を参照して説明する。なお、第1実施形態に対応するハードウェア構成要素などについては、同一参照符号を付けるなどして重複説明を省略する。
第1実施形態では、各処理に係わる集合が有理整数環であったが、第2実施形態における各処理に係わる集合は、代数体の整数環である。このことに伴い、第1実施形態との対比を容易にするためできるだけ同じ記号(例えばg、p、a、bなど)を用いて説明するが、これらの記号が第1実施形態で用いたときの意味と同一であるわけではないことに留意しなければならない(第2実施形態における各処理に係わる集合が代数体の整数環であることを無視してはならない。)。
以下では、Kを代数体、Zをその整数環とする。また、「整数」とはZの要素を表し、「有理整数」は、有理整数集合Zの要素を表す。
[鍵生成装置]
(ハードウェア構成並びにハードウェア資源とソフトウェアとの協働による情報処理の実現)
第2実施形態に係わる鍵生成装置(1s)のハードウェア構成・資源は、第1実施形態の鍵生成装置(1)と同様である(図1参照。)。
鍵生成装置(1s)の外部記憶装置(17)には、後述する鍵(公開鍵、秘密鍵)を生成するためのプログラムおよびこのプログラムの処理において必要となるデータなどが保存記憶されている。また、プログラムの処理によって得られるデータなどは、RAM(15)や外部記憶装置(17)などに適宜に保存記憶される。
より具体的に鍵生成装置(1s)の外部記憶装置(17)〔あるいはROMなど〕には、既約剰余類群の生成元となる整数gを求めるためのプログラム、ナップザック問題を解くために用いられる秘密鍵となる元の集合(以下、「秘密鍵集合」とも云う。)を生成するためのプログラム、イデアルνを法とし整数gを底として秘密鍵となる各元の指数(以下、「ナップザック生成因子」と云う。)を与えるためのプログラム、乱数を生成するためのプログラム、ナップザックを生成するためのプログラム、これらのプログラムに基づく処理の制御や代数体の設定などをするための制御プログラムなどが保存記憶されている。
また、これらのプログラムの処理において必要となるデータとして、正の有理整数n、kおよびf(但し、n>kとする。)が予め鍵生成装置(1s)の外部記憶装置(17)に保存記憶されているとする。なお、これらのデータは、予め鍵生成装置(1s)の外部記憶装置(17)に保存記憶しておくのではなく、例えば、鍵生成装置(1s)の入力部(11)から入力されるとしてもよいし、あるいは、これらのデータを格納した記録媒体からドライブを駆動して読み込むようにしてもよく、適宜に変更可能である。
鍵生成装置(1s)では、外部記憶装置(17)〔あるいはROMなど〕に記憶された各プログラムとこの各プログラムの処理に必要なデータが必要に応じてRAM(15)に読み込まれて、適宜にCPU(14)で解釈実行・処理される。その結果、CPU(14)が所定の機能(生成元算出部、秘密鍵集合算出部、ナップザック生成因子算出部、乱数生成部、ナップザック生成部、制御部)を実現する。
(鍵生成処理)
次に、図14および図15を参照して、鍵生成装置(1s)における鍵生成処理の流れを叙述的に説明する。
まず、制御部(140s)が、外部記憶装置(17)から、正の有理整数n、k、fを読み込み、それぞれをRAM(15)の所定の格納領域に格納しておく。以後、「RAMから○○を読み込む」旨の説明をした場合は、「RAMにおいて○○が格納されている所定の格納領域から○○を読み込む」ことを意味するとする。
〔ステップS12s〕
次に、制御部(140s)が、RAM(15)から正の有理整数fを読み込み、f次代数体として代数体Kを、さらに、式(7)で表される代数体Kの整数環Zのイデアルνを設定する。そして制御部(140s)は、代数体Kおよびイデアルνの設定に必要な情報(例えばf次有理係数多項式などである。)をRAM(15)の所定の格納領域に格納する。なお、式(7)のτ(1≦j≦s)はどの2つのノルムも互いに素な素イデアルである。また、制御部(140s)は、剰余環Z/νの完全代表系を1つ固定し、その集合をR(ν)として設定して、R(ν)をRAM(15)の所定の格納領域に格納する。
Figure 2007171412
なお、代数体やイデアルの設定に必要な情報などについて簡単な説明を加えておく。
f次代数体は、モニック(monic)な有理整数係数f次既約多項式F(x)=x+cf−1f−1+・・・+cx+c〔cは有理整数係数〕として設定される。f次代数体の元は、次数がf次未満の有理数係数多項式として表される。また、整数環やイデアルは、有理整数環上の基底ω、ω、・・・、ω〔ωはf次未満の有理数係数多項式〕によって表される(整数環やイデアルは、Zω+Zω+・・・+Zωと表すことができるため。但し、Zは有理整数集合。)。
第2実施形態では代数体Kを設定するとしたが、必ず代数体Kを設定しなければならないということではない。予め、鍵生成装置(1s)および後述の復号化装置(3s)において、代数体Kにおいて演算を行うことを規約しておけば(つまり、予め両装置の外部記憶装置に代数体Kの設定に必要な情報を保存記憶しておけばよい。)、代数体Kを設定する必要がなく、また、代数体Kの設定に必要な情報を公開鍵にする必要がなくなる。
〔ステップS13s〕
次に、生成元算出部(142s)が、全てのj(1≦j≦s)について既約剰余類群(Z/τ×の生成元となる(イデアルνを法とする)整数gを算出して、この算出した整数gをRAM(15)の所定の格納領域に格納する。
この整数gの算出は、公知の方法によって可能であり、例えば次のような方法による。即ち、まず、既約剰余類群(Z/τ×の生成元となる整数g、既約剰余類群(Z/τ×の生成元となる整数g、…、既約剰余類群(Z/τ×の生成元となる整数gをそれぞれの既約剰余類群ごとに総当りで求め、これらの整数g、g、…、gに対して中国人剰余定理を適用して整数gを求めればよい。詳細は第1実施形態で述べたとおりであるが、第2実施形態では法がイデアルνであることに留意しなければならない。
ここで、代数体のイデアルνを法とする合同式a≡b(mod ν)は、(a−b)∈νを意味する。
〔ステップS14s〕
次に、秘密鍵集合算出部(143s)が、RAM(15)から正の有理整数nおよびkを読み込み、以下の条件を満たす、各ノルムが互いに素である元の集合{p,p,・・・,p}⊂Zを生成して、この集合{p,p,・・・,p}⊂ZをRAM(15)の所定の格納領域に格納する。この集合{p,p,・・・,p}⊂Zが秘密鍵集合である。
・条件(c):各整数p(1≦i≦n)のノルムはイデアルνのノルムと互いに素である。
・条件(d):集合{p,p,・・・,p}の部分集合であり、要素数がkである任意の部分集合{ph1,ph2,…,phk}が、式(8)を満たす。
Figure 2007171412
条件(c)は、整数pがR(ν)の元となることの条件である。
また、条件(d)は、復号化処理において復号の一意性を保証するための条件である。但し、式(8)は、暗号化処理において平文Mを数え上げ符号方式でビット列に変換する場合に対応したものであり、例えば平文Mをパワーライン符号方式で自然数列に変換する場合には当該方式に適応した条件式になることに留意しなければならない。
集合{p,p,・・・,p}⊂Zの生成は、公知の方法によって可能であり、例えば次のような方法による。素イデアルτ(1≦j≦s)のノルムが素数qの冪〔但し、第1実施形態の合成数Nを構成する素数冪qと必ずしも同じではない。〕で表されるときN=Πj=1 とすると、Nと互いに素であり、1以上N未満の整数で、次の条件(e)を満たす、どの2元も互いに素な整数p,p,・・・,pを選べばよい(0以上N未満の有理整数は、Z/νの完全代表系に含めることができる。)。
・条件(e):集合{p,p,・・・,p}の部分集合であり、要素数がkである任意の部分集合{ph1,ph2,…,phk}が、式(9)を満たす。
Figure 2007171412
〔ステップS15s〕
次に、ナップザック生成因子算出部(144s)が、RAM(15)から整数g、秘密鍵集合{p,p,・・・,p}を読み込み、式(10)を満たす有理整数a(1≦i≦n)を算出し、この算出した有理整数a(1≦i≦n)をRAM(15)の所定の格納領域に格納する。この有理整数a(1≦i≦n)がナップザック生成因子である。
Figure 2007171412
式(10)はいわゆる離散対数問題であり、一般的には有理整数aを求めることは困難とされる。
しかし、τのノルムが或る程度小さい(現在の技術水準では上限400ビット程度であるが、例えば64ビット〜256ビット程度でよい。)素イデアルのノルムの冪となるようにイデアルνを選択することによって、容易に有理整数aを求めることが可能である。例えば、各i(1≦i≦n)について、以下の処理を行えばよい。
〔ステップS15s−1〕
各j(1≦j≦s)について、式(11)を満たす有理整数ai,jを計算する。素イデアルτのノルムが短いビット長の素数冪であれば、ai,jを求めるためには、数体ふるい法やPollardのρと呼ばれる方式(モンテカルロ法)を用いることによって、容易に計算することが可能である。
Figure 2007171412
〔ステップS15s−2〕
全てのj(1≦j≦s)について、式(12)を満たす有理整数aを計算する。なお、N(τ)はτのノルムを表す。
Figure 2007171412
〔ステップS16s〕
次に、乱数生成部(145s)が、有理整数である乱数dを生成して、この生成した乱数dをRAM(15)の所定の格納領域に格納する。
〔ステップS17s〕
次に、ナップザック生成部(146s)が、RAM(15)から乱数d、有理整数a(1≦i≦n)を読み込み、各i(1≦i≦n)について、有理整数aに乱数dを加算して有理整数b〔1≦i≦n〕を算出し、この算出されたbをRAM(15)の所定の格納領域に格納する。このb(1≦i≦n)がナップザックである。
ここで、「有理整数aに乱数dを加算して有理整数b〔1≦i≦n〕を算出」する具体的な方法としては、例えば、b=a+dを演算して行う。なお、ナップザックであるb(1≦i≦n)の算出方法は、b=a+dなる演算に限定されるものではない。要はナップザックとして利用可能なn個の元の集合を生成できればよく、例えば次のような方法でナップザックを生成してもよい。即ち、ナップザック生成部(146s)が、RAM(15)から乱数d、有理整数a(1≦i≦n)を読み込み、各i(1≦i≦n)について、b=a+d mod Πj=1 (N(τ)−1)を演算してbを算出し、この算出されたbをRAM(15)の所定の格納領域に格納する。
〔ステップS18s〕
以上の処理を経てRAM(15)に格納されている正の有理整数k、整数g、乱数d、秘密鍵集合{p,p,・・・,p}、代数体Kおよびイデアルνを設定するための情報が秘密鍵となり、ナップザックb(1≦i≦n)、正の有理整数nおよびkが公開鍵となる。なお、公開鍵のうちnについてはナップザックb(1≦i≦n)の個数から得られるから、nを公開鍵に含めることは必須ではない。本明細書では、説明の便宜上、このnを含めて公開鍵とする。また、秘密鍵のうち代数体Kを設定するための情報については、既述のとおり、代数体Kを設定するための情報を予め復号化装置に保存記憶しておく場合には、秘密鍵に含めることは必須ではない。本明細書では、説明の便宜上、代数体Kを設定するための情報を含めて秘密鍵とする。以下、代数体Kおよびイデアルνを設定するための情報を単に記号K、νで表す。
制御部(140s)は、通信部(13)を制御して、公開鍵(n,k,b,b,・・・,b)を暗号化装置に送信し、秘密鍵(K,ν,g,k,d,p,p,・・・,p)を復号化装置に送信する。なお、少なくとも秘密鍵を送信する通信路は安全性が保証されたものであることが望ましい。なお、鍵生成装置(1s)が復号化装置を兼ねる場合には、秘密鍵を送信する必要がない。また、公開鍵を暗号化装置に送信するのではなく、例えば公開鍵登録サーバ装置などに送信して、公開鍵登録サーバ装置がこれにアクセスした暗号化装置に公開鍵を送信する構成としてもよい。結局のところ、秘密鍵が安全に復号化装置に供給されること、公開鍵が暗号化装置に供給されること、の2点を満たせば、その供給方法に限定はない。
[暗号化装置および暗号化処理]
第2実施形態に係わる暗号化装置(2s)のハードウェア構成・資源は、第1実施形態の暗号化装置(2)と同様であり、また、暗号化装置(2s)における暗号化処理も第1実施形態の暗号化処理と同様であるから、第1実施形態における暗号化装置(2)および暗号化処理の説明を援用し、第2実施形態における暗号化装置(2s)および暗号化処理の説明を省略する(図4、5、6参照。)。なお、暗号化装置(2s)の暗号化処理に用いる公開鍵は、鍵生成装置(1s)によって生成された公開鍵(n,k,b,b,・・・,b)であり、暗号化装置(2s)の通信部によって、鍵生成装置(1s)から受信して外部記憶装置(27)に保存記憶されたものである。また、第2実施形態においても、数え上げ符号方式によって平文Mを符号化してビット長n、ハミング重みkのビット列mを生成するとする。
[復号化装置]
(ハードウェア構成並びにハードウェア資源とソフトウェアとの協働による情報処理の実現)
第2実施形態に係わる復号化装置(3s)のハードウェア構成・資源や機能構成並びにプログラムは、第1実施形態の復号化装置(3)と同様である(図7参照。)。
(復号化処理)
次に、図16および図17を参照して、復号化装置(3s)における復号化処理の流れを叙述的に説明する。
なお、下記の復号化処理では、秘密鍵Kを明示的に用いていないが、これは秘密鍵として代数体Kが不要という趣旨ではない。一般的に、(代数)体Kは、既約多項式F(x)によって規定される。そして、(代数)体Kの元はxの多項式として表されるものの、xの多項式のみでは(代数)体Kの元を表現することができないので、(代数)体Kの情報が必要になる(上記PARI/GPでは、体Kの元は、xの多項式を既約多項式F(x)で除した余りとして表される。)。つまり、下記の復号化処理は、代数体Kにおける演算として行われる。
まず、制御部(340s)が、外部記憶装置(37)から、秘密鍵(K,ν,g,k,d,p,p,・・・,p)、暗号文cを読み込み、それぞれをRAM(35)の所定の格納領域に格納しておく。秘密鍵は、復号化装置(3s)の通信部によって、鍵生成装置(1s)から受信して外部記憶装置(37)に保存記憶されたものである。また、暗号文cは、復号化装置(3)の通信部によって、暗号化装置(2)から受信して外部記憶装置(37)に保存記憶されたものである。なお、これらのデータを格納した記録媒体からドライブを駆動して読み込むようにしてもよく、適宜に変更可能である。以後、「RAMから○○を読み込む」旨の説明をした場合は、「RAMにおいて○○が格納されている所定の格納領域から○○を読み込む」ことを意味するとする。
〔ステップS32s〕
次に、指数算出部(341s)が、RAM(35)から暗号文c、秘密鍵kおよびdを読み込み、r=c−kdなる演算を行って指数rを算出し、この算出した指数rをRAM(35)の所定の格納領域に格納する。
なお、ここで指数rの算出方法は、鍵生成装置(1s)における鍵生成処理のステップS17sに対応しており、ナップザックb(1≦i≦n)をb=a+dなる演算をして算出した場合には、r=c−kdなる演算を行って指数rを算出するが、例えばナップザックb(1≦i≦n)をb=a+d mod Πj=1 (N(τ)−1)を演算して算出した場合には、r=c−kd mod Πj=1 (N(τ)−1)なる演算を行って指数rを算出することに留意しなければならない。
〔ステップS33s〕
次に、冪乗剰余演算部(342s)が、RAM(35)から指数r、秘密鍵νおよびgを読み込み、u=g mod νなる演算を行って冪乗剰余演算結果uを算出し、この算出した冪乗剰余演算結果uをRAM(35)の所定の格納領域に格納する。
〔ステップS34s〕
次に、符号列再生部(343s)が、RAM(35)から冪乗剰余演算結果u、秘密鍵p,p,・・・,pを読み込み、各i(1≦i≦n)について、冪乗剰余演算結果uを秘密鍵pで除し、冪乗剰余演算結果uが秘密鍵pで割り切れる場合にはm=1とし、冪乗剰余演算結果uが秘密鍵pで割り切れない場合にはm=0として、符号列(ビット列)m=(m,m,・・・,m)を求める。そして、符号列再生部(343s)は、求めた符号列(ビット列)m=(m,m,・・・,m)をRAM(35)の所定の格納領域に格納する。
ステップS32〜S34の処理について補足説明をする。
鍵生成処理のステップS17sにおいて、ナップザックb(1≦i≦n)をb=a+dなる演算をして算出した場合に対応して、ステップS32sにおいて、r=c−kdなる演算を行って指数rを算出した場合で説明すると、r=c−kdなる演算は、次のような演算であることを意味する。即ち、r=Σi=1 −kd=Σi=1 (a+d)−kd=Σi=1 +d×Σi=1 −kd=Σi=1 +kd−kd=Σi=1 である(∵Σi=1 =k)。
従って冪乗剰余演算は、u=g mod N=g^Σi=1 mod ν=g^(m)×g^(m)×・・・×g^(m) mod νとなる。ここで式(10)および秘密鍵集合{p,p,・・・,p}のどの2つの元も互いに素であることに留意すれば、冪乗剰余演算結果uが秘密鍵pで割り切れる場合とは、冪乗剰余演算結果uがg^aを素因子として有していることに他ならず、さらに、m(1≦i≦n)∈{0,1}であることに留意すれば、m=1であることが判明する。一方、冪乗剰余演算結果uが秘密鍵pで割り切れない場合とは、冪乗剰余演算結果uがg^aを素因子として有していないことに他ならず、さらに、m(1≦i≦n)∈{0,1}であることに留意すれば、m=0であることが判明する。
〔ステップS35s〕
次に、復号化部(344s)が、RAM(35)から符号列(ビット列)m=(m,m,・・・,m)を読み込み、暗号化装置(2s)における暗号化処理と対応した逆変換を行い(参考文献2参照。)、平文Mを復元してこれをRAM(35)の所定の格納領域に格納する。
[乗法型ナップザック暗号システムとその処理]
第2実施形態の乗法型ナップザック暗号システムは、システムを構成する物理的実体が鍵生成装置(1)→鍵生成装置(1s)、暗号化装置(2)→暗号化装置(2s)、復号化装置(3)→復号化装置(3s)に変更(これは上記システムその1に相当する場合であり、上記システムその2に相当する場合も同様である。)となる以外は、第1実施形態と同様のシステム構成であり、また当該システムでの処理も第1実施形態と同様であるから、第1実施形態における乗法型ナップザック暗号システムおよびその処理の説明を援用し、第2実施形態における乗法型ナップザック暗号システムおよびその処理の説明を省略する(図10〜図13参照。)。
<第1実施形態と第2実施形態との相違について>
○実装の容易性・演算速度について。
第1実施形態では、各処理に係わる集合が有理整数環であるため、各処理に係わる集合を代数体の整数環とする第2実施形態の場合に比して、既存の計算機を本発明の鍵生成装置などとして機能させることが比較的容易であり、また、比較的高速に演算処理が行える。
○安全性について。
第1実施形態の場合は、秘密鍵は(N,k,g,d,p,p,・・・,p)であるところ、公開鍵であるb,b,・・・,bからNおよびdのビット長の上限を得ることができる。ここで、Nおよびdのビット長から推測される秘密鍵の総数は有限である。従って、“理論的には”秘密鍵を推測できないわけではない(実際は、実時間で推測困難になるように合成数Nのビット長などを設定する。)。
第2実施形態の場合は、秘密鍵は(K,ν,g,d,p,p,・・・,p)であるところ、公開鍵であるb,b,・・・,bからイデアルνのノルムおよびdのビット長の上限を得ることができる。しかし、代数体Kは、(次数fを固定したとしても)無限に構成することができ、単なる整数であるb,b,・・・,bから代数体Kの情報を得ることはできない。このことは、代数体Kを秘密鍵に含めない場合でも同様である。代数体Kが不明であると、イデアルνやp,p,・・・,pの決定が極めて困難であり、秘密鍵(K,ν,g,d,p,p,・・・,p)を推測できる可能性は無いと言っても過言ではない。従って、第2実施形態の場合は、第1実施形態に比して安全性が高いものとなっている。
<上記各装置全般について>
本発明である上記各装置は上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。また、上記各装置において説明した処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されるとしてもよい。
また、上記各装置における処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することによって、上記各装置における処理機能がコンピュータ上で実現される。
また、上記各装置は、異なるコンピュータとして独立に構成される場合はもちろん、例えば1つのコンピュータにおいて、鍵生成装置の有すべき機能の処理内容が記述されたプログラムと、復号化装置の有すべき機能の処理内容が記述されたプログラムとを有することによって、1つのコンピュータが鍵生成装置としても復号化装置としても機能するように、コンピュータを複合的に機能させることもできる。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等を、光磁気記録媒体として、MO(Magneto-Optical disc)等を、半導体メモリとしてEEP−ROM(Electronically Erasable and Programmable-Read Only Memory)等を用いることができる。
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD−ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの(コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等)を含むものとする。
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、上記各装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
本発明は、現在の計算機環境において実用的でありながら、量子計算機が実現した場合でも解読困難な公開鍵暗号であるから、量子計算機実現後も社会基盤の中枢であり続けると考えられる(量子通信路に比較して古典的な)インターネットのような通信網における公開鍵暗号として用いることができる。
鍵生成装置(1)のハードウェア構成を例示した構成ブロック図。 鍵生成装置(1)における鍵(公開鍵、秘密鍵)生成の処理機能を示す機能ブロック図。 鍵生成装置(1)における鍵生成の処理フロー。 暗号化装置(2)のハードウェア構成を例示した構成ブロック図。 暗号化装置(2)における暗号文生成の処理機能を示す機能ブロック図。 暗号化装置(2)における暗号文生成の処理フロー。 復号化装置(3)のハードウェア構成を例示した構成ブロック図。 復号化装置(3)における平文復号の処理機能を示す機能ブロック図。 復号化装置(3)における平文復号の処理フロー。 乗法型ナップザック暗号システム(1000)のシステム構成を例示する図。 乗法型ナップザック暗号システム(1000)における乗法型ナップザック暗号復号方法の処理フロー。 乗法型ナップザック暗号システム(1001)のシステム構成を例示する図。 乗法型ナップザック暗号システム(1001)における乗法型ナップザック暗号復号方法の処理フロー。 鍵生成装置(1s)における鍵(公開鍵、秘密鍵)生成の処理機能を示す機能ブロック図。 鍵生成装置(1s)における鍵生成の処理フロー。 復号化装置(3s)における平文復号の処理機能を示す機能ブロック図。 復号化装置(3s)における平文復号の処理フロー。
符号の説明
1 鍵生成装置
1s 鍵生成装置
2 暗号化装置
3 復号化装置
3’ 鍵生成装置兼復号化装置
3s 復号化装置
4 公開鍵登録サーバ装置
5 ネットワーク
140 制御部
140s 制御部
141 合成数算出部
142 生成元算出部
142s 生成元算出部
143 秘密鍵集合算出部
143s 秘密鍵集合算出部
144 ナップザック生成因子算出部
144s ナップザック生成因子算出部
145 乱数生成部
145s 乱数生成部
146 ナップザック生成部
146s ナップザック生成部
241 符号変換部
242 暗号化部
341 指数算出部
341s 指数算出部
342 冪乗剰余演算部
342s 冪乗剰余演算部
343 符号再生部
343s 符号再生部
344 復号化部
344s 復号化部
1000 乗法型ナップザック暗号システム
1001 乗法型ナップザック暗号システム

Claims (13)

  1. s個の素数冪q〔1≦j≦s〕、正の有理整数nおよびkを記憶する記憶手段と、
    s個の素数冪q〔1≦j≦s〕の積を演算して合成数Nを算出する合成数算出手段と、
    各既約剰余類群(Z/qZ)×〔1≦j≦s〕の生成元となる有理整数gを算出する生成元算出手段と、
    どの2つも互いに素である有理整数p〔1≦i≦n;但し、各有理整数pは合成数Nと互いに素である。〕を算出する秘密鍵集合算出手段と、
    各i〔1≦i≦n〕に対してgai≡p(mod N)を満たす有理整数aを算出するナップザック生成因子算出手段と、
    乱数dを生成して、これを出力する乱数生成手段と、
    各有理整数a〔1≦i≦n〕に乱数dを加算して有理整数b〔1≦i≦n〕を生成するナップザック生成手段と
    を備え、
    公開鍵は少なくとも正の有理整数k、有理整数b〔1≦i≦n〕、
    秘密鍵は合成数N、正の有理整数k、有理整数g、乱数d、有理整数p〔1≦i≦n〕である
    ことを特徴とする鍵生成装置。
  2. 請求項1に記載の鍵生成装置によって生成された公開鍵(少なくとも正の有理整数k、有理整数b〔1≦i≦n〕)および平文Mを記憶する記憶手段と、
    平文を符号列に変換し(符号変換)、符号列を平文に変換する(逆符号変換)ことが可能な符号変換方式によって、平文Mを長さn、重みkの符号列m={m}〔1≦i≦n;但し、Σi=1 =kとする。〕に変換する符号変換手段と、
    符号列mおよび公開鍵bから暗号文c=Σi=1 を生成する暗号化手段と
    を備えたことを特徴とする暗号化装置。
  3. 請求項1に記載の鍵生成装置によって生成された秘密鍵(合成数N、有理整数g、乱数d、有理整数p〔1≦i≦n〕)および暗号文cを記憶する記憶手段と、
    暗号文cから秘密鍵kと秘密鍵dとの積を減算して指数rを算出する指数算出手段と、
    指数r、秘密鍵gおよびNからu≡g(mod N)を演算した冪乗剰余演算結果uを算出する冪乗剰余演算手段と、
    冪乗剰余演算結果uを各秘密鍵p〔1≦i≦n〕で除し、割り切れた場合と割り切れなかった場合とでそれぞれ異なる符号値wを与え、符号列w={w}〔1≦i≦n〕を算出する符号再生手段と、
    請求項2に記載の暗号化装置における符号変換手段で用いた符号変換方式によって、符号列wを平文に変換してこの平文を出力する復号化手段と
    を備えたことを特徴とする復号化装置。
  4. 鍵生成装置、暗号化装置および復号化装置がそれぞれデータ送信可能に接続され、
    鍵生成装置は、
    s個の素数冪q〔1≦j≦s〕、正の有理整数nおよびkを記憶する記憶手段と、
    s個の素数冪q〔1≦j≦s〕の積を演算して合成数Nを算出する合成数算出手段と、
    各既約剰余類群(Z/qZ)×〔1≦j≦s〕の生成元となる有理整数gを算出する生成元算出手段と、
    どの2つも互いに素である有理整数p〔1≦i≦n;但し、各有理整数pは合成数Nと互いに素である。〕を算出する秘密鍵集合算出手段と、
    各i〔1≦i≦n〕に対してgai≡p(mod N)を満たす有理整数aを算出するナップザック生成因子算出手段と、
    乱数dを生成して、これを出力する乱数生成手段と、
    各有理整数a〔1≦i≦n〕に乱数dを加算して有理整数b〔1≦i≦n〕を生成するナップザック生成手段と、
    公開鍵は少なくとも正の有理整数k、有理整数b〔1≦i≦n〕、秘密鍵は合成数N、正の有理整数k、有理整数g、乱数d、有理整数p〔1≦i≦n〕であるとして、
    公開鍵を暗号化装置に送信可能な対暗号化装置送信手段と、
    秘密鍵を復号化装置に送信可能な対復号化装置送信手段とを備え、
    暗号化装置は、
    鍵生成装置から公開鍵を受信可能な対鍵生成装置受信手段と、
    暗号化装置の対鍵生成装置受信手段によって受信した公開鍵(少なくとも正の有理整数k、有理整数b〔1≦i≦n〕)および平文Mを記憶する記憶手段と、
    平文を符号列に変換し(符号変換)、符号列を平文に変換する(逆符号変換)ことが可能な符号変換方式によって、平文Mを長さn、重みkの符号列m={m}〔1≦i≦n;但し、Σi=1 =kとする。〕に変換する符号変換手段と、
    符号列mおよび公開鍵bから暗号文c=Σi=1 を生成する暗号化手段と、
    暗号文cを復号化装置に送信可能な対復号化装置送信手段とを備え、
    復号化装置は、
    鍵生成装置から秘密鍵を受信可能な対鍵生成装置受信手段と、
    暗号文cを暗号化装置から受信可能な対暗号化装置受信手段と、
    復号化装置の対鍵生成装置受信手段によって受信した秘密鍵(合成数N、有理整数g、乱数d、有理整数p〔1≦i≦n〕)および復号化装置の対暗号化装置受信手段によって受信した暗号文cを記憶する記憶手段と、
    暗号文cから秘密鍵kと秘密鍵dとの積を減算して指数rを算出する指数算出手段と、
    指数r、秘密鍵gおよびNからu≡g(mod N)を演算した冪乗剰余演算結果uを算出する冪乗剰余演算手段と、
    冪乗剰余演算結果uを各秘密鍵p〔1≦i≦n〕で除し、割り切れた場合と割り切れなかった場合とでそれぞれ異なる符号値wを与え、符号列w={w}〔1≦i≦n〕を算出する符号再生手段と、
    上記暗号化装置における符号変換手段で用いた符号変換方式によって、符号列wを平文に変換してこの平文を出力する復号化手段とを備えた
    ことを特徴とする乗法型ナップザック暗号システム。
  5. 鍵生成装置、暗号化装置および復号化装置がそれぞれデータ送信可能に接続され、
    鍵生成装置の記憶手段には、s個の素数冪q〔1≦j≦s〕、正の有理整数nおよびkが記憶されており、
    暗号化装置の記憶手段には、平文Mが記憶されており、
    鍵生成装置の合成数算出手段が、s個の素数冪q〔1≦j≦s〕の積を演算して合成数Nを算出する合成数算出ステップと、
    鍵生成装置の生成元算出手段が、各既約剰余類群(Z/qZ)×〔1≦j≦s〕の生成元となる有理整数gを算出する生成元算出ステップと、
    鍵生成装置の秘密鍵集合算出手段が、どの2つも互いに素である有理整数p〔1≦i≦n;但し、各有理整数pは合成数Nと互いに素である。〕を算出する秘密鍵集合算出ステップと、
    鍵生成装置のナップザック生成因子算出手段が、各i〔1≦i≦n〕に対してgai≡p(mod N)を満たす有理整数aを算出するナップザック生成因子算出ステップと、
    鍵生成装置の乱数生成手段が、乱数dを生成して、これを出力する乱数生成ステップと、
    鍵生成装置のナップザック生成手段が、各有理整数a〔1≦i≦n〕に乱数dを加算して有理整数b〔1≦i≦n〕を生成するナップザック生成ステップと、
    公開鍵は少なくとも正の有理整数k、有理整数b〔1≦i≦n〕、秘密鍵は合成数N、正の有理整数k、有理整数g、乱数d、有理整数p〔1≦i≦n〕であるとして、
    鍵生成装置の対暗号化装置送信手段が、公開鍵を暗号化装置に送信可能な対暗号化装置送信ステップと、
    鍵生成装置の対復号化装置送信手段が、秘密鍵を復号化装置に送信可能な対復号化装置送信ステップと、
    暗号化装置の対鍵生成装置受信手段が、鍵生成装置から公開鍵を受信する対鍵生成装置受信ステップと、
    暗号化装置の符号変換手段が、平文を符号列に変換し(符号変換)、符号列を平文に変換する(逆符号変換)ことが可能な符号変換方式によって、平文Mを長さn、重みkの符号列m={m}〔1≦i≦n;但し、Σi=1 =kとする。〕に変換する符号変換ステップと、
    暗号化装置の暗号化手段が、符号列mおよび公開鍵bから暗号文c=Σi=1 を生成する暗号化手段と、
    暗号化装置の対復号化装置送信手段が、暗号文cを復号化装置に送信する対復号化装置送信ステップと、
    復号化装置の対鍵生成装置受信手段が、鍵生成装置から秘密鍵を受信する対鍵生成装置受信ステップと、
    復号化装置の対暗号化装置受信手段が、暗号文cを暗号化装置から受信する対暗号化装置受信ステップと、
    復号化装置の指数算出手段が、暗号文cから秘密鍵kと秘密鍵dとの積を減算して指数rを算出する指数算出ステップと、
    復号化装置の冪乗剰余演算手段が、指数r、秘密鍵gおよびNからu≡g(mod N)を演算した冪乗剰余演算結果uを算出する冪乗剰余演算ステップと、
    復号化装置の符号再生手段が、冪乗剰余演算結果uを各秘密鍵p〔1≦i≦n〕で除し、割り切れた場合と割り切れなかった場合とでそれぞれ異なる符号値wを与え、符号列w={w}〔1≦i≦n〕を算出する符号再生ステップと、
    復号化装置の復号化手段が、上記符号変換ステップで用いた符号変換方式によって、符号列wを平文に変換してこの平文を出力する復号化ステップとを有する
    ことを特徴とする乗法型ナップザック暗号復号方法。
  6. 正の有理整数n、kを記憶する記憶手段と、
    少なくとも代数体Kの整数環Zのイデアルνを設定する基底設定手段と、
    各既約剰余類群(Z/τ×〔1≦j≦s;τはイデアルνを構成するどの2つのノルムも互いに素な素イデアルである。〕の生成元となる整数環Zの整数gを算出する生成元算出手段と、
    どの2つのノルムも互いに素である整数環Zの整数p〔1≦i≦n;但し、各有理整数pのノルムはイデアルνのノルムと互いに素である。〕を算出する秘密鍵集合算出手段と、
    各i〔1≦i≦n〕に対してgai≡p(mod ν)を満たす有理整数aを算出するナップザック生成因子算出手段と、
    乱数dを生成して、これを出力する乱数生成手段と、
    各有理整数a〔1≦i≦n〕に乱数dを加算して有理整数b〔1≦i≦n〕を生成するナップザック生成手段と
    を備え、
    公開鍵は少なくとも正の有理整数k、有理整数b〔1≦i≦n〕、
    秘密鍵は少なくともイデアルν、正の有理整数k、整数環Zの整数g、乱数d、整数環Zの整数p〔1≦i≦n〕である
    ことを特徴とする鍵生成装置。
  7. 請求項6に記載の鍵生成装置によって生成された公開鍵(少なくとも正の有理整数k、有理整数b〔1≦i≦n〕)および平文Mを記憶する記憶手段と、
    平文を符号列に変換し(符号変換)、符号列を平文に変換する(逆符号変換)ことが可能な符号変換方式によって、平文Mを長さn、重みkの符号列m={m}〔1≦i≦n;但し、Σi=1 =kとする。〕に変換する符号変換手段と、
    符号列mおよび公開鍵bから暗号文c=Σi=1 を生成する暗号化手段と
    を備えたことを特徴とする暗号化装置。
  8. 請求項6に記載の鍵生成装置によって生成された秘密鍵(少なくともイデアルν、正の有理整数k、整数環Zの整数g、乱数d、整数環Zの整数p〔1≦i≦n〕)および暗号文cを記憶する記憶手段と、
    暗号文cから秘密鍵kと秘密鍵dとの積を減算して指数rを算出する指数算出手段と、
    指数r、秘密鍵gおよびνからu≡g(mod ν)を演算した冪乗剰余演算結果uを算出する冪乗剰余演算手段と、
    冪乗剰余演算結果uを各秘密鍵p〔1≦i≦n〕で除し、割り切れた場合と割り切れなかった場合とでそれぞれ異なる符号値wを与え、符号列w={w}〔1≦i≦n〕を算出する符号再生手段と、
    請求項7に記載の暗号化装置における符号変換手段で用いた符号変換方式によって、符号列wを平文に変換してこの平文を出力する復号化手段と
    を備えたことを特徴とする復号化装置。
  9. 鍵生成装置、暗号化装置および復号化装置がそれぞれデータ送信可能に接続され、
    鍵生成装置は、
    正の有理整数n、kを記憶する記憶手段と、
    少なくとも代数体Kの整数環Zのイデアルνを設定する基底設定手段と、
    各既約剰余類群(Z/τ×〔1≦j≦s;τはイデアルνを構成するどの2つのノルムも互いに素な素イデアルである。〕の生成元となる整数環Zの整数gを算出する生成元算出手段と、
    どの2つのノルムも互いに素である整数環Zの整数p〔1≦i≦n;但し、各整数pのノルムはイデアルνのノルムと互いに素である。〕を算出する秘密鍵集合算出手段と、
    各i〔1≦i≦n〕に対してgai≡p(mod ν)を満たす有理整数aを算出するナップザック生成因子算出手段と、
    乱数dを生成して、これを出力する乱数生成手段と、
    各有理整数a〔1≦i≦n〕に乱数dを加算して有理整数b〔1≦i≦n〕を生成するナップザック生成手段と、
    公開鍵は少なくとも正の有理整数k、有理整数b〔1≦i≦n〕、秘密鍵は少なくともイデアルν、正の有理整数k、整数環Zの整数g、乱数d、整数環Zの整数p〔1≦i≦n〕であるとして、
    公開鍵を暗号化装置に送信可能な対暗号化装置送信手段と、
    秘密鍵を復号化装置に送信可能な対復号化装置送信手段とを備え、
    暗号化装置は、
    鍵生成装置から公開鍵を受信可能な対鍵生成装置受信手段と、
    暗号化装置の対鍵生成装置受信手段によって受信した公開鍵(少なくとも正の有理整数k、有理整数b〔1≦i≦n〕)および平文Mを記憶する記憶手段と、
    平文を符号列に変換し(符号変換)、符号列を平文に変換する(逆符号変換)ことが可能な符号変換方式によって、平文Mを長さn、重みkの符号列m={m}〔1≦i≦n;但し、Σi=1 =kとする。〕に変換する符号変換手段と、
    符号列mおよび公開鍵bから暗号文c=Σi=1 を生成する暗号化手段と、
    暗号文cを復号化装置に送信可能な対復号化装置送信手段とを備え、
    復号化装置は、
    鍵生成装置から秘密鍵を受信可能な対鍵生成装置受信手段と、
    暗号文cを暗号化装置から受信可能な対暗号化装置受信手段と、
    復号化装置の対鍵生成装置受信手段によって受信した秘密鍵(少なくともイデアルν、正の有理整数k、整数環Zの整数g、乱数d、整数環Zの整数p〔1≦i≦n〕)および復号化装置の対暗号化装置受信手段によって受信した暗号文cを記憶する記憶手段と、
    暗号文cから秘密鍵kと秘密鍵dとの積を減算して指数rを算出する指数算出手段と、
    指数r、秘密鍵gおよびνからu≡g(mod ν)を演算した冪乗剰余演算結果uを算出する冪乗剰余演算手段と、
    冪乗剰余演算結果uを各秘密鍵p〔1≦i≦n〕で除し、割り切れた場合と割り切れなかった場合とでそれぞれ異なる符号値wを与え、符号列w={w}〔1≦i≦n〕を算出する符号再生手段と、
    上記暗号化装置における符号変換手段で用いた符号変換方式によって、符号列wを平文に変換してこの平文を出力する復号化手段とを備えた
    ことを特徴とする乗法型ナップザック暗号システム。
  10. 鍵生成装置、暗号化装置および復号化装置がそれぞれデータ送信可能に接続され、
    鍵生成装置の記憶手段には、正の有理整数n、kが記憶されており、
    暗号化装置の記憶手段には、平文Mが記憶されており、
    鍵生成装置の基底設定手段が、少なくとも代数体Kの整数環Zのイデアルνを設定する基底設定ステップと、
    鍵生成装置の生成元算出手段が、各既約剰余類群(Z/τ×〔1≦j≦s;τはイデアルνを構成するどの2つのノルムも異なる素イデアルである。〕の生成元となる整数環Zの整数gを算出する生成元算出ステップと、
    鍵生成装置の秘密鍵集合算出手段が、どの2つのノルムも互いに素である整数環Zの整数p〔1≦i≦n;但し、各整数pのノルムはイデアルνのノルムと互いに素である。〕を算出する秘密鍵集合算出ステップと、
    鍵生成装置のナップザック生成因子算出手段が、各i〔1≦i≦n〕に対してgai≡p(mod ν)を満たす有理整数aを算出するナップザック生成因子算出ステップと、
    鍵生成装置の乱数生成手段が、乱数dを生成して、これを出力する乱数生成ステップと、
    鍵生成装置のナップザック生成手段が、各有理整数a〔1≦i≦n〕に乱数dを加算して有理整数b〔1≦i≦n〕を生成するナップザック生成ステップと、
    公開鍵は少なくとも正の有理整数k、有理整数b〔1≦i≦n〕、秘密鍵は少なくともイデアルν、正の有理整数k、整数環Zの整数g、乱数d、整数環Zの整数p〔1≦i≦n〕であるとして、
    鍵生成装置の対暗号化装置送信手段が、公開鍵を暗号化装置に送信可能な対暗号化装置送信ステップと、
    鍵生成装置の対復号化装置送信手段が、秘密鍵を復号化装置に送信可能な対復号化装置送信ステップと、
    暗号化装置の対鍵生成装置受信手段が、鍵生成装置から公開鍵を受信する対鍵生成装置受信ステップと、
    暗号化装置の符号変換手段が、平文を符号列に変換し(符号変換)、符号列を平文に変換する(逆符号変換)ことが可能な符号変換方式によって、平文Mを長さn、重みkの符号列m={m}〔1≦i≦n;但し、Σi=1 =kとする。〕に変換する符号変換ステップと、
    暗号化装置の暗号化手段が、符号列mおよび公開鍵bから暗号文c=Σi=1 を生成する暗号化手段と、
    暗号化装置の対復号化装置送信手段が、暗号文cを復号化装置に送信する対復号化装置送信ステップと、
    復号化装置の対鍵生成装置受信手段が、鍵生成装置から秘密鍵を受信する対鍵生成装置受信ステップと、
    復号化装置の対暗号化装置受信手段が、暗号文cを暗号化装置から受信する対暗号化装置受信ステップと、
    復号化装置の指数算出手段が、暗号文cから秘密鍵kと秘密鍵dとの積を減算して指数rを算出する指数算出ステップと、
    復号化装置の冪乗剰余演算手段が、指数r、秘密鍵gおよびνからu≡g(mod ν)を演算した冪乗剰余演算結果uを算出する冪乗剰余演算ステップと、
    復号化装置の符号再生手段が、冪乗剰余演算結果uを各秘密鍵p〔1≦i≦n〕で除し、割り切れた場合と割り切れなかった場合とでそれぞれ異なる符号値wを与え、符号列w={w}〔1≦i≦n〕を算出する符号再生ステップと、
    復号化装置の復号化手段が、上記符号変換ステップで用いた符号変換方式によって、符号列wを平文に変換してこの平文を出力する復号化ステップとを有する
    ことを特徴とする乗法型ナップザック暗号復号方法。
  11. 請求項1または請求項6に記載された鍵生成装置としてコンピュータを機能させるための鍵生成プログラム。
  12. 請求項2または請求項7に記載された暗号化装置としてコンピュータを機能させるための暗号化プログラム。
  13. 請求項3または請求項8に記載された復号化装置としてコンピュータを機能させるための復号化プログラム。
JP2005367021A 2005-12-20 2005-12-20 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム Active JP4685621B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005367021A JP4685621B2 (ja) 2005-12-20 2005-12-20 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005367021A JP4685621B2 (ja) 2005-12-20 2005-12-20 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2007171412A true JP2007171412A (ja) 2007-07-05
JP4685621B2 JP4685621B2 (ja) 2011-05-18

Family

ID=38298084

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005367021A Active JP4685621B2 (ja) 2005-12-20 2005-12-20 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム

Country Status (1)

Country Link
JP (1) JP4685621B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013228763A (ja) * 2013-08-14 2013-11-07 Nippon Telegr & Teleph Corp <Ntt> 離散対数計算装置、事前計算装置、離散対数計算方法、事前計算方法、プログラム
CN114095151A (zh) * 2020-07-31 2022-02-25 马上消费金融股份有限公司 一种加解密方法、认证方法、装置、设备和存储介质
CN114245917A (zh) * 2019-08-14 2022-03-25 日本电信电话株式会社 秘密归一化指数函数计算***、秘密归一化指数函数计算装置、秘密归一化指数函数计算方法、秘密神经网络计算***、秘密神经网络学习***、程序

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215024A (ja) * 2001-01-18 2002-07-31 Nippon Telegr & Teleph Corp <Ntt> ナップサック型公開鍵暗号システム、その公開鍵生成方法、その装置、そのプログラム、及びその記録媒体

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002215024A (ja) * 2001-01-18 2002-07-31 Nippon Telegr & Teleph Corp <Ntt> ナップサック型公開鍵暗号システム、その公開鍵生成方法、その装置、そのプログラム、及びその記録媒体

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013228763A (ja) * 2013-08-14 2013-11-07 Nippon Telegr & Teleph Corp <Ntt> 離散対数計算装置、事前計算装置、離散対数計算方法、事前計算方法、プログラム
CN114245917A (zh) * 2019-08-14 2022-03-25 日本电信电话株式会社 秘密归一化指数函数计算***、秘密归一化指数函数计算装置、秘密归一化指数函数计算方法、秘密神经网络计算***、秘密神经网络学习***、程序
CN114245917B (zh) * 2019-08-14 2023-12-05 日本电信电话株式会社 秘密归一化指数函数计算***、装置、方法以及记录介质
CN114095151A (zh) * 2020-07-31 2022-02-25 马上消费金融股份有限公司 一种加解密方法、认证方法、装置、设备和存储介质

Also Published As

Publication number Publication date
JP4685621B2 (ja) 2011-05-18

Similar Documents

Publication Publication Date Title
JP7049374B2 (ja) 同型暗号化を行う端末装置と、その暗号文を処理するサーバ装置及びその方法
KR101965628B1 (ko) 동형 암호화를 수행하는 단말 장치와 그 암호문을 처리하는 서버 장치 및 그 방법들
JP4879951B2 (ja) セキュリティ強化のための転置データ変換
KR102019159B1 (ko) 정수 기반 준동형 암호 기법에 일반적으로 적용 가능한 압축 암복호화 장치 및 방법
JP6363032B2 (ja) 鍵付替え方向制御システムおよび鍵付替え方向制御方法
KR20050087815A (ko) 키공유 시스템, 공유키 생성장치 및 공유키 복원장치
CN102187617B (zh) 密码***
JP2011164607A (ja) シンボルシーケンスの編集距離のプライバシーを保護した計算の方法およびシステム
US20070121933A1 (en) Information transfer system, encryption device, and decryption device
Gupta et al. Session key based novel lightweight image encryption algorithm using a hybrid of Chebyshev chaotic map and crossover
JP2010049213A (ja) 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
JP2006311383A (ja) データ管理方法、データ管理システムおよびデータ管理装置
JP4685621B2 (ja) 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム
JP2001255814A (ja) 復号方法、復号装置、及び復号プログラムの記録媒体
JP7125857B2 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法、復号方法、及びプログラム
JP5469618B2 (ja) 暗号化システム、復号方法、鍵更新方法、鍵生成装置、受信装置、代理計算装置、プログラム
JP2011040932A (ja) 認証付き暗号化装置、認証付き暗号化方法、検証付き復号装置、検証付き復号方法、暗号システム、プログラム、記録媒体
JP5713947B2 (ja) プロキシ暗号システム,プロキシ暗号方法,委託装置,プロキシ装置
JP5038866B2 (ja) 暗号通信方法、暗号化装置、復号装置、及びそれらのプログラム
JP5679344B2 (ja) 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
KR101133988B1 (ko) 해쉬 트리 기반의 스트림 암호화 및 복호화 방법과 암호 파일 시스템
Dhamodharan et al. Multifarious mapping schemes on Elliptic curve cryptography for IoT security
WO2023242955A1 (ja) 秘匿情報処理システム、秘匿情報処理方法、及び秘匿情報処理プログラム
JP6885325B2 (ja) 暗号化装置、復号装置、暗号化方法、復号方法、プログラム
Singh et al. Security of Data with 3DES & Watermarking Algorithm

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080128

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110210

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

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4685621

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350