JP5464341B2 - 複数のナップザックを用いる公開鍵暗号方式による暗号システム、鍵生成装置、暗号化装置、復号装置、データ交換方法およびプログラム - Google Patents
複数のナップザックを用いる公開鍵暗号方式による暗号システム、鍵生成装置、暗号化装置、復号装置、データ交換方法およびプログラム Download PDFInfo
- Publication number
- JP5464341B2 JP5464341B2 JP2009285093A JP2009285093A JP5464341B2 JP 5464341 B2 JP5464341 B2 JP 5464341B2 JP 2009285093 A JP2009285093 A JP 2009285093A JP 2009285093 A JP2009285093 A JP 2009285093A JP 5464341 B2 JP5464341 B2 JP 5464341B2
- Authority
- JP
- Japan
- Prior art keywords
- secret key
- public key
- sequences
- key sequences
- generating
- 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.)
- Expired - Fee Related
Links
Description
本発明は、ナップザック問題を安全性の根拠とした公開鍵暗号方式に関し、より詳細には、高い安全性および処理の高速性を実現するナップザック暗号方式による、鍵生成を実行する鍵生成装置と、暗号化処理を実行する暗号化装置と、暗号文の復号処理を実行する復号装置とを含む暗号システム、該鍵生成装置、該暗号化装置、該復号装置、データ交換方法およびプログラムに関する。
近年の情報通信技術の発達およびネットワークのブロードバンド化に伴い、暗号理論に基づく暗号化技術は、ネットワーク上を伝送するデータの機密性および完全性を保証する技術として、ますます重要な技術となっている。
このような暗号理論による暗号化方式は、素因数分解問題、離散対数問題、ラティス問題、ナップザック問題などの数学上の問題を安全性の根拠としている。ナップザック問題は、NP完全問題のひとつであり、この一般のナップザック問題に超増加性等の落とし戸を導入して暗号理論に応用したものがナップザック暗号方式である。この超増加性を導入したナップザック暗号方式は、暗号文から平文を一意に復号することができる一方、解読が容易となってしまう。そのため、Markle-Hellmanナップザック暗号(非特許文献1)やChor-Rivestナップザック暗号といった、これまでに提案されている多くのナップザック暗号方式は、LLLアルゴリズム(格子基底縮小アルゴリズム)を用いた攻撃(非特許文献2)や、シャミア攻撃法(非特許文献3)等の解読法による攻撃に対して脆弱性を有し、安全性の問題等から実用されるに至っていない。
R. C. Merkle and M. E. Hellman, "Hiding Information and Signatures in Trapdoor Knapsacks", IEEE Trans. Inf. Theory, IT-24(5), 525-530, September, 1978.
J. C. Lagarias and A. M. Odlyzko, "Solving Low-density Subset Sum Problem," J. Assoc. Comp. Math., vol.32, no.1, pp.229-246, Preliminary version in Proc. 24th IEEE, 1985.
A. Shamir, "A Polynomial Time Algorithm for Breaking The Basic Merkle-Hellman Cryptosystems", IEEE Trans. Inform. Theory, vol. IT-30, no.5, 699-704, 1982.
LLLアルゴリズムを用いる攻撃は、与えられた公開鍵と暗号文とから適切な格子を形成し、LLLアルゴリズムによって簡約された基底ベクトルを求めて、平文を求める方法であり、格子の次元が数百程度であれば解けるとされている。上記シャミアの攻撃法は、上記導入した秘密鍵の超増加性の特徴を利用するものである。高い安全性を有する暗号方式を実現するためには、上述したような従来からの攻撃法に対して耐性を持たせる必要がある。
本発明は、上記従来からの問題点に鑑みてなされたものであり、本発明は、解読法として代表的なLLLアルゴリズムを用いる攻撃およびシャミア攻撃法による攻撃に対して耐性を有し、高速処理が可能なナップザック問題を安全性の根拠とする新奇なナップザック暗号方式による、鍵生成を実行する鍵生成装置と、暗号化処理を実行する暗号化装置と、暗号文の復号処理を実行する復号装置とを含む暗号システム、該鍵生成装置、該暗号化装置、該復号装置、データ交換方法およびプログラムを提供することを目的とする。
本発明は、上記従来技術に鑑みてなされたものであり、本発明では、ナップザック問題を安全性の根拠とし、複数のナップザックを用いた公開鍵暗号方式による鍵生成装置、暗号化装置、復号装置およびこれらを含む暗号システム、データ交換方法およびプログラムを提供する。
本発明の鍵生成装置は、まず、複数の秘密鍵数列それぞれの要素を変数として非線形関数により組み合わせると超増加性を満たすという条件のもと、複数の秘密鍵数列を生成する。この生成される秘密鍵数列は、個々では超増加性を示さない。鍵生成装置は、さらに、適切な法と、この法と互いに素な複数の乗数とをさらに秘密鍵として定めて、上記複数の秘密鍵数列それぞれの要素をモジュラ変換し、複数の公開鍵数列を生成する。
本発明の暗号化装置は、複数の公開鍵数列それぞれと平文との内積を求めて複数のナップザックを計算し、計算した複数のナップザックを上記非線形関数に対応して演算して暗号文を生成する。一方、本発明の復号装置は、上記秘密鍵の法と乗数とから、法による乗数の乗法逆元を求め、この法と乗法逆元とを用いて、受信した暗号文を逆モジュラ変換し、複数の秘密鍵数列を用いて暗号文から平文を一意に復号する。
また本発明では、上記非線形関数により組み合わせると超増加性を満たすという条件としては、複数の秘密鍵数列をQj(j=1,...,N)とし、秘密鍵数列Qjそれぞれのn個あるうちのi番目の要素をqi jとし、要素q1 jから要素qi−1 jまでの和をSi j(j=1,...,N)とし、要素qi jまたは前記和Si jを変数とする非線形関数をfとして、上記秘密鍵数列Qjそれぞれのi=2,...,nについての各要素qi j(j=1,...,N)が、後述する非線形不等式(1)を満たすという条件を採用することができる。
さらに本発明では、鍵生成装置は、後述する式(2)を満たす上記法pを選択し、複数の公開鍵数列をOj(j=1,...,N)とし、公開鍵数列Ojそれぞれのn個あるうちのi番目の要素をoi jとし、複数の乗数をrj(j=1,...,N)として、後述する式(3)で表されるモジュラ変換により複数の公開鍵数列を生成することができる。
さらに本発明では、暗号化装置は、平文Mのn個あるうちのi番目の要素をmi(∈{0,1})とし、ナップザックをCjとして、暗号文Cを後述する式(4)に従って演算することができる。本発明では、さらに、復号装置は、法pによる乗数rjの乗法逆元rj −1と、法pとを用いて、受信した暗号文Cを逆モジュラ変換して、後述する式(5)にて表される剰余D(C)を算出し、後述する判定式(6)に従って平文Mの要素miそれぞれを判定することができる。
上記構成によれば、適切な平文サイズを定めることにより、LLLアルゴリズムにおける格子次元を解読不可能となる次元まで増大させ、LLLアルゴリズムによる攻撃に対する耐性を備えるとともに、個々の秘密鍵数列が超増加性を有さないため、線形不等式を扱うある線形計画法と見なされるシャミア・アルゴリズムによる攻撃に対しても耐性を備えることができる。また、従来のナップザック暗号方式に比べて、鍵サイズが大きくなるが、ナップザック間の演算(例えば乗算)が追加される程度の計算量の増加で済み、高速な暗号化処理および復号処理が実現される。
以下、本発明を図面に示した特定の実施形態をもって説明するが、本発明は、図面に示した実施形態に限定されるものではない。なお、以下に説明する実施形態では、本発明の暗号システムの一例として、ネットワークを介して秘密通信を実行する複数のコンピュータ装置を含むセキュア通信システムを用いて説明する。
1.ハードウェア構成
本実施形態のセキュア通信システムは、ナップザック問題を安全性の根拠とした公開鍵暗号方式による秘密通信を確立する複数のコンピュータ装置10,50を含んで構成される。以下、まず図1を参照しながら、当該コンピュータ装置10,50のハードウェア構成について説明する。
本実施形態のセキュア通信システムは、ナップザック問題を安全性の根拠とした公開鍵暗号方式による秘密通信を確立する複数のコンピュータ装置10,50を含んで構成される。以下、まず図1を参照しながら、当該コンピュータ装置10,50のハードウェア構成について説明する。
図1は、本発明の実施形態のセキュア通信システムにおけるコンピュータ装置10,50のハードウェア構成を示す。図1に示すコンピュータ装置10,50は、概ねパーソナル・コンピュータやワークステーションなどとして構成される。図1に示すコンピュータ装置10,50は、中央演算装置(CPU)12と、CPU12が使用するデータの高速アクセスを可能とするL1およびL2などのレベルを有するキャッシュ・メモリ14と、CPU12の処理を可能とするRAM、DRAMなどの固体メモリ素子から形成されるシステム・メモリ16とを備えている。システム・メモリ16は、本発明の実施形態おいて、鍵生成処理、暗号化処理または復号処理を実行するための作業空間を提供する。
CPU12、キャッシュ・メモリ14、およびシステム・メモリ16は、システム・バス18を介して、他のデバイスまたはドライバ、例えば、グラフィックス・ドライバ20およびネットワーク・インタフェース・カード(NIC)22へと接続されている。グラフィックス・ドライバ20は、バスを介してディスプレイ24に接続されて、CPU12による処理結果をディスプレイ画面上に表示させている。また、NIC22は、物理層レベルおよびリンク層レベルでコンピュータ装置10,50を、TCP/IPなどの適切な通信プロトコルを使用するネットワークへと接続し、コンピュータ装置10,50間の通信のインタフェースを提供している。
システム・バス18には、さらにI/Oバス・ブリッジ26が接続されている。I/Oバス・ブリッジ26の下流側には、PCIなどのI/Oバス28を介して、IDE、ATA、ATAPI、シリアルATA、SCSI、USBなどにより、ハードディスクなどの記憶装置30が接続されている。記録装置30は、本発明の実施形態において、暗号化処理に用いる秘密鍵または公開鍵を格納するために用いることができる。また、I/Oバス28には、USBなどのバスを介して、キーボードおよびマウスなどのポインティング・デバイスなどの入力装置32が接続されていて、オペレータによる指令をコンピュータ装置10,50に指令している。
コンピュータ装置10,50は、Windows 7(登録商標)、Windows(登録商標)Vista、UNIX(登録商標)、LINUX(登録商標)などのオペレーティング・システム上で動作する、FORTRAN、COBOL、PL/I、C、C++、Visual C++、VisualBasic、Java(登録商標)、Perl、Rubyなどのプログラミング言語により記述されたアプリケーション・プログラムを格納し、実行し、後述する各機能部をコンピュータ装置10,50上で機能させている。
2.複数のナップザックを用いた公開鍵暗号方式による秘密通信
以下、図2〜図4を参照しながら、本発明の実施形態による秘密通信について説明する。なお以下、説明の便宜上、2つのコンピュータ装置間における一方向の通信に注目し、送信するべきメッセージの送信側の装置を、便宜上、送信側コンピュータ装置50と参照し、メッセージの受信側の装置を受信側コンピュータ装置10と参照する。
以下、図2〜図4を参照しながら、本発明の実施形態による秘密通信について説明する。なお以下、説明の便宜上、2つのコンピュータ装置間における一方向の通信に注目し、送信するべきメッセージの送信側の装置を、便宜上、送信側コンピュータ装置50と参照し、メッセージの受信側の装置を受信側コンピュータ装置10と参照する。
図2は、本発明の実施形態によるセキュア通信システムにおいて各コンピュータ装置上に実現される機能ブロックを示す。図2に示すセキュア通信システムは、受信側コンピュータ装置10と、送信側コンピュータ装置50とを含み構成され、コンピュータ装置10,50間において、ナップザック問題を安全性の根拠とした公開鍵暗号方式による秘密通信を実現している。
本実施形態において、受信側コンピュータ装置10は、秘密通信で使用する公開鍵および秘密鍵を生成する鍵生成装置と、生成された秘密鍵を用いて暗号文を復号する復号装置との両方の機能を有する。一方、送信側コンピュータ装置50は、専ら公開鍵を用いて送信すべきメッセージの平文を暗号化する暗号化装置としての機能を有する。なお、他の実施形態では、本受信側コンピュータ装置10は、鍵生成装置としての機能を専ら有するコンピュータ装置と、生成された秘密鍵を安全に取得し、保持し、その秘密鍵を用いて暗号文を復号する復号装置としての機能を専ら有するコンピュータ装置とに分離して構成されていてもよい。
本実施形態の受信側コンピュータ装置10は、秘密鍵および公開鍵の生成処理を実行する鍵生成処理部110と、送信側からの暗号文Cを秘密鍵を用いて復号処理を実行する復号処理部120と、復号して得られた平文Mを出力する平文出力部130とを含む。一方、本実施形態の送信側コンピュータ装置50は、安全に送信すべきメッセージの平文Mが入力される平文入力部150と、公開された公開鍵を用いて平文Mに暗号化処理を施す暗号化処理部160とを含む。
受信側コンピュータ装置10の鍵生成処理部110は、より具体的には、秘密鍵生成部112と、公開鍵生成部114とを含んで構成される。秘密鍵生成部112は、N個の秘密鍵数列Qj(j=1,...,N)を、一定の条件のもと生成する。秘密鍵数列Qjは、それぞれ、n個の要素qi j(i=1,...,n)から構成される数列である。秘密鍵生成部112は、まずq1 j>0またはq1 j≧0の条件下、各秘密鍵数列Qjの1番目の要素q1 jの値をランダムに選択し、続いて、それ以降のi=2,...,nについて、各要素qi jが下記非線形不等式(1)を満たすように当該要素qi jをランダムに選択する。
上記式(1)中、関数fは、N個の要素qi jまたは、要素q1 jから要素qi−1 jまでの和Si j(j=1,...,N)を変数とした非線形関数を表している。この非線形関数は、複数の変数による和、積といった演算により表現されるものである。非線形関数は、2以上の次数を有する限り、特に限定されるものではないが、好ましくは少なくとも2変数の積を含む演算式を採用することができる。より具体的には、N=2の場合、上記非線形関数fは、第1変数および第2変数の積による2変数2次式、N=3の場合、第1変数および第2変数の積と、第3変数との和による3変数2次式、または3変数の積による3変数3次式、N=4の場合、第1変数および第2変数の積と、第3変数および第4変数の積との和による4変数2次式が好適に採用される。このように生成された秘密鍵数列Qjは、個々では超増加性を示さないが、秘密鍵数列Qjの各要素qi jを変数として非線形関数により組み合わせると超増加性を示すものとなる。
一方、公開鍵生成部114は、秘密鍵生成部112が生成した複数の秘密鍵数列Qjから、対応する複数の公開鍵数列Oj(j=1,...,N)を生成する。公開鍵数列Ojも、n個の要素oi j(i=1,...,n)から構成される数列である。公開鍵生成部114は、まず下記式(2)を満たす法pをランダムに選択し、さらに、モジュラ変換を行うために、法pと互いに素な複数の乗数rj(j=1,...,N)をさらに選択する。
ここで、法pおよび乗数rjは、gcd(rj,p)=1を満たすものである。公開鍵生成部114は、続いて、法pおよび乗数rjを用い下記式(3)に従って、秘密鍵数列Qjの各要素qi jをモジュラ変換し、公開鍵数列Ojの各要素oi jを算出する。
それぞれn個の要素を有する秘密鍵数列Qj、法pおよび乗数rjは、本公開鍵暗号方式おいて秘密鍵を構成し、一方、公開鍵数列Ojは、合計n×Nの要素から構成される公開鍵を構成する。送信側コンピュータ装置50は、公開鍵数列Ojを取得し、この公開鍵数列Ojを用いて暗号化を施し、本受信側コンピュータ装置10へメッセージを送信する。一方、秘密鍵数列Qj、法pおよび乗数rjは、公開鍵による暗号文を復号するために、コンピュータ装置10の記憶装置30などに、復号処理部120が参照可能なように安全に記憶される。
送信側コンピュータ装置50の暗号化処理部160は、送信すべきメッセージの平文Mを平文入力部150から受け取り、公開された公開鍵数列Ojを用いて平文Mに暗号化を施して、暗号文Cを受信側コンピュータ装置10へ送信する。送信すべきメッセージの平文Mは、n個の要素mi(∈{0,1})から構成される配列である。暗号化処理部160は、下記式(4)に従い、公開鍵数列Ojそれぞれと平文Mとの内積を求めてナップザックCj(j=1,...,N)を計算し、計算した複数のナップザックCjを上述した非線形関数fに対応して演算し、暗号文Cを生成する。
ここで再び受信側コンピュータ装置10を参照する。受信側コンピュータ装置10の復号処理部120は、秘密鍵である法p、乗数rjおよび秘密鍵数列Qjを記憶装置30などから読み出し、まず乗数rjの法pにおける乗法逆元rj −1を算出する。復号処理部120は、続いて、受信した暗号文Cと乗法逆元rj −1との積を逆モジュラ変換して、その法pにおける剰余D(C)を算出する。ここで、乗法逆元rj −1は、rj×rj −1≡1(mod p)を満たすものであり、gcd(rj,p)=1のとき、法pとするrjの逆元rj −1は必ず存在する。この剰余D(C)は、下記式(5)に示すように、秘密鍵数列Qjそれぞれと平文Mとの内積であるナップザックを上記非線形関数fに対応して演算した結果に合同である。
復号処理部120は、さらに、平文Mの各要素miについて、n番目から1番目に遡って、算出された剰余D(C)と、暗号鍵数列Qjの各要素と、適宜判定済みの平文Mの要素とを用いた下記判定式(6)に従って、当該平文Mの要素miの値を判定し、メッセージの平文Mを一意に復号する。
3.3つのナップザックを用いた公開鍵暗号方式による秘密通信
以下、図3および図4を参照して、N=3の場合について、より具体的に説明する。N=3の場合、秘密鍵数列は、Q1=(q1 1,q2 1,...,qn 1)、Q2=(q1 2,q2 2,...,qn 2)、Q3=(q1 3,q2 3,...,qn 3)となり、公開鍵数列は、O1=(o1 1,o2 1,...,on 1)、O2=(o1 2,o2 2,...,on 2)、Q3=(o1 3,o2 3,...,on 3)となる。またこの場合において、上記非線形関数fは、例えば、第1変数および第2変数の積と、第3変数との和による3変数2次式(X×Y+Z)を採用することができる。かかる場合には、乗数はr1,r2,r3(=r1×r2)となる。
以下、図3および図4を参照して、N=3の場合について、より具体的に説明する。N=3の場合、秘密鍵数列は、Q1=(q1 1,q2 1,...,qn 1)、Q2=(q1 2,q2 2,...,qn 2)、Q3=(q1 3,q2 3,...,qn 3)となり、公開鍵数列は、O1=(o1 1,o2 1,...,on 1)、O2=(o1 2,o2 2,...,on 2)、Q3=(o1 3,o2 3,...,on 3)となる。またこの場合において、上記非線形関数fは、例えば、第1変数および第2変数の積と、第3変数との和による3変数2次式(X×Y+Z)を採用することができる。かかる場合には、乗数はr1,r2,r3(=r1×r2)となる。
図3は、本実施形態のセキュア通信システムにおいて実行されるN=3の場合の秘密通信の処理を示すフローチャートである。なお、図3中の左側の処理は、受信側コンピュータ装置10が実行する処理を示し、右側の処理は、送信側コンピュータ装置50が実行する処理を示している。図3に示す処理は、ステップS200で送信側コンピュータ装置50の処理が開始し、送信側コンピュータ装置50は、ステップS201で、送信すべき送信メッセージの平文Mの入力を受け、ステップS202で、送信メッセージの送付先である受信側コンピュータ装置10へ、秘密通信の開始を依頼する。なお、この秘密通信の依頼には、例えば平文Mのビット数nといったセキュリティパラーメータの折衝が含まれてもよい。
受信側コンピュータ装置10の処理は、ステップS100で開始され、ステップS101で、送信側コンピュータ装置50からの秘密通信開始の依頼を受け、鍵生成処理を開始する。ステップS102では、受信側コンピュータ装置10の秘密鍵生成部112は、まずq1 1>0、q1 2>0およびq1 3≧0の条件下、各秘密鍵数列Q1,Q2,Q3の1番目の各要素q1 1,q1 2,q1 3を選択し、続いて、それ以降のi=2,...,nの要素qi jについて、下記不等式(7)を満たすように当該要素qi jをランダムに選択する。
ステップS103では、受信側コンピュータ装置10の公開鍵生成部114は、まず下記式(8)を満たす法pを選択し、さらに、法pと互いに素な複数の乗数r1,r2をさらに選択し、続いて、法pおよび乗数r1,r2を用いて下記式(3’)に従い、各秘密鍵数列Q1,Q2,Q3の各要素をモジュラ変換し、公開鍵数列O1,O2,O3の各要素を算出する。
ステップS104では、生成した公開鍵数列O1,O2,O3を、秘密通信の要求元の送信側コンピュータ装置50へ送信し、これに対応して、送信側コンピュータ装置50は、ステップS203で、公開鍵数列O1,O2,O3を受信し、メモリ等に記憶する。ステップS204では、送信側コンピュータ装置50の暗号化処理部160は、下記式(9)に従って、公開鍵数列O1,O2,O3と平文Mとの内積を求めてナップザックC1,C2,C3を計算し、暗号文Cを生成する。
図4は、本発明の実施形態の3つのナップザックを用いた公開鍵暗号方式による暗号化処理を概念的に示す図である。図4に示すように、各ナップザックC1,C2,C3の演算は、平文M中の値が1である要素miに対応する秘密鍵数列の要素qi jをそれぞれのナップザックC1,C2,C3に詰め込むことに相当する。最終的な暗号文Cは、このナップザックC1,C2の重みの積とナップザックC3の重みとの和として算出される。
再び図3を参照すると、送信側コンピュータ装置50は、ステップS205で、生成した暗号文Cを宛先の受信側コンピュータ装置10へ送信し、処理を終了させる。これに対応して、受信側コンピュータ装置10は、ステップS105で、暗号文Cを受信する。ステップS106では、受信側コンピュータ装置10の復号処理部120は、秘密鍵である法p、乗数r1,r2および秘密鍵数列Q1,Q2,Q3を読み出し、まず乗数r1,r2の法pにおける乗法逆元乗数r1 −1,r2 −1を算出し、下記式(10)に従って、暗号文Cと乗法逆元r1 −1,r2 −1との積を逆モジュラ変換して、その法pにおける剰余D(C)を算出する。
ステップS107〜ステップS109では、平文Mの各要素miについて、n番目から1番目に遡って、当該平文Mの要素miの値を判定し、メッセージの平文Mを一意に復号する。ステップS108では、復号処理部120は、i番目の要素miについて、上記剰余D(C)と、暗号鍵数列Qjの各要素および適宜判定済みの平文Mの要素により算出される要素Iiとを用いた下記判定式(11)に従って、要素miの値を判定する。
より具体的には、上記判定式(11)は、下記のようになる。
続いてステップS110では、平文出力部130は、一意に復元されたメッセージの平文Mを、例えば記憶装置30、ディスプレイ24等の出力装置に出力し、受信側コンピュータ装置10は、処理を終了させる。
4.2つのナップザックを用いた公開鍵暗号方式による秘密通信
上述までは、N=3の場合の実施形態について説明してきた。公開鍵の鍵サイズと計算の高速性の両立の観点からは、N=3程度のものが好適であるが、N≧2であれば、特に限定されるものではない。他の実施形態では、N=2としても、本発明の実施形態による複数のナップザックを用いた公開鍵暗号方式に同様に適用することができる。N=2の場合、秘密鍵数列は、Q1=(q1 1,q2 1,...,qn 1)、Q2=(q1 2,q2 2,...,qn 2)となり、公開鍵数列は、O1=(o1 1,o2 1,...,on 1)、O2=(o1 2,o2 2,...,on 2)となる。またこの場合において、上記非線形関数fは、例えば、第1変数および第2変数の積による2変数2次式(X×Y)を採用することができる。
上述までは、N=3の場合の実施形態について説明してきた。公開鍵の鍵サイズと計算の高速性の両立の観点からは、N=3程度のものが好適であるが、N≧2であれば、特に限定されるものではない。他の実施形態では、N=2としても、本発明の実施形態による複数のナップザックを用いた公開鍵暗号方式に同様に適用することができる。N=2の場合、秘密鍵数列は、Q1=(q1 1,q2 1,...,qn 1)、Q2=(q1 2,q2 2,...,qn 2)となり、公開鍵数列は、O1=(o1 1,o2 1,...,on 1)、O2=(o1 2,o2 2,...,on 2)となる。またこの場合において、上記非線形関数fは、例えば、第1変数および第2変数の積による2変数2次式(X×Y)を採用することができる。
かかる2つのナップザックを用いる公開鍵暗号方式では、上記非線形不等式(1)、上記式(2)、上記式(4)、上記式(5)および上記判定式(6)は、より具体的な形式では、それぞれ、下記非線形不等式(12)、下記式(13)、下記式(14)、下記式(15)および下記判定式(16)で表現される。
5.計算例
以下、具体的な数列を用いた計算例を参照して説明する。以下の計算例では、N=3の場合について例示する。まず、秘密鍵生成部112は、上記式(7)を満たす条件のもと、秘密鍵数列Q1=(1,2,3,6)と、Q2=(2,1,3,7)と、Q3=(1,2,4,3)とを選択する。これら秘密鍵数列は、単独では超増加性を必ずしも満たさないものである。公開鍵生成部114は、さらに秘密鍵として、法p=167(>12×13+10)と、乗数r1=90と、乗数r2=13とを定め、上記式(3’)に従って、公開鍵数列O1=(90,13,103,39)と、O2=(33,100,133,32)と、O3=(149,131,95,113)とを算出する。
以下、具体的な数列を用いた計算例を参照して説明する。以下の計算例では、N=3の場合について例示する。まず、秘密鍵生成部112は、上記式(7)を満たす条件のもと、秘密鍵数列Q1=(1,2,3,6)と、Q2=(2,1,3,7)と、Q3=(1,2,4,3)とを選択する。これら秘密鍵数列は、単独では超増加性を必ずしも満たさないものである。公開鍵生成部114は、さらに秘密鍵として、法p=167(>12×13+10)と、乗数r1=90と、乗数r2=13とを定め、上記式(3’)に従って、公開鍵数列O1=(90,13,103,39)と、O2=(33,100,133,32)と、O3=(149,131,95,113)とを算出する。
ここで、平文をM=(0,1,0,1)とすると、暗号処理部160は、上記式(9)に従って、平文Mから暗号文C=(13+39)×(100+32)+(131+113)=7108を算出する。
復号処理部120は、上記法p=167と、乗数r1=90と、乗数r2=13に対応して、乗数逆元r1 −1=13と、乗数逆元r2 −1=162とを算出し、上記式(10)に従って、D(C)≡13×162×7108(mod 167)≡69を算出する。さらに復号処理部120は、上記判定式(11)に従って、4番目の要素から1番目の要素まで大小判定を行う。この大小判定を通じて、q4 1×q4 2+q4 3=6×7+3=45<D(C)より、m4=1が判定され、(q4 1+q3 1)×(q4 2+q3 2)+(q4 3+q3 3)=(6+3)×(7+3)+(3+4)=97>D(C)より、m3=0が判定され、(q4 1+q2 1)×(q4 2+q2 2)+(q4 3+q2 3)=(6+2)×(7+1)+(3+2)=69=D(C)より、m2=1が判定され、(q4 1+q2 1+q1 1)×(q4 2+q2 2+q1 2)+(q4 3+q2 3+q1 3)=(6+2+1)×(7+1+2)+(3+2+1)=96>D(C)より、m1=0が判定される。これにより、平文(0,1,0,1)が復元される。
6.複数のナップザックを用いた公開鍵暗号方式の安全性および処理速度の検討
上述までの複数のナップザックを用いる公開鍵暗号方式について、以下、安全性の検討を行う。総当たり攻撃に耐性を持たせるため、平文Mのビット数nを100以上に定めると、公開鍵数列それぞれの要素の数が100以上となるため、上記N=2の場合でも、要素を組み合わせた総数は少なくとも10000以上となる。LLLアルゴリズムを用いた攻撃について検討してみると、格子の次元が10000以上となるため、LLLアルゴリズムによる攻撃は、実質的に動作しないと考えられる。
上述までの複数のナップザックを用いる公開鍵暗号方式について、以下、安全性の検討を行う。総当たり攻撃に耐性を持たせるため、平文Mのビット数nを100以上に定めると、公開鍵数列それぞれの要素の数が100以上となるため、上記N=2の場合でも、要素を組み合わせた総数は少なくとも10000以上となる。LLLアルゴリズムを用いた攻撃について検討してみると、格子の次元が10000以上となるため、LLLアルゴリズムによる攻撃は、実質的に動作しないと考えられる。
シャミア・アルゴリズムによる攻撃に対する耐性ついて検討する。上述したようにシャミアの攻撃法は、導入した秘密鍵の超増加性の特徴を利用するものである。本公開鍵暗号方式では、個々の秘密鍵数列が超増加性を有さないため、当該アルゴリズムにおける不等式は成り立たない。これは、シャミア・アルゴリズムは、線形不等式を扱うある種の線形計画法と見なすことができるが、複数の公開鍵の要素を組み合わせて得られる高次の超増加性を表現する非線形不等式を扱うことができないためである。よって、公開鍵にシャミア・アルゴリズムを適用しても復号可能な鍵を求めることが困難であり、シャミア・アルゴリズムによる攻撃にも耐性を示すと考えられる。
より具体的に上述した3つのナップザックを用いた公開鍵暗号方式について検討してみると、仮にシャミア・アルゴリズムを適用して超増加性を有する数列の要素qi 1×qi 2+qi 3が得られたとしても、解読するためには、少なくともqi 1×qi 2と、qi 3とに分離する必要があるが、この和分解は通常困難である。よって、3つのナップザックの積と和による公開鍵暗号方式は、さらに、2つのナップザックの積による方式に比べて、シャミア・アルゴリズムによる攻撃に対する耐性がさらに高いものと考えられる。
さらに本公開鍵暗号方式では、複数の公開鍵数列から1つの鍵数列を導出し得たとしても、解読には、N個の公開鍵数列からN個の秘密鍵数列に対応する鍵数列を求めることが必要であるため、復号が困難となるという利点もある。さらに、本公開鍵暗号方式では、通常のナップザック暗号方式に比べて鍵サイズが大きくなるが、ナップザック間の演算(例えば乗算)が追加される程度の計算量の増加で済み、高速な暗号化処理および復号処理が実現される。
以上説明してきたように、本発明の実施形態によれば、解読法として代表的なLLLアルゴリズムを用いる攻撃およびシャミア攻撃法による攻撃に対して耐性を有し、高速な処理が可能な新奇なナップザック問題を安全性の根拠とするナップザック暗号方式による暗号システム、鍵生成を実行する鍵生成装置、暗号化処理を実行する暗号化装置、暗号文の復号処理を実行する復号装置、データ交換方法およびプログラムを提供することができる。
なお、上述までの実施形態では、暗号システムの一例として、ネットワークを介して秘密通信を実行する複数のコンピュータ装置を含むセキュア通信システムを用いて説明してきたが、通信システムの他、認証、署名、情報記憶などの従来より暗号方式が適用可能ないかなるシステムに応用することができる。また、上述した実施形態では、鍵生成装置、暗号化装置、復号装置の例として、コンピュータ装置について説明してきたが、上述した複数のナップザックを用いる公開鍵暗号方式をハードウェアまたはソフトウェアとハードウェアとの協働により実装する如何なる装置として構成することができる。
なお、本発明につき、発明の理解を容易にするために各機能部および各機能部の処理を記述したが、本発明は、上述した特定の機能部が特定の処理を実行する外、処理効率や実装上のプログラミングなどの効率を考慮して、いかなる機能部に、上述した処理を実行するための機能を割当てることができる。
本発明の上記機能は、C++、Fortran、Pascal、Java(登録商標)、Java(登録商標)Beans、Java(登録商標)Applet、Java(登録商標)Script、Perl、Rubyなどのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、装置可読な記録媒体に格納して頒布または伝送して頒布することができる。
これまで本発明を、特定の実施形態をもって説明してきたが、本発明は、実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
10…コンピュータ装置、12…CPU、14…キャッシュ・メモリ、16…システム・メモリ、18…システム・バス、20…グラフィックス・ドライバ、22…NIC、24…ディスプレイ、26…I/Oバス・ブリッジ、28…I/Oバス、30…記憶装置、32…入力装置、50…コンピュータ装置、110…鍵生成処理部、112…秘密鍵生成部、114…公開鍵生成部、120…復号処理部、130…平文出力部、150…平文入力部、160…暗号化処理部
Claims (14)
- ナップザック問題を安全性の根拠とした公開鍵暗号方式による、鍵生成装置、暗号化装置および復号装置を含む暗号システムであって、前記鍵生成装置は、
個々は超増加性を示さない複数の秘密鍵数列を、前記複数の秘密鍵数列それぞれの要素を変数として非線形関数により組み合わせると超増加性を満たすという条件のもと、生成する秘密鍵生成手段と、
法と、前記法と互いに素な複数の乗数とをさらに秘密鍵として定めて、前記複数の秘密鍵数列それぞれの要素をモジュラ変換し、複数の公開鍵数列を生成する公開鍵生成手段とを含み、前記暗号化装置は、
前記複数の公開鍵数列それぞれと平文との内積を求めて複数のナップザックを計算し、計算した前記複数のナップザックを前記非線形関数に対応して演算し、暗号文を生成する暗号化手段を含み、前記復号装置は、
前記法による前記乗数の乗法逆元と、前記法とを用いて、受信した暗号文を逆モジュラ変換し、前記複数の秘密鍵数列を用いて前記暗号文から平文を一意に復号する復号手段を含む、
暗号システム。 - 前記非線形関数により組み合わせると超増加性を満たすという前記条件とは、前記複数の秘密鍵数列をQj(j=1,...,N)とし、前記秘密鍵数列Qjそれぞれのn個あるうちのi番目の要素をqi jとし、要素q1 jから要素qi−1 jまでの和をSi j(j=1,...,N)とし、前記要素qi jまたは前記和Si jを変数とする前記非線形関数をfとして、前記秘密鍵数列Qjそれぞれのi=2,...,nについての各要素qi j(j=1,...,N)が、下記不等式(1)
- 前記法pは、下記式(2)
- 前記平文Mのn個あるうちのi番目の要素をmi(∈{0,1})とし、前記ナップザックをCjとして、前記暗号文Cは、下記式(4)
- 前記復号手段は、前記法pによる前記乗数rjの前記乗法逆元rj −1と、前記法pとを用いて、受信した暗号文Cを逆モジュラ変換し、下記式(5)
- N=3であり、前記乗数r3はr1×r2と等しく、前記非線形関数fは、2変数の積と変数との和であり、前記不等式(1)、前記式(2)、前記式(4)、前記式(5)および前記判定式(6)は、下記不等式(7)、下記式(8)、下記式(9)、下記式(10)および下記判定式(11)
- N=2であり、前記非線形関数fは、2変数の積であり、前記不等式(1)、前記式(2)、前記式(4)、前記式(5)および前記判定式(6)は、下記不等式(12)、下記式(13)、下記式(14)、下記式(15)および下記判定式(16)
- ナップザック問題を安全性の根拠とした公開鍵暗号方式による鍵生成を実行する鍵生成装置であって、前記鍵生成装置は、
個々は超増加性を示さない複数の秘密鍵数列を、前記複数の秘密鍵数列それぞれの要素を変数として非線形関数により組み合わせると超増加性を満たすという条件のもと、生成する秘密鍵生成手段と、
法と、前記法と互いに素な複数の乗数とをさらに秘密鍵として定めて、前記複数の秘密鍵数列それぞれの要素をモジュラ変換し、複数の公開鍵数列を生成する公開鍵生成手段とを含む、鍵生成装置。 - ナップザック問題を安全性の根拠とした公開鍵暗号方式による複数の公開鍵数列を使用した暗号化処理を実行する暗号化装置であって、前記暗号化装置は、
前記複数の公開鍵数列それぞれと平文との内積を求めて複数のナップザックを計算し、秘密鍵生成に用いた非線形関数に対応して前記複数のナップザックを演算し、暗号文を生成する暗号化手段を含み、前記複数の公開鍵数列は、
個々は超増加性を示さない複数の秘密鍵数列であって、それぞれの要素を変数とした前記非線形関数により組み合わせると超増加性示すという条件のもと生成された当該複数の秘密鍵数列から、法と前記法と互いに素な複数の乗数とをさらに秘密鍵として用いて、前記複数の秘密鍵数列それぞれの要素をモジュラ変換して生成されたものである、暗号化装置。 - ナップザック問題を安全性の根拠とした公開鍵暗号方式による復号処理を実行する復号装置であって、前記復号装置は、
個々は超増加性を示さない複数の秘密鍵数列であって、それぞれの要素を変数として非線形関数により組み合わせると超増加性示す条件のもと生成される当該複数の秘密鍵数列と、前記秘密鍵数列から複数の公開鍵数列を生成する際に用いられた秘密鍵としての法および前記法と互いに素な複数の乗数とを用いて、前記法による前記乗数の乗法逆元を算出し、受信した暗号文を逆モジュラ変換し、前記複数の秘密鍵数列を用いて前記暗号文から平文を一意に復号する復号手段を含む、復号装置。 - ナップザック問題を安全性の根拠とした公開鍵暗号方式によるデータ交換方法であって、前記方法は、
個々は超増加性を示さない複数の秘密鍵数列を、前記複数の秘密鍵数列それぞれの要素を変数として非線形関数により組み合わせると超増加性を満たすという条件のもと生成するステップと、
法と、前記法と互いに素な複数の乗数とをさらに秘密鍵として定めて、前記複数の秘密鍵数列それぞれの要素をモジュラ変換し、複数の公開鍵数列を生成するステップと、
前記複数の秘密鍵数列と、前記法と、前記複数の乗数とをデータ受取側の装置で保持するとともに、前記複数の公開鍵数列をデータ受渡側の装置で保持するステップと、
前記データ受渡側の装置が、前記複数の公開鍵数列それぞれと平文との内積を求めて複数のナップザックを計算し、計算した前記複数のナップザックを前記非線形関数に対応して演算し、暗号文を生成するステップと、
前記データ受取側の装置が、前記法による前記乗数の乗法逆元と、前記法とを用いて、受信した暗号文を逆モジュラ変換し、前記複数の秘密鍵数列を用いて前記暗号文から平文を一意に復号するステップと
を含む、データ交換方法。 - コンピュータを、請求項8に記載の各手段として機能させるための装置実行可能なプログラム。
- コンピュータを、請求項9に記載の各手段として機能させるための装置実行可能なプログラム。
- コンピュータを、請求項10に記載の各手段として機能させるための装置実行可能なプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009285093A JP5464341B2 (ja) | 2009-12-16 | 2009-12-16 | 複数のナップザックを用いる公開鍵暗号方式による暗号システム、鍵生成装置、暗号化装置、復号装置、データ交換方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009285093A JP5464341B2 (ja) | 2009-12-16 | 2009-12-16 | 複数のナップザックを用いる公開鍵暗号方式による暗号システム、鍵生成装置、暗号化装置、復号装置、データ交換方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011128281A JP2011128281A (ja) | 2011-06-30 |
JP5464341B2 true JP5464341B2 (ja) | 2014-04-09 |
Family
ID=44290958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009285093A Expired - Fee Related JP5464341B2 (ja) | 2009-12-16 | 2009-12-16 | 複数のナップザックを用いる公開鍵暗号方式による暗号システム、鍵生成装置、暗号化装置、復号装置、データ交換方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5464341B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103580857A (zh) * | 2012-08-06 | 2014-02-12 | 重庆电子工程职业学院 | 一种基于背包加密的汉字报文数据压缩方法 |
CN114095151B (zh) * | 2020-07-31 | 2024-08-23 | 马上消费金融股份有限公司 | 一种加解密方法、认证方法、装置、设备和存储介质 |
-
2009
- 2009-12-16 JP JP2009285093A patent/JP5464341B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2011128281A (ja) | 2011-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7053537B2 (ja) | 素数モジュロの二重カプセル化に基づく1対多分配鍵管理によるポスト量子非対称鍵暗号化システム | |
JP4809598B2 (ja) | 暗号システムの設計におけるアイソジャニの使用 | |
KR101795771B1 (ko) | 정수 기반 준동형 암호 기법에서 압축 암복호화를 제공하는 시스템 및 방법 | |
JP6019453B2 (ja) | 暗号化装置、復号化装置、及びプログラム | |
KR101610917B1 (ko) | 암호 알고리즘의 복호 방법 및 그것을 포함하는 암호 시스템 | |
Son et al. | Conditional proxy re-encryption for secure big data group sharing in cloud environment | |
Mandal et al. | Designing and performance analysis of a proposed symmetric cryptography algorithm | |
US20050220299A1 (en) | Public key cryptographic methods and systems | |
CN109756335B (zh) | 一种阶为梅森素数的有限域乘法群的公钥加密解密方法 | |
EP3455997A1 (en) | Encryption for low-end devices through computation offloading | |
US20060251248A1 (en) | Public key cryptographic methods and systems with preprocessing | |
Pugila et al. | An efficeient encrpytion algorithm based on public key cryptography | |
Gaithuru et al. | Insight into the operation of NTRU and a comparative study of NTRU, RSA and ECC public key cryptosystems | |
JP5464341B2 (ja) | 複数のナップザックを用いる公開鍵暗号方式による暗号システム、鍵生成装置、暗号化装置、復号装置、データ交換方法およびプログラム | |
US20080181397A1 (en) | Secure data transmission and storage using limited-domain functions | |
CN117318986A (zh) | 一种基于多重加密的数据传输方法及系统 | |
JP5633563B2 (ja) | 楕円曲線上のパラメータ化による暗号法 | |
JP4563037B2 (ja) | 暗号化装置および復号化装置、並びにこれらを備えた暗号システム、暗号化方法および復号化方法 | |
JP2011107407A (ja) | 準同型暗号システム、準同型暗号方法、プログラム | |
JP5529691B2 (ja) | 鍵交換システム、鍵交換方法及び鍵交換プログラム | |
JP4612027B2 (ja) | 署名システム | |
Kumar et al. | Exploration and Implementation of RSA-KEM Algorithm | |
Sidhu | Analyzing Modern Cryptography Techniques and Reviewing their Timeline (2023) | |
JP4200259B2 (ja) | 公開鍵生成装置、暗号化装置および復号装置 | |
WO2018011825A1 (en) | Encryption and decryption of messages |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20121211 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131129 |
|
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: 20131210 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140107 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |