(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-26
(45)【発行日】2024-03-05
(54)【発明の名称】暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラム
(51)【国際特許分類】
G09C 1/00 20060101AFI20240227BHJP
G06F 21/60 20130101ALI20240227BHJP
【FI】
G09C1/00 620Z
G06F21/60 320
(21)【出願番号】P 2020188737
(22)【出願日】2020-11-12
【審査請求日】2023-02-06
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】秋山 浩一郎
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2010-204466(JP,A)
【文献】米国特許出願公開第2016/0119120(US,A1)
【文献】特表2017-532598(JP,A)
【文献】駒野 雄一, 他,多項式の近似GCDを利用した代数曲面暗号方式,電子情報通信学会技術研究報告,日本,電子情報通信学会,2016年07月07日,Vol.116, No.132,pp.217-222
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G06F 21/60
G09C 1/00
(57)【特許請求の範囲】
【請求項1】
有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)を、公開鍵として取得する公開鍵取得部と、
平文mを前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)の係数に埋め込む平文埋め込み部と、
前記一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)を掛け合わせたn変数平文多項式M(x
1,・・・,x
n)を生成する多項式演算部と、
前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式s
k(x
1,・・・,x
n)(k=1,2)をランダムに生成し、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式r
k(x
1,・・・,x
n)をランダムに生成し、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つノイズ多項式e
k(x
1,・・・,x
n)をランダムに生成する多項式生成部と、
前記n変数平文多項式M(x
1,・・・,x
n)に対し、前記n変数多項式s
k(x
1,・・・,x
n)と、前記n変数多項式r
k(x
1,・・・,x
n)と、前記ノイズ多項式e
k(x
1,・・・,x
n)と、前記n変数不定方程式X(x
1,・・・,x
n)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c
k(x
1,・・・,x
n)を生成する暗号化部と、
を備える暗号化装置。
【請求項2】
前記多項式生成部は、一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)(j=1,・・・,d)を生成し、前記一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)の積によって前記ノイズ多項式e
k(x
1,・・・,x
n)を生成し、
前記暗号化部は、前記ノイズ多項式e
k(x
1,・・・,x
n)と前記n変数多項式s
k(x
1,・・・,x
n)との積を含む演算を行う暗号化処理によって、暗号文c
k(x
1,・・・,x
n)を生成する、
請求項
1に記載の暗号化装置。
【請求項3】
前記暗号化部は、前記n変数多項式s
k(x
1,・・・,x
n)と前記ノイズ多項式e
k(x
1,・・・,x
n)との積、前記n変数不定方程式X(x
1,・・・,x
n)と前記n変数多項式r
k(x
1,・・・,x
n)との積、及び、前記n変数平文多項式M(x
1,・・・,x
n)に、加算及び減算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c
k(x
1,・・・,x
n)を生成する、
請求項1
又は2に記載の暗号化装置。
【請求項4】
有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)の1つ以上の零点uを、秘密鍵として取得する鍵取得部と、
暗号文c
k(x
1,・・・,x
n)(k=1,2)に前記零点uを代入することにより、1変数多項式h
k(t)を生成する零点代入部と、
前記1変数多項式h
k(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x
1,・・・,x
n)に前記零点uを代入した1変数多項式M(u)を求める近似GCD計算部と、
前記1変数多項式M(u)を前記有限体F
p上で、複数の第1の因子に因数分解する因数分解部と、
前記第1の因子を組み合わせて、前記零点uが代入された前記n変数平文多項式M(x
1,・・・,x
n)の複数の第2の因子の組み合わせを求める組合せ計算部と、
前記複数の第2の因子の組み合わせと、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)を得る平文多項式因子復元部と、
前記一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)の係数から平文mを復号する復号部と、
を備える復号装置。
【請求項5】
有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)を、公開鍵として取得し、前記n変数不定方程式X(x
1,・・・,x
n)の1つ以上の零点uを、秘密鍵として取得する鍵取得部と、
暗号文c
k(x
1,・・・,x
n)(k=1,2)に前記零点uを代入することにより、1変数多項式h
k(t)を生成する零点代入部と、
前記1変数多項式h
k(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x
1,・・・,x
n)に前記零点uを代入した1変数多項式M(u)を求める近似GCD計算部と、
前記1変数多項式h
k(t)を前記1変数多項式M(u)で割った剰余e
k(u)を計算する剰余計算部と、
前記剰余e
k(u)と、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つノイズ多項式e
k(x
1,・・・,x
n)を復元するノイズ多項式復元部と、
前記ノイズ多項式e
k(x
1,・・・,x
n)を暗号文c
k(x
1,・・・,x
n)から引いて多項式c
k-e
kを求める多項式減算部と、
前記多項式c
k-e
kをイデアル分解することにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)と、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式s
k(x
1,・・・,x
n)と、を抽出するイデアル分解部と、
前記多項式c
k-e
kと、前記n変数平文多項式因子m
i(x
1,・・・,x
n)と、前記n変数多項式s
k(x
1,・・・,x
n)とに基づく多項式を、前記n変数不定方程式X(x
1,・・・,x
n)で割った余りが0の場合、前記n変数平文多項式因子m
i(x
1,・・・,x
n)の係数から平文mを復元する復号部と、
を備える復号装置。
【請求項6】
前記暗号文c
k(x
1,・・・,x
n)は、ノイズ多項式e
k(x
1,・・・,x
n)とn変数多項式s
k(x
1,・・・,x
n)との積を含み、
前記ノイズ多項式e
k(x
1,・・・,x
n)は、一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)(j=1,・・・,d)の積により表され、
前記復号装置は、
前記剰余e
k(u)を、一つ以上の因子に因数分解する因数分解部と、
前記一つ以上の因子を組み合わせて、前記一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)(j=1,・・・,d)を求める組合せ計算部と、を更に備え、
前記復号部は、前記一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)(j=1,・・・,d)から、前記ノイズ多項式e
k(x
1,・・・,x
n)を復元する、
請求項
5に記載の復号装置。
【請求項7】
前記暗号文c
k(x
1,・・・,x
n)は、前記n変数多項式s
k(x
1,・・・,x
n)と前記ノイズ多項式e
k(x
1,・・・,x
n)との積、前記n変数不定方程式X(x
1,・・・,x
n)とn変数多項式r
k(x
1,・・・,x
n)との積、及び、前記n変数平文多項式M(x
1,・・・,x
n)の加算及び減算のうち少なくとも一つを含む演算によって表される、
請求項
5又は
6に記載の復号装置。
【請求項8】
暗号化装置が、有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)を、公開鍵として取得するステップと、
前記暗号化装置が、平文mを前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)の係数に埋め込むステップと、
前記暗号化装置が、前記一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)を掛け合わせたn変数平文多項式M(x
1,・・・,x
n)を生成するステップと、
前記暗号化装置が、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式s
k(x
1,・・・,x
n)(k=1,2)をランダムに生成し、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式r
k(x
1,・・・,x
n)をランダムに生成し、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つノイズ多項式e
k(x
1,・・・,x
n)をランダムに生成するステップと、
前記暗号化装置が、前記n変数平文多項式M(x
1,・・・,x
n)に対し、前記n変数多項式s
k(x
1,・・・,x
n)と、前記n変数多項式r
k(x
1,・・・,x
n)と、前記ノイズ多項式e
k(x
1,・・・,x
n)と、前記n変数不定方程式X(x
1,・・・,x
n)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c
k(x
1,・・・,x
n)を生成するステップと、
を備える暗号方法。
【請求項9】
復号装置が、有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)の1つ以上の零点uを、秘密鍵として取得するステップと、
前記復号装置が、暗号文c
k(x
1,・・・,x
n)(k=1,2)に前記零点uを代入することにより、1変数多項式h
k(t)を生成するステップと、
前記復号装置が、前記1変数多項式h
k(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x
1,・・・,x
n)に前記零点uを代入した1変数多項式M(u)を求めるステップと、
前記復号装置が、前記1変数多項式M(u)を前記有限体F
p上で、複数の第1の因子に因数分解するステップと、
前記復号装置が、前記第1の因子を組み合わせて、前記零点uが代入された前記n変数平文多項式M(x
1,・・・,x
n)の複数の第2の因子の組み合わせを求めるステップと、
前記復号装置が、前記複数の第2の因子の組み合わせと、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)を得るステップと、
前記復号装置が、前記一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)の係数から平文mを復号するステップと、
を備える復号方法。
【請求項10】
復号装置が、有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)を、公開鍵として取得し、前記n変数不定方程式X(x
1,・・・,x
n)の1つ以上の零点uを、秘密鍵として取得するステップと、
前記復号装置が、暗号文c
k(x
1,・・・,x
n)(k=1,2)に前記零点uを代入することにより、1変数多項式h
k(t)を生成するステップと、
前記復号装置が、前記1変数多項式h
k(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x
1,・・・,x
n)に前記零点uを代入した1変数多項式M(u)を求めるステップと、
前記復号装置が、前記1変数多項式h
k(t)を前記1変数多項式M(u)で割った剰余e
k(u)を計算するステップと、
前記復号装置が、前記剰余e
k(u)と、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つノイズ多項式e
k(x
1,・・・,x
n)を復元するステップと、
前記復号装置が、前記ノイズ多項式e
k(x
1,・・・,x
n)を暗号文c
k(x
1,・・・,x
n)から引いて多項式c
k-e
kを求めるステップと、
前記復号装置が、前記多項式c
k-e
kをイデアル分解することにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)と、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式s
k(x
1,・・・,x
n)と、を抽出するステップと、
前記復号装置が、前記多項式c
k-e
kと、前記n変数平文多項式因子m
i(x
1,・・・,x
n)と、前記n変数多項式s
k(x
1,・・・,x
n)とに基づく多項式を、前記n変数不定方程式X(x
1,・・・,x
n)で割った余りが0の場合、前記n変数平文多項式因子m
i(x
1,・・・,x
n)の係数から平文mを復元するステップと、
を備える復号方法。
【請求項11】
コンピュータを、
有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)を、公開鍵として取得する公開鍵取得部と、
平文mを前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)の係数に埋め込む平文埋め込み部と、
前記一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)を掛け合わせたn変数平文多項式M(x
1,・・・,x
n)を生成する多項式演算部と、
前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式s
k(x
1,・・・,x
n)(k=1,2)をランダムに生成し、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式r
k(x
1,・・・,x
n)をランダムに生成し、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つノイズ多項式e
k(x
1,・・・,x
n)をランダムに生成する多項式生成部と、
前記n変数平文多項式M(x
1,・・・,x
n)に対し、前記n変数多項式s
k(x
1,・・・,x
n)と、前記n変数多項式r
k(x
1,・・・,x
n)と、前記ノイズ多項式e
k(x
1,・・・,x
n)と、前記n変数不定方程式X(x
1,・・・,x
n)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c
k(x
1,・・・,x
n)を生成する暗号化部、
として機能させるためのプログラム。
【請求項12】
前記多項式生成部は、一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)(j=1,・・・,d)を生成し、前記一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)の積によって前記ノイズ多項式e
k(x
1,・・・,x
n)を生成し、
前記暗号化部は、前記ノイズ多項式e
k(x
1,・・・,x
n)と前記n変数多項式s
k(x
1,・・・,x
n)との積を含む演算を行う暗号化処理によって、暗号文c
k(x
1,・・・,x
n)を生成する、
請求項
11に記載のプログラム。
【請求項13】
前記暗号化部は、前記n変数多項式s
k(x
1,・・・,x
n)と前記ノイズ多項式e
k(x
1,・・・,x
n)との積、前記n変数不定方程式X(x
1,・・・,x
n)と前記n変数多項式r
k(x
1,・・・,x
n)との積、及び、前記n変数平文多項式M(x
1,・・・,x
n)に、加算及び減算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文c
k(x
1,・・・,x
n)を生成する、
請求項
11又は12に記載のプログラム。
【請求項14】
コンピュータを、
有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)の1つ以上の零点uを、秘密鍵として取得する鍵取得部と、
暗号文c
k(x
1,・・・,x
n)(k=1,2)に前記零点uを代入することにより、1変数多項式h
k(t)を生成する零点代入部と、
前記1変数多項式h
k(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x
1,・・・,x
n)に前記零点uを代入した1変数多項式M(u)を求める近似GCD計算部と、
前記1変数多項式M(u)を前記有限体F
p上で、複数の第1の因子に因数分解する因数分解部と、
前記第1の因子を組み合わせて、前記零点uが代入された前記n変数平文多項式M(x
1,・・・,x
n)の複数の第2の因子の組み合わせを求める組合せ計算部と、
前記複数の第2の因子の組み合わせと、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)を得る平文多項式因子復元部と、
前記一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)の係数から平文mを復号する復号部、
として機能させるためのプログラム。
【請求項15】
コンピュータを、
有限体F
p上の1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数不定方程式X(x
1,・・・,x
n)を、公開鍵として取得し、前記n変数不定方程式X(x
1,・・・,x
n)の1つ以上の零点uを、秘密鍵として取得する鍵取得部と、
暗号文c
k(x
1,・・・,x
n)(k=1,2)に前記零点uを代入することにより、1変数多項式h
k(t)を生成する零点代入部と、
前記1変数多項式h
k(t)の近似GCD(Greatest Common Divisor)を計算することにより、n変数平文多項式M(x
1,・・・,x
n)に前記零点uを代入した1変数多項式M(u)を求める近似GCD計算部と、
前記1変数多項式h
k(t)を前記1変数多項式M(u)で割った剰余e
k(u)を計算する剰余計算部と、
前記剰余e
k(u)と、前記零点uとから導かれた連立1次方程式を解くことにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つノイズ多項式e
k(x
1,・・・,x
n)を復元するノイズ多項式復元部と、
前記ノイズ多項式e
k(x
1,・・・,x
n)を暗号文c
k(x
1,・・・,x
n)から引いて多項式c
k-e
kを求める多項式減算部と、
前記多項式c
k-e
kをイデアル分解することにより、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子m
i(x
1,・・・,x
n)(i=1,・・・,m)と、前記1変数多項式環F
p[t]の一定次数以下の元を係数に持つn変数多項式s
k(x
1,・・・,x
n)と、を抽出するイデアル分解部と、
前記多項式c
k-e
kと、前記n変数平文多項式因子m
i(x
1,・・・,x
n)と、前記n変数多項式s
k(x
1,・・・,x
n)とに基づく多項式を、前記n変数不定方程式X(x
1,・・・,x
n)で割った余りが0の場合、前記n変数平文多項式因子m
i(x
1,・・・,x
n)の係数から平文mを復元する復号部、
として機能させるためのプログラム。
【請求項16】
前記暗号文c
k(x
1,・・・,x
n)は、ノイズ多項式e
k(x
1,・・・,x
n)とn変数多項式s
k(x
1,・・・,x
n)との積を含み、
前記ノイズ多項式e
k(x
1,・・・,x
n)は、一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)(j=1,・・・,d)の積により表され、
前記プログラムは、前記コンピュータを、
前記剰余e
k(u)を、一つ以上の因子に因数分解する因数分解部と、
前記一つ以上の因子を組み合わせて、前記一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)(j=1,・・・,d)を求める組合せ計算部、として更に機能させ、
前記復号部は、前記一つ以上d個のノイズ多項式因子e
k,j(x
1,・・・,x
n)(j=1,・・・,d)から、前記ノイズ多項式e
k(x
1,・・・,x
n)を復元する、
請求項
15に記載のプログラム。
【請求項17】
前記暗号文c
k(x
1,・・・,x
n)は、前記n変数多項式s
k(x
1,・・・,x
n)と前記ノイズ多項式e
k(x
1,・・・,x
n)との積、前記n変数不定方程式X(x
1,・・・,x
n)とn変数多項式r
k(x
1,・・・,x
n)との積、及び、前記n変数平文多項式M(x
1,・・・,x
n)の加算及び減算のうち少なくとも一つを含む演算によって表される、
請求項
15又は
16に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラムに関する。
【背景技術】
【0002】
電子メールを始めとする多くの情報がネットワークを行き交うことにより、人々がコミュニケーションを行なうネットワーク社会において、暗号技術は情報の機密性や真正性を守る手段として広く活用されている。一方で、現在広く利用されているRSA暗号や楕円曲線暗号であっても量子計算機が出現すれば解読される危険に晒されている。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】駒野雄一、秋山浩一郎、後藤泰宏、縫田光司、花岡悟一郎、“多項式の近似GCDを利用した代数曲面暗号方式”、信学技報、116(130)、pp.217‐222 (2016).
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明が解決しようとする課題は、量子計算機が出現しても安全性が確保できる暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラムを提供することである。
【課題を解決するための手段】
【0006】
実施形態の暗号化装置は、公開鍵取得部と平文埋め込み部と多項式演算部と多項式生成部と暗号化部とを備える。公開鍵取得部は、有限体Fp上の1変数多項式環Fp[t]の一定次数以下の元を係数に持つn変数不定方程式X(x1,・・・,xn)を、公開鍵として取得する。平文埋め込み部は、平文mを前記1変数多項式環Fp[t]の一定次数以下の元を係数に持つ一つ以上m個のn変数平文多項式因子mi(x1,・・・,xn)(i=1,・・・,m)の係数に埋め込む。多項式演算部は、前記n変数平文多項式因子mi(x1,・・・,xn)を掛け合わせたn変数平文多項式M(x1,・・・,xn)を生成する。多項式生成部は、前記1変数多項式環Fp[t]の一定次数以下の元を係数に持つn変数多項式sk(x1,・・・,xn)(k=1,2)をランダムに生成し、前記1変数多項式環Fp[t]の一定次数以下の元を係数に持つn変数多項式rk(x1,・・・,xn)をランダムに生成し、前記1変数多項式環Fp[t]の一定次数以下の元を係数に持つノイズ多項式ek(x1,・・・,xn)をランダムに生成する。暗号化部は、前記n変数平文多項式M(x1,・・・,xn)に対し、前記n変数多項式sk(x1,・・・,xn)と、前記n変数多項式rk(x1,・・・,xn)と、前記ノイズ多項式ek(x1,・・・,xn)と、前記n変数不定方程式X(x1,・・・,xn)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理によって、暗号文ck(x1,・・・,xn)を生成する。
【図面の簡単な説明】
【0007】
【
図1】実施形態の近似GCDアルゴリズムの例を示す図。
【
図2】実施形態のイデアル分解アルゴリズムの例を示す図。
【
図3】実施形態の不定方程式X(x,y)の係数を調整するアルゴリズムの例を示す図。
【
図4】実施形態の暗号化装置の機能構成の例を示す図。
【
図5】実施形態の暗号化方法の例を示すフローチャート。
【
図6】実施形態の復号装置の機能構成の例1(復号(その1)の場合)を示す図。
【
図7】実施形態の復号方法の例1(復号(その1)の場合)を示すフローチャート。
【
図8】実施形態の復号装置の機能構成の例2(復号(その2)の場合)を示す図。
【
図9】実施形態の復号方法の例2(復号(その2)の場合)を示すフローチャート。
【
図10】実施形態の鍵生成装置の機能構成の例を示す図。
【
図11】実施形態の鍵生成方法の例を示すフローチャート。
【
図12】実施形態の次数削減処理(ステップS65の詳細)の例を示すフローチャート。
【
図13】実施形態の変形例の復号方法の例を示すフローチャート。
【
図14】実施形態の変形例の復号方法の例を示すフローチャート。
【
図15】実施形態の変形例のノイズ多項式の復号方法の例を示すフローチャート。
【
図16】実施形態の暗号化装置、復号装置及び鍵生成装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、暗号化装置、復号装置、暗号方法、復号方法、暗号化プログラム及び復号プログラムの実施形態を詳細に説明する。
【0009】
暗号技術は大きく共通鍵暗号技術と公開鍵暗号技術に分けることができる。共通鍵暗号はデータの攪拌アルゴリズムに基づいた暗号方式で、高速に暗号化/復号ができる一方で、予め共通の鍵を持った2者間でしか秘密通信や認証通信ができない。公開鍵暗号は数学的なアルゴリズムに基づいた暗号方式で、共通鍵暗号ほど暗号化/復号が高速でないが、事前の鍵共有を必要としない。公開鍵暗号は、通信の際は送信相手が公開している公開鍵を利用して秘密通信を実現し、送信者の秘密鍵を利用してデジタル署名を施すことで(成りすましを防ぐ)認証通信が可能となるという特徴がある。
【0010】
このため共通鍵暗号は主に有料デジタル放送のように受信後リアルタイムで復号されなければならない情報の暗号化に利用され、その復号鍵は別途限定受信システムと呼ばれる鍵配信システムを用いて視聴契約者だけに配信する方法が採用されている。一方、インターネットに開設されているオンラインサイトでは顧客情報(クレジットカード番号や住所など)を盗聴から守るために暗号化を行う必要があるが、その暗号鍵は予め交付しておくことが必ずしも可能でないため、公開鍵暗号が用いられることが多い。
【0011】
代表的な公開鍵暗号にはRSA暗号と楕円曲線暗号がある。RSA暗号は素因数分解問題の困難性が安全性の根拠となっており、冪乗剰余演算が暗号化演算として用いられている。楕円曲線暗号は楕円曲線上の離散対数問題の困難性が安全性の根拠となっており、楕円曲線上の点演算が暗号化演算に用いられている。これらの公開鍵暗号は特定の鍵(公開鍵)に関する解読法は提案されているものの、一般的な解読法は知られていないため、安全性に関する重大な問題は、後に述べる量子計算機による解読法を除き、現在までのところ見つかっていない。
【0012】
この他の公開鍵暗号には(NP問題として知られている)ナップサック問題の困難性に安全性の根拠をおいたナップサック暗号、体の拡大理論を利用して構成され、連立方程式の求解問題に安全性の根拠をおいた多次多変数暗号などがある。しかし、ナップサック暗号に関しては既にほとんど全ての実現形態において解読法が知られており、安全性はかなり疑問であると言わざるを得ない。
【0013】
多次多変数暗号に関しては有力な攻撃方法が知られている一方で知られている解読法が通用しない実現形態も存在するため、安全性に関してはかなり損なわれているが、決定的なものとはなっていない。しかし、知られている解読法を避けるために必要な鍵サイズが大きくなっており、問題視されはじめている。
【0014】
一方で、現在広く利用されているRSA暗号と楕円曲線暗号であっても量子計算機が出現すれば解読される危険に晒されている。量子計算機とは量子力学で知られているエンタングルメントという物理現象を利用して、(現在の計算機とは違った原理に基づいて)超並列計算を行わせることができる計算機である。量子計算機は、現在までのところ実験レベルでしか動作が確認されていない仮想の計算機であるが、実現に向けた研究開発が進められている。この量子計算機を用いて1994年にShorは素因数分解や離散対数問題を効率的に解くアルゴリズムが構成できることを示した。即ち、量子計算機が実現すれば素因数分解に基づくRSA暗号や、(楕円曲線上の)離散対数問題に基づく楕円曲線暗号は解読できることになる。
【0015】
このような状況の下、量子計算機が実現されてもなお安全である可能性を秘めた公開鍵暗号の研究が近年行われるようになってきた。現時点でも実現可能な公開鍵暗号で量子計算機でも解読が難しいとされているものに格子暗号がある。格子暗号は格子という離散的なn次元ベクトル空間(線形空間)の中で原点以外の点の中で最も原点に近い点を求める問題(最短ベクトル問題)を安全性の根拠にしている公開鍵暗号である。
【0016】
最短ベクトル問題はNP困難な問題ではあるが、線形問題であるため、小さなサイズの問題は容易に解けてしまう。そこで、安全性を実現するための次元数が大きくなり、公開鍵や秘密鍵といった鍵サイズが大きくなり、特にローエンドデバイスへの適用が危ぶまれている。更に、公開鍵暗号は共通鍵暗号と比較して、回路規模が大きく、処理時間も掛かるため、モバイル端末などの小電力環境では実現できないか実現しても処理時間が掛かるという問題があった。このため、小電力環境でも実現できる公開鍵暗号が求められている。
【0017】
一般に公開鍵暗号は(素因数分解問題や離散対数問題などの)計算困難な問題を見出し、(秘密鍵を知らずに)暗号文を解読しようとする場合、当該計算困難な問題を解くことと同等になるように構成する。しかし、逆に計算困難な問題を1つ定めたとしても、必ずその問題を安全性の根拠とするような公開鍵暗号が容易に構成できる訳ではない。なぜなら、計算が困難すぎる問題に安全性の根拠をおくと鍵を生成する問題も困難になり、構成ができない。一方で問題を鍵生成が可能となる程度に容易とすると、解読も容易になってしまう。
【0018】
従って、公開鍵暗号を構成するには計算困難な問題を見つけるとともに、鍵生成できる程には容易だが、(生成した秘密鍵を知らずに)解読できる程には容易でないという絶妙なバランスを持つ問題に作り変えるという創造性が必要であり、この部分の構成が難しいために現在まで数えるほどの公開鍵暗号しか提案されてこなかった。そのような中で、量子計算機による計算でも効率的に解読できない可能性があり、小電力環境でも高速に処理できることが期待される公開鍵暗号に代数曲面を用いた公開鍵暗号(特許文献1)が提案されている。
【0019】
特許文献1の公開鍵暗号は、秘密鍵を代数曲面X(x,y,t)に対応する2つのセクションとし、公開鍵を代数曲面X(x,y,t)とし、多項式生成手段と暗号化手段とを備える。多項式生成手段は、平文mを平文多項式m(x,y,t)に埋め込む処理と、3変数x,y,tのランダムな多項式h(x,y,t),s1(x,y,t),s2(x,y,t),r1(x,y,t),r2(x,y,t)を生成する処理とを行う。暗号化手段は、各多項式と定義式X(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、平文多項式m(x,y,t)から2つの暗号文c1=Epk(m,s1,r1,h,X),c2=Epk(m,s2,r2,h,X)を生成する。特許文献1の公開鍵暗号は、暗号文に非線形性はあるものの、暗号文が2つあり、かつノイズ項がなかったため、解読された。
【0020】
非特許文献1では、ノイズを載せた暗号方式が提案されている。この暗号方式は、秘密鍵を代数曲面X(x,y,t)に対応する1つのセクションとし、第1の多項式生成手段と、第2の多項式生成手段と、暗号化手段とを備える。第1の多項式生成手段は、公開鍵を代数曲面X(x,y,t)とする時、平文mを平文多項式m(x,y,t)に埋め込む処理と、3変数x,y,tのランダムな多項式s1(x,y,t),s2(x,y,t),r1(x,y,t),r2(x,y,t)を生成する処理とを行う。第2の多項式生成手段は、ノイズ多項式e1(x,y,t),e2(x,y,t)を生成する。暗号化手段は、上記各多項式と上記定義式X(x,y,t)とを加算、減算及び乗算のうち少なくとも一つを含む演算を行う暗号化処理により、平文多項式m(x,y,t)から2つの暗号文c1=Epk(m,s1,r1,e1,X),c2=Epk(m,s2,r2,e2,X)を生成する。この暗号方式は暗号文にm(x,y)s1(x,y),m(x,y)s2(x,y)という未知部分の積を取った非線形性はあるものの、平文多項式m(x,y)とランダム多項式s1(x,y),s2(x,y)との単純な積であった。そのため、本実施形態で述べるような安全性解析をした際、復号可能でかつ安全なパラメータを取ることができないという問題があった。
【0021】
以下、実施形態では、このような現状に鑑み、量子計算機が出現しても安全性が確保できる可能性を秘め、脆弱性を解消できる公開鍵暗号について説明する。具体的には、秘密を非線形な多項式に隠すことにより、1つの暗号文に非線形構造を持たせ、かつノイズを付加することにより、脆弱性を解消できる公開鍵暗号を構成する。
【0022】
[代数の説明]
はじめに実施形態で利用する代数を定義する。まず、整数の集合をZで表し、自然数pでの整数Zの剰余類をZpと記す。Zpは剰余類なので、通常、
Zp={[0],[1],・・・,[p-1]}
と記す。ここで、Zpの各元は以下のような性質を満たすことから、加減乗算が定義される。
[a]+[b]=[a+b]
[a]-[b]=[a-b]
[a]・[b]=[a・b]
このように加減乗算が定義でき、結合法則が成り立つとともに、加法の単位元0を含み且つ0以外の元xに対して足し合わせると0となる逆元[-x]([x]+[-x]=[0])を有する集合を環という。更に、可換則([a]+[b]=[b]+[a]、[a]・[b]=[b]・[a])が成り立つ環を可換環といい、加えて乗法の単位元[1]を持つとき単位元を持つ可換環という。
【0023】
除算に関しては、[b]・[x]=[x]・[b]=[1]を満たす元[x]が存在する[b]についてのみ定義でき、このような元[x]が存在するとき、[x]を[b]の逆元といい[b-1]とかく。即ち、逆元が存在する[b]について除算[a]/[b]は
[b]・[b-1]=[1]
を満たす逆元[b-1]を[a]に掛ける([a]・[b-1])ことにより計算される。
【0024】
Zpの元[b]に逆元[b-1]が存在するための必要十分条件はGCD(b,q)=1である。即ち、Zpの元bはbとpが互いに素となるとき、かつ、その時に限り逆元[b-1]を持つ。例えば、p=5としたとき、b=3は、3と5が互いに素であることから、[3-1]=[2]となる。しかし、p=6とした場合はGCD(3,6)=3となり、互いに素にならず、逆元が存在しないことから、除法は実現できない。
【0025】
さて、[0]はpで割ったときの余りが0となる集合を表している。明示的に書けば
[0]={・・・,-2p,-p,0,p,2p,・・・}
を意味する。Zpに演算を定義するに際しては、集合[0]の要素のどの元で計算しても答えは一致することから、簡単のために集合[0]に含まれる1つの要素(代表元)で代表させて計算することを考える。この代表元は(その性格から)この集合に含まれている元であれば何でも良いのではあるが、実施形態では簡単のため、0で代表させる。同様に、[1]を1、[2]を2のように最小の正整数で代表させ、Zpを{0,1,・・・,q-1}で代表させることとする。
【0026】
ここで、pを素数とすると、0以外の全ての代表元はpと互いに素となり、除法が定義できる。即ち、pを素数とするとZpにおいて加減乗除が定義できる。このように可換環であり、0以外の元が乗法に関して逆元を持つ集合を体という。特にpを素数にしたときのZpのように有限個の元からなる体を有限体という。有限体はその元の数が素数か素数の冪となるものしかなく、前者を素体と呼ぶ。ここで述べたZpは素体である。
【0027】
次に、多項式に関わる記法と定義を示す。素体Fpを係数とする一変数多項式の集合をFp[t]と記載する。容易に分かるようにFp[t]は加減乗算が可能ではあるが、多項式の除算は定数項のみからなる多項式を除いて逆元が存在しないため成立しない。
【0028】
[多変数多項式の記法]
次に、2変数多項式に関する用語と記号を定義する。まず、環R上の2変数多項式を下記式(1)により記載する。
【0029】
【0030】
ここで、τi,j(t)は一変数多項式環Fp[t]の元である。集合Γξは多項式ξ(x,y)に含まれる非零の単項式の指数の組(i(x指数),j(y指数))の集合で、2変数多項式ξ(x,y)の項集合と呼ぶ。
【0031】
たとえば、下記式(2)のZ7上の多項式の項集合は、下記式(3)となる。
【0032】
【0033】
【0034】
ここで、Γξの要素数は2変数多項式ξ(x,y)の単項式の数と一致する。また以下では、2変数多項式であることが明らかな場合、ξ(x,y)を単にξと書くことがある。
【0035】
なお、実施形態では、簡単のため次数Dの2変数多項式の項集合をその最大項集合として定め、ΓDと表記する。即ち、D=2のときは、下記式(4)となり、D=3のときは、下記式(5)となる。
【0036】
【0037】
【0038】
このΓ3は、上記式(3)の項集合Γξを部分集合として含んでいる。
【0039】
項集合ΓDが与えられたとき、この項集合ΓDを持つ一変数多項式環Fp[t]上の2変数多項式の集合を下記式(6)により定義する。
【0040】
【0041】
ここでai,j(t)はFp[t]上の元である。尚、上記式(6)の左辺を単にFΓDと書くことがある。また、その係数ai,j(t)の次数がd以下に限定される場合を、下記式(7)で表し、同様に単にFΓD,dと書くことがある。
【0042】
【0043】
一変数多項式環Fp[t]上の2変数多項式を3変数多項式として、下記式(8)により表す。
【0044】
【数8】
ここで、μ
i,j,kは有限体F
pの元である。集合Δ
ξは多項式ξ(x,y,t)に含まれる非零の単項式の指数の組(i(x指数),j(y指数),k(t指数))の集合で、3 変数多項式ξ(x,y,t)の項集合と呼ぶ。
【0045】
たとえば、F7上の多項式(9)の項集合は、下記式(10)となる。
【0046】
【0047】
【0048】
ここで、Δξの要素数は3変数多項式ξ(x,y,t)の単項式の数と一致する。また以下では、3変数多項式であることが明らかな場合、ξ(x,y,t)を単にξと書くことがある。
【0049】
尚、最大項集合の表記は、2変数多項式の際の表記に倣い、3変数多項式のx,yに関する次数Dで各係数ai,j(t)の次数がd以下に限定される最大項集合をΔD,dと記載することとする。
【0050】
例えば、D=2,d=1の場合は、下記式(11)となる。
【0051】
【0052】
[解と零点]
一変数多項式環Fp[t]上の方程式X(x,y)=0を満たす一変数多項式環Fp[t]上の元の対(ux(t),uy(t))を方程式X(x,y)=0の解という。また、X(x,y)を多項式と見たとき、方程式X(x,y)=0の解をX(x,y)の零点という。
【0053】
[一変数多項式における近似GCD計算]
一変数多項式環Fp[t]の多項式f(t),g(t)の最大公約式(GCD:Greatest Common Divisor)をa(t)とすると、a(t)はユークリッド互除法によって求められることは良く知られている事実である。これらf(t),g(t)に小さな次数のノイズe1(t),e2(t)がそれぞれ付加された場合の近似GCD計算について説明する。この近似GCD計算の演算は、実施形態の暗号方式の復号において重要な役割を果たす。
【0054】
下記式(12)のF
p[t]の多項式f(t),g(t)が、下記式(13)の条件を満たすときに次数dのGCDa(t)を
図1に示すAlgorithm1で求めることができることが知られている。
【0055】
【0056】
【数13】
このアルゴリズムは拡張ユークリッド互除法のアイデアを利用しており、効率的に処理が可能である。本実施形態では、このa(t)のことをf(t),g(t)の近似GCD(Approximate GCD)と呼ぶ。
【0057】
[多変数多項式のイデアル分解]
多変数多項式環Fp[t][x,y]におけるイデアルを利用した因数分解(イデアル分解)問題を定義し、その1つの解法アルゴリズムを示す。イデアル分解とはFp[t][x,y]の2つの元Xとf(=Πj=1
nhj+Xr)が与えられたときhj(∈Fp[t][x,y])(j=1,・・・,n)を求める問題である。ここで、rもFp[t][x,y]の元であり、いわば、剰余環Fp[t][x,y]/(X)における多項式f の因数分解問題である。
【0058】
多変数多項式環Fp[t][x,y]の有限集合をG={g1,・・・,gs}とする。このとき、任意の多項式f(∈Fp[t][x,y])に対して、多項式qi(hj(∈Fp[t][x,y])が存在して、下記式(14)が、r=0、または、任意のiに対して、LM(r)がLM(gi)で割り切れないことが知られている。
【0059】
【0060】
ここで、LM(r)は多変数多項式環Fp[t]に定めた単項式順序において先頭順序となる単項式を意味する。例えば、x>y>tなる順序を定めた場合、単項式の順序はx,y,tの順に優先され、同じ変数が入った単項式の場合はこの順で指数が高いものが先にくる。式(9)の多項式をrとすると、rの単項式順序はt2x2,2tx2,6x2,4t2x,x,3ty2,5y2,4t2,t,3となり、LM(r)=t2x2となる。
【0061】
有限集合Gを使って、fを上記式(14)のように変形することをfのGによる正規化といい、rをGの正規形(Normal Form)と呼んで、NFG(f)と書く。また、多項式のイデアルJに対して集合Gをグレブナ基底と呼ばれる集合にすると、イデアルJに含まれる任意の要素fの正規形が0となる。即ち、下記式(15)と書けることが知られている。
【0062】
【0063】
ここでqiはFp[t][x,y]の元である。
【0064】
さて、fとXの終結式を計算すると、下記式(16)となることが知られている。
【0065】
【数16】
ここでRes
x(f,X)は変数xに関する終結式である。ここで変数yについても同様に下記式(17)により、終結式が計算できる。
【0066】
【0067】
ここで、イデアルJを下記式(18)とする。
【0068】
【0069】
Jは(hj,X)とほぼ一致し、hj∈Jとなることから、イデアルJのグレブナ基底Gを計算し、Gの下でhjの正規形を計算すると0となる。いま、簡単のためにhjを単にhと書き、hを下記式(19)により表す。
【0070】
【0071】
ここでμijkはFpを値とする変数である。hのGにおける正規形を計算すると下記式(20)になる。
【0072】
【0073】
この両辺のxiyjtkの係数を比較することで連立一次方程式を導出し、これを解いてμijkを得ることによって、hを復元することができる。
【0074】
一方で、実際にはRes
x(h
i,X)、Res
y(h
i,X)はそれぞれRes
x(f,X)、Res
y(f,X)の因子であり、それらの正しい組み合わせでなければh
iは復元しない。それらの点を考慮すると、イデアル分解は
図2に示すAlgorithm2で実現されることが分かる。
【0075】
[不定方程式とその求解問題]
不定方程式は変数の数が(方程式に含まれる)式の数よりも多い方程式と定義できる。不定方程式はその束縛条件が少ない一方で解の自由度が大きいため、解を持てば複数(場合によっては無数)となることが多い(これが「不定」の意味するところである。)。実際、整数係数の不定方程式の実数解(或いは複素数解)は無数に存在し、その幾つかを近似解として求めることは容易である。一方で、整数係数の不定方程式の整数解など離散的な集合に解を持つ方程式については、通常このような手法は使えない。そこで、何らかの理論的な絞り込みが必要になるが、そのような絞り込みを行っても、一般的には有限回の手段では解の存在、非存在を判定することができないことが知られている(非可解問題)。
【0076】
実施形態で提案する不定方程式暗号は1変数多項式環Fp[t]上定義された不定方程式X(x,y)=0の一変数多項式解を求める求解問題を安全性の基盤としており、この問題は以下のように定義される。
【0077】
定義1(一変数多項式環Fp[t]上の不定方程式の求解問題)
1変数多項式環Fp[t]上定義された不定方程式X(x,y)=0が与えられた時、Fp[t]上の一変数多項式解ux(t),uy(t)を求める問題を一変数多項式環Fp[t]上の不定方程式の求解問題、もしくは有限体Fp上定義された代数曲面X(x,y)上の求セクション問題という。
【0078】
以下では、実施形態の不定方程式暗号の鍵生成アルゴリズムと暗復号アルゴリズムとを示す。本方式においては平文Mを複数の平文多項式因子mi(x,y)に分散して埋め込む。即ち、平文をその係数にそのまま埋め込んだ平文多項式がM(x,y)であるとすると、mi(x,y)に対してk個の平文多項式因子と呼ぶ多項式mi(x,y)(i=1,・・・,k)を用意して、下記式(21)となるように分散して埋め込む。
【0079】
【0080】
具体的な埋め込み方法は、後述の[平文の埋め込み]で説明する。一方で、復号においても積Πi=1
kmi(x,y)を復元した後、因数分解を行って、因子mi(x,y)(i=1,・・・,k)を求めない限りは平文が復元できない構造となっている。以下では簡単のためにmi(x,y)のx,yの多項式として見たときの次数を1とし、mi(x,y)=mx,i(t)x+my,i(t)y+m1,i(t)の形に書ける多項式のみを因子とする平文多項式のみを考える。
【0081】
また、以下に示すアルゴリズムでは、理解を助ける目的で小さなサイズの数値例を添えるが、この数値例では暗号の安全性は保てないことをお断りしておかなければならない。
【0082】
[システムパラメータ]
システムパラメータとは、各アルゴリズムで利用されるパラメータで、安全性や復号可能性を保証するためのパラメータである。システムパラメータは任意に設定可能な独立パラメータと、独立パラメータから導出される従属パラメータからなり、以下の通りに定められる。独立パラメータは以下の1~7である。
【0083】
1.p:素体Fpのサイズを示す素数
(例)p=7
【0084】
2.d:解(ux(t),uy(t))の次数
実施形態ではds=degux(t)=deguy(t)とする。
(例)d=9
【0085】
3.下記式(22)により表される(非線形)不定方程式X(x,y)の次数:DX
(例)DX=2
【0086】
【0087】
4.下記式(23)により表される平文多項式M(x,y)の次数:Dm
(例)Dm=2
【0088】
【0089】
5.下記式(24)により表されるランダム多項式r(x,y)の次数:Dr
(例)Dr=1
【0090】
【0091】
6.下記式(25)により表されるランダム多項式s(x,y)の次数:Ds
(例)Ds=1
【0092】
【0093】
7.下記式(26)により表されるノイズ多項式e(x,y)の次数:De
(例)De=0
【0094】
【0095】
ここで、後述する線形代数攻撃を回避するために、下記式(27)の条件を満たすようにする必要がある。
【0096】
【0097】
上述の独立パラメータに従属する従属パラメータは以下の1~5である。
【0098】
1.dX:不定方程式X(x,y)(i=1,・・・,DX)の各係数τij(t)の次数。
(例)dX=d-1
【0099】
2.dm:平文多項式因子mj(x,y)(j=1,・・・,Dm)の各係数の次数。
(例)dm=2
【0100】
3.dr:ランダム多項式rk(x,y)(k=1,2)の各係数rij(t)の次数。
(例)dr=2
【0101】
4.ds:ランダム多項式sk(x,y)(k=1,2)の各係数sij(t)の次数。
(例)ds=2
【0102】
5.de:ノイズ多項式ek(x,y)(k=1,2)の各係数eij(t)の次数。
(例)de=2
【0103】
ここで、後述する線形代数攻撃を回避するために、下記式(28)の条件を満たすようにする必要がある。
【0104】
【0105】
<鍵>
公開鍵暗号の鍵は秘密鍵と公開鍵からなる。以下では、実施形態における鍵を具体的に示す。まず秘密鍵は、下記式(29)により表される不定方程式Xの解uである。
【0106】
【0107】
(例)ここでd=9,p=7のとき、解uは下記式(30)により表される。
【0108】
【0109】
公開鍵は、下記式(31)により表される不定方程式X(x,y)である。
【0110】
【0111】
ここで、X(x,y)=0は秘密鍵uを解に持つ。即ち、X(ux(t),uy(t)=0である。
【0112】
<鍵生成>
秘密鍵及び公開鍵は、上述のシステムパラメータを入力として、以下の処理を行うことで生成される。秘密鍵(多項式ux(t),uy(t)(∈Fp[t]))は、degux(t)=deguy(t)=dの条件で、一様ランダムに生成される。
(例)d=9,p=7の場合、秘密鍵は上述の式(30)により表される。
【0113】
尚、この秘密鍵ux(t),uy(t)(∈Fp[t])はux(t)(∈Fp[t])のみに圧縮することができる。なぜなら、ux(t)さえ分かれば、Fp[t]上の1変数方程式X(ux(t),y)=0を解くことにより、uy(t)が比較的容易に導出できるからである。そこで、実施形態ではux(t)を圧縮された秘密鍵とする。
【0114】
公開鍵は以下の方法1~3で生成できる。
1.不定方程式の項集合ΓDx,dxから定数項τ00(t)以外の項を一様ランダムに生成
具体的な生成方法は、
(a)X(x,y)=0
(b)ΓDxの各要素(i,j)(但し、(0,0)は除く)に対して以下を実行する。
i.次数dXの多項式τij(t)をFp[t]から一様ランダムに生成。
ii.X(x,y)=X(x,y)+τij(t)xi
(例)p=7,d=9,DX=2のとき、X(x,y)は下記式(32)により表される。
【0115】
【0116】
2.定数項τ00(t)を下記式(33)により計算
【0117】
【0118】
上記式(32)の例の場合には、定数項τ00(t)は、下記式(34)により表される。
【0119】
【0120】
上記式(32)に上記式(34)の定数項τ00(t)を加えると、X(x,y)は、下記式(35)により表される。
【0121】
【0122】
ここでX(x,y)の係数に着目すると定数項の係数の次数が26となっており他の項の次数8をはるかに上回っている。これはτ00(t)の計算式(33)により、次数がd・degX(x,y)+dXとなるためである。本実施形態ではこれを他の係数の次数に合わせるため、以下の方法3によって調整を行う。
【0123】
3.不定方程式X(x,y)の調整
解(ux(t),uy(t))を持つ不定方程式X(x,y)は任意の一変数多項式q(t)に対してX(x,y)+q(t)xiyi-q(t)ux(t)iuy(t)jという変形を施しても同一の解(ux(t),uy(t))を持つ。ここで、iを0≦i≦degX(x,y)なる範囲の整数とし、下記式(36)とする。
【0124】
【0125】
このとき、τ00(t)=q(t)ux(t)i+τ00’(t)かつdegτ00’(t)<degux(t)iと書けるので、X’(x,y)=X(x,y)+q(t)xi-q(t)ux(t)iという変形によって定数項をτ00’(t)とすることができ、次数を減らすことができる。
【0126】
尚、d
X=d-1として、この方法を用いると、全ての係数の次数は一致し、調整されたx
2,xの項と定数項以外の項はステップ1でランダムに選択されたものとなる。そこで、d
X=d-1として、ステップ1,2でX(x,y)を生成し、本変形を次数の高い項から順に行うことで、各係数の次数を上げることなく定数項τ
00(t)の次数を順次下げて任意の(i,j)(∈Γ
x)に対してdegτ
ij(t)=d-1とすることができる。具体的なアルゴリズムは
図3に示すAlgorithm3の通りである。
【0127】
これにより、X(x,y)は下記式(37)により表される。
【0128】
【0129】
[公開鍵の圧縮]
上述の公開鍵の生成アルゴリズムから明らかなように、公開鍵となる不定方程式X(x,y)の各項の係数(xi(i=0,・・・DX)の項以外)はランダムに生成される。したがって、この部分は乱数のシードだけを公開して、特定の疑似乱数生成関数やハッシュ関数などを利用して生成することができる。よって、公開するのはこのシードと調整された部分の係数のみとすることにすることができ、公開鍵のサイズが圧縮される。上記式(37)の例では、下記式(38)の部分のみ実際の係数を公開し、その他の項はシード(通常はセキュリティパラメータだけのビット長をもつ)を公開することにより生成できる。
【0130】
【0131】
これによれば、次数2であれば約半分に、次数3であれば約2/5、次数4であれば約1/3に圧縮できる。
【0132】
[暗号化]
次に、実施形態の暗号化処理について説明する。
【0133】
[平文の埋め込み]
実施形態では、平文を埋め込む平文多項式は上述の式(23)のような積構造をしているため、直接埋め込むことができない。そこで、実施形態の暗号化装置は、平文を平文多項式因子mj(x,y)(i=1,・・・,Dm)に分散して埋め込む。平文多項式の因子mj(x,y)は前述の通り、mj(x,y)=mj,x(t)x+mj,y(t)y+mj,1(t)と書ける。係数mj,x(t),mj,y(t)及びmj,1(t)はそれぞれdm次である。実施形態の暗号化装置は、平文Mをp進展開して、下記式(39)によって表す。
【0134】
【0135】
このとき、平文Mは下記式(40)のようにFp[t]の元に埋め込まれる。
【0136】
【0137】
即ち、p=7,dm=1とすると、実施形態の暗号化装置は、平文(3,0,1,1,5)(7)を平文多項式の因子として分散して埋め込む。例えば、ここではDm=3のとき、平文(3,0,1,1,5)(7)は、m1=(2,5,5,2,3)(7),m2=(6,6,5,1,2)(7),m3=(2,3,5,5,0)(7)のように分散する。平文は、これらのベクトルの要素ごとの和m1+m2+m3=(3,0,1,1,5)(7)を取ることで復元される。
【0138】
このように平文を複数の要素の和に分散するために、例えば実施形態の暗号化装置は、平文Mをm1,・・・,mDmに分散するときm1,・・・,mDm-1を平文Mと同じサイズのランダムなデータとして生成し、mDm=m-(m1+m2+・・・+mDm-1)とする。
【0139】
[暗号化アルゴリズム]
1.平文を、上述の方法で次数dm次の平文多項式の因子mj(x,y)(j=1,・・・,Dm)に分散して埋め込む。平文(3,0,1,1,5)(7)を、m1=(2,5,5,2,3)(7),m2=(6,6,5,1,2)(7),m3=(2,3,5,5,0)(7)のように分散する場合、下記のようになる。
m1(x,y)=(2t+1)x+(5t+5)y+2t+3
m2(x,y)=(6t+1)x+(6t+5)y+t+2
m3(x,y)=(2t+1)x+(3t+5)y+5t
【0140】
ここで、項xの係数は平文多項式因子の定数倍の曖昧性を除去するため1に固定し、項xの係数には平文は埋め込まない。
【0141】
2.ランダム多項式rk(x,y)(k=1,2)の生成
dr次以下の係数を持つDr次の2変数ランダム多項式rk(x,y)をランダムに項集合ΓDr、drから生成する。具体的な生成方法は、以下の通りである。
(a)rk(x,y)=0(rkに初期値0を代入)
(b)各(i,j)∈ΓDrに対して以下を実行する。
i.次数drの多項式rij(t)をFp[t]から一様ランダムに生成する。
ii.rk=rk+rij(t)xiyj(rkに右辺の式を代入)
(例)p=7,Dr=2,dr=1のとき、生成されるランダム多項式rkは、例えば下記式(41)により表される。
【0142】
【0143】
3.ランダム多項式sk(x,y)の生成
ds次以下の係数を持つDs次の2変数ランダム多項式sk(x,y)をランダムに項集合ΓDs、dsから生成する。具体的な生成方法は、以下の通りである。
(a)sk(x,y)=0(skに初期値0を代入)
(b)各(i,j)∈ΓDsに対して以下を実行する。
i.次数dsの多項式sij(t)をFp[t]から一様ランダムに生成。
ii.sk=sk+sij(t)xiyj(skに右辺の式を代入)
(例)p=7,Ds=1,ds=1のとき、生成されるランダム多項式skは、例えば下記式(42)により表される。
【0144】
【0145】
4.ノイズ多項式ek(x,y)の生成
de次以下の係数を持つノイズ多項式ek(x,y)をノイズ多項式の形式ΓDe,deから生成する。具体的な生成方法は、以下の通りである。
(a)ek(x,y)=0(ekに初期値0を代入)
(b)各(i,j)∈ΓDeに対して以下を実行する。
i.次数deの多項式eij(t)をFp[t]から一様ランダムに生成。
ii.ek=ek+eij(t)xiyj(ekに右辺の式を代入)
(例)p=7,De=0,de=3のとき、生成されるノイズ多項式ekは、例えば下記式(43)により表される。
【0146】
【0147】
5.暗号文ck(x,y)の生成
下記式(44)によって暗号文c(x,y)=Epk(M,si,ri,ei,X)を計算する。
【0148】
【0149】
(例)本例の場合、暗号文c1は下記式(45)によって表され、暗号文c2は下記式(46)によって表される。
【0150】
【0151】
【0152】
[復号(その1)]
次に、実施形態の1つ目の復号処理について説明する。
【0153】
解u:(x,y)=(ux(t),uy(t))を不定方程式X(x,y)に代入するとX(ux(t),uy(t))=0となる関係があることに注意する。
【0154】
[復号アルゴリズム]
復号アルゴリズムは以下の通りである。
【0155】
1.解の代入
解uをck(x,y)に代入して下記式(47)を計算する。
【0156】
【0157】
本例の場合、c1(ux(t),uy(t))は下記式(48)によって表され、c2(ux(t),uy(t))は下記式(49)によって表される。
【0158】
【0159】
【0160】
2.平文多項式の積M(ux(t),uy(t))(=Πi=1
Dmmi(ux(t),uy(t)))を近似GCD計算によって算出
これは、上述の式(13)の条件が成り立つときに成立するが、上述の式(13)の条件は後述の条件(62)によって保証される。本例では、下記式(50)により表される。
【0161】
【0162】
3.M(ux(t),uy(t))を因数分解
本例の場合は下記式(51)に分解される。
【0163】
【0164】
4.ステップ3で得られた因子の組合せから平文多項式を復元
本例の場合は、因子(t+2)(t+3)(t8+5t6+3t5+t4+6t3+4t2+t+1)から(2t+1)x+(5t+5)y+2t+3が復元できる。また、因子(t2+t+4)(t8+3t7+6t6+6t5+4t4+t3+4t2+6t+5)から(5t+1)x+(4t+4)y+5t+3が復元できる。また、(t10+4t9+4t7+2t6+5t4+5t3+5t2+t+2)から(2t+1)x+(3t+5)y+5tが復元できる。因子の組み合わせの求め方と平文多項式因子の復元についての詳細は、[平文多項式因子の絞り込み]及び[平文多項式因子の復元]で後述する。
【0165】
[平文多項式因子の復元]
次に、復号アルゴリズムのステップ4で得られた因子の組み合わせから平文多項式の因子mi(x,y)を復元する方法を示す。ここでは記述を簡略化するため、添え字を付けず、m(ux(t),uy(t))から平文多項式の因子m(x,y)を復元するアルゴリズムを示す。
【0166】
まず、正しい(即ち、正しい平文多項式m(x,y)に対応した)因子m(ux(t),uy(t))が得られた場合、平文多項式は下記式(52)により与えられる。
【0167】
【0168】
ここで、degmx(t),degmy(t),degm1(t)≦dmであることから、下記式(53)と書ける。
【0169】
【0170】
そこで、mx,j,my,j,m1,j(j=0,・・・,dm)を変数として、秘密鍵である(x,y)=(ux(t),uy(t))を代入し、得られた式をm(ux(t),uy(t))と比較する(下記式(54))。
【0171】
【0172】
即ち、上記式(54)は右辺にのみ変数があり、左辺には変数がないことから、右辺と左辺の係数比較により連立方程式が成立する。しかも右辺の変数は相互に乗算されることがないので、連立一次方程式となり、これを解くことにより、平文多項式が復元できる。
【0173】
尚、上記式(54)から導出される方程式は変数が3(dm+1)、式は平文多項式が上記式(52)の形であり、全体でd+dm次あることを考えると、定数項も含めた項の数はd+dm+1となるので、同じ数だけの式が存在する。
【0174】
ここで、解が1つに定まるためには、式の数が変数の数以上にならなければならないので、下記式(55)の条件を満たさなければならない。
【0175】
【0176】
上述の[復号アルゴリズム]で扱った例もd=9,dm=1(d+dm=10)であり、この条件を満たしている。ここで、解が求まらなかったときは対象とした因子mj(ux(t),uy(t))が正しい因子ではなかったことを意味し、この因子は棄却する。
【0177】
[平文多項式の因子の絞り込み]
次に、M(ux(t),uy(t))を因数分解したときに得られる因子から、平文多項式の因子に対応する因子m(ux(t),uy(t))の候補を抽出して、絞り込む方法について、実施形態で利用している例に基づいて詳しく説明する。
【0178】
まず、m(ux(t),uy(t))の次数はd+dmであり、本例ではd=9,dm=1なので、10次となる。これと上述の式(51)で示した因数分解を対照すると、下記式(56)により表される因子が1つ確定する。
【0179】
【0180】
後の2つの因子は、下記式(57)により表されるペアか、下記式(58)により表されるペアのどちらかとなる。
【0181】
【0182】
【0183】
実際、前者について平文を復元すると、下記式(59)が復元できるが、後者は上述の式(54)から導出される方程式の解が存在せず棄却される。
【0184】
【0185】
本例においては、m(ux(t),uy(t))の因子の次数がそれぞれ(1,1,2,8,8,10)であったため、このような比較的単純な組み合わせとなったが、例えば因子の次数が(1,1,2,2,2,2,4,6,10)のような場合は、より複雑となる。このような場合には(ここでは詳しく述べないが)部分和問題を解くアルゴリズムを活用する。部分和問題とは長さlの自然数の数列a1,a2,・・・,alがあったとき、この要素の中から幾つかを選んで足した結果が特定の数Nとなるような部分数列を求める問題である。この例ではN=10として足した結果が10になるような部分数列のうち重なりのないものを求める問題となる。
【0186】
ここで、数列(1,1,2,2,2,2,4,6,10)の個々の数字に対応する因子があるので、これらを区別するために、それぞれの要素に番号を付けて[1,2,3,4,5,6,7,8,9]と表記する。ここで、例えば[1,2,3,4,5,6]は対応する数列が(1,1,2,2,2,2)であるから、足したら10となる。[7,8]、[9]も足したら10になり、これらの組み合わせが候補の1つとなる。この他にも[1,2,3,4,7]などという組み合わせもあり、これには[5,6,8]、[9]が対応するペアとなる。部分和問題は一般にはNP困難な問題となるが、このように小さなサイズの問題は比較的短時間で求められることが知られている。
【0187】
[復号と安全性を両立させるためのパラメータ要件]
復号(その1)においては、ステップ2で実行する近似GCD計算を成立させる条件(13)を成立させるため、下記式(60)及び(61)の条件が必要である。
【0188】
【0189】
【0190】
上記式(60)及び(61)の条件を上述のシステムパラメータで表現すると、下記式(62)により表される。
【0191】
【0192】
上記式(62)の条件に、安全性確保のための上述の条件(27)(28)と、平文とランダム要素を復元するための上述の条件(55)とを加えて、パラメータの条件は下記式(63)となる。
【0193】
【0194】
[復号(その2)]
次に、実施形態の2つ目の復号処理について説明する。上述の復号(その1)では暗号文(c1,c2)に秘密鍵である解(ux(t),uy(t))を代入して得られた2つの式の近似GCD計算によってΠj=1
Dmmj(ux(t),uy(t))を求めた。更にこれを因数分解することによって、個々の因子mj(ux(t),uy(t))を求め、対応する因子mj(x,y)を復元している。しかし、この方法では復元するためにd≧(dm+1)なる条件を満たさなければならず、dを固定するとdmが制約を受け、各mj(x,y)の係数の次数を下げる必要がある。
【0195】
そこで復号(その2)では、mj(x,y)の復元にmj(ux(t),uy(t))を用いない方法について説明する。この方法によれば、上述の条件(55)の制約条件がなくなり、例えば、d=3,dm=1のようなパラメータも取ることができる。このような場合でも、公開鍵と秘密鍵は上述の方法と同じ方法で生成できる。
【0196】
以下では、このパラメータに基づいて生成した公開鍵X(x,y)と秘密鍵(ux(t),uy(t))を例示する。
(例)p=7,d=3,DX=2のとき、下記式(64)により表される。
【0197】
【0198】
また、この公開鍵の下で、平文M=(2,2,2,3,3)(7)を(6,5,6,1,3)(7)+(3,4,3,2,0)(7)と分散し、それぞれ平文多項式因子m1(x,y)、m2(x,y)に下記式(65)のように埋め込む。
【0199】
【0200】
ここで、項txの係数は平文多項式因子の定数倍の曖昧性を除去するため2に固定する必要から平文は埋め込まない。この平文多項式因子に対する暗号文(c1,c2)はランダム多項式を、下記式(66)とし、ノイズ多項式をe1=t+1、e2=3t+6とすることにより、下記式(67)のように生成できる。
【0201】
【0202】
【0203】
[復号アルゴリズム]
復号(その2)の復号アルゴリズムは以下の通りである。
【0204】
1.解の代入
解uをck(x,y)に代入して下記式(68)を計算する。
【0205】
【0206】
本例では、下記式(69)となる。
【0207】
【0208】
2.平文多項式の積M(ux(t),uy(t))(=Πi=1
Dmmi(ux(t),uy(t)))を近似GCD計算によって算出
これは、上述の式(13)の条件が成り立つときに成立するが、上述の式(13)の条件は上述の条件(62)によって保証される。本例では、M(ux(t),uy(t))は下記式(70)により表される。
【0209】
【0210】
3.ek(ux(t),uy(t))を計算してek(x,y)を復元
ステップ2で計算したM(ux(t),uy(t))から下記式(71)によりek(ux(t),uy(t))を計算し、上述の復号(その1)で述べた復元方法によりek(x,y)を復元する。
【0211】
【0212】
本例の場合はDe(= degx,ye(x,y))=0なので、下記式(72)がそれぞれe1(x,y)、e2(x,y)にあたる。
【0213】
【0214】
De>0の場合であっても、条件d≧2(de+1)条件が整えば復元可能となる。
【0215】
4.Πj=1
Dmmj・sk+Xrkを導出
ck‐ekを計算することでこれを導出する。本例では、下記式(73)及び(74)となる。
【0216】
【0217】
【0218】
5.ck‐ekをイデアル分解することでmj、skを導出
イデアル分解の具体的な方法は、上述のイデアル分解の説明の通りである。本例では、c1‐e1から、下記式(75)に分解され、c2‐e2から、下記式(76)に分解される。
【0219】
【0220】
【0221】
これらの共通部分が下記式(77)に示すm1(x,y)、m2(x,y)となるが、これは上述の式(65)において生成したものと一致している。
【0222】
【0223】
また、共通部分以外の(2t+3)x+(5t+2)y+3t+5と(2t+6)x+(4t+6)y+t+2はそれぞれs1(x,y)、s2(x,y)となり、これも上述の式(66)と一致する。尚、イデアル分解では複数分解候補が出ることがあるが、正
しい平文多項式以外は次のステップ6でほとんど棄却可能である。
【0224】
6.rkの復元
rk=(ck‐ek‐Πj=1
Dmmj・sk)/Xにより、rkを復元する。
【0225】
7.平文Mの復元
mj,sk,rk,ekの全てが復元された場合、平文多項式因子mj(x,y)から上述の式(21)によってM(x,y)を復元し、その係数から平文Mを復元する。mj,sk,rk,ekの全てが復元された場合、平文多項式因子から平文Mを復元する。
【0226】
[復号と安全性を両立させるためのパラメータ要件]
復号(その2)においてもステップ2で実行する近似GCD計算を成立させる条件(62)は必要だが、多項式を復元するための条件(55)はノイズ多項式復元のための条件d≧2(de+1)に変わる。これと安全性を確保するための条件を合わせると下記式(78)が復号と安全性を両立させるための条件となる。
【0227】
【0228】
尚、De=0の場合は条件d≧2(de+1)はなくなり、下記式(79)となる。
【0229】
【0230】
[復号に関する注意]
復号(その1)及び復号(その2)は、共通して近似GCD計算を利用しており、これが成功するための条件(62)がそれぞれパラメータの条件(63)(78)に反映されている。
【0231】
しかし、実際の復号の際には、degΠj=1
Dmmj(ux(t),uy(t))やdegsi(ux(t),uy(t))が(計算の途中で最高次の係数が0となることによって)下がることにより、条件(62)の元となる2つの不等式(60)(61)のどちらか一方が成り立たなくなり、近似GCD計算に失敗することがある。そこで、近似GCD計算の失敗確率を一定以下に設定するとともに、近似GCD計算に入力するGCDの次数をdegΠj=1
Dmmj(ux(t),uy(t))よりも小さいところから始めなくてはならない。一方で、gcd(s1(ux(t),uy(t)),s2(ux(t),uy(t)))≠1の場合、s1(ux(t),uy(t)),s2(ux(t),uy(t))が互いに素ではないので共通因子ν(t)が存在して、ν(t)Πj=1
Dmmj(ux(t),uy(t))がGCDとなることから、degΠj=1
Dmmj(ux(t),uy(t))よりも少し大きいところまでGCDの次数を設定しなくてはならない。
【0232】
[復号失敗確率]
次に、degΠj=1
Dmmj(ux(t),uy(t))やdegsi(ux(t),uy(t))の各係数の分布がそれぞれ独立の一様分布であると仮定して、条件(60)(61)が成り立たなくなる確率を求める。
【0233】
不等式(60)が成り立たなくなる確率Probmfailは、下記式(80)であり、不等式(61)が成り立たなくなる確率Probmfailは、下記式(81)である。下記式(80)及び(81)のうち大きい方が復号失敗確率となる。
【0234】
【0235】
【0236】
以下では本実施形態の幾つかのバリエーション(変形例)を述べる。
【0237】
[暗号文のバリエーション]
本実施形態における暗号文は式(44)で定義されるが、これを下記式(82)としても、同様に、実施形態の暗号化方法及び復号方法は成立し、後述の安全性検証も成り立つ。
【0238】
【0239】
[公開鍵X(x,y)の圧縮に関するバリエーション]
上述の実施形態では公開鍵である不定方程式X(x,y)の係数は定数項以外を一様ランダムに取り、一部の項(上述の実施形態ではxi(i=0,・・・,DX)の項)のみを調整した。調整には秘密鍵の情報が必要だが、調整していない項はランダムのままであるので、生成に利用したシードを公開すれば、特定の疑似乱数生成関数やハッシュ関数などを指定して生成することができる。従って、公開するのはこのシードと調整された部分の係数のみとすることにすることができ、公開鍵のサイズが圧縮される。そのようにすると上述の実施形態では、下記式(83)の部分のみ実際の係数を公開し、その他の項はシード(通常はセキュリティパラメータだけのビット長をもつ)を公開することにより、次数2であれば約半分に、次数3であれば約2/5、次数4であれば約1/3に圧縮できる。
【0240】
【0241】
このバリエーションはメモリ容量の小さいローエンド機器への活用を広げることを可能とする。
【0242】
[公開鍵X(x,y)の係数に関するバリエーション]
実施形態では公開鍵である不定方程式X(x,y)の係数は定数項以外を一様ランダムに取り、一部の項(上述の実施形態ではxi(i=0,・・・,DX)の項)のみを調整した。ここで各係数はFp[t]の元であり、この係数は全て非ゼロとは限らない。仮に非ゼロの係数があった場合は、暗号文のX(x,y)rk(x,y)において一部の項の係数が常にゼロとなる可能性があり、その場合は線形代数攻撃や係数比較攻撃において(全部の情報は洩れなくても)暗号文を構成するランダム多項式の一部の情報が洩れ、そこから平文の情報の一部が漏れる可能性がある。そこで、本バリエーションでは公開鍵X(x,y)の各項の係数τij(t)の係数を非ゼロにする方法について説明する。
【0243】
これを実現するにはまず、係数τij(t)を一様ランダムに選択する際にランダムに値を取る範囲を1からpまでとする。更に調整する係数に関しては、調整の結果、一部の係数がゼロとなった場合、秘密鍵ux(t),uy(t)を取り直すか、一様ランダムに選択した際に利用したシードを変更して再度取り直すことによって非ゼロとすることが可能となる。
【0244】
[項集合の取り方に関するバリエーション]
上述の実施形態では簡単のために項集合を最大項集合に限定していた。これは未知係数を持つ多項式によって平文を効果的に隠すためには十分ではあるが、暗号文ck(x,y)における平文項Πj=1
Dmmj(x,y)sk(x,y)と公開鍵項X(x,y)r(x,y)が同じ式の形となることが条件となるので、必要とまでは言えない。そこで、これらの式の形を指定するため、パラメータDξ,dξに変えてΔξを定めることができる(ここでξにはs,r,e,Xが入る)。このように設定することで、最大項集合よりも小さな項集合で実現できるため、公開鍵、暗号文などのサイズを抑えることができる。
【0245】
[復号(その1)においてsk,rk,ekを求めるバリエーション]
復号(その1)では復号(その2)のようにsk,rk,ekを求めていないが、平文多項式因子mjを求める方法と同じ方法でsk,ekを復元することが可能であり、rkについても復号(その2)における方法が利用できる。但し、この場合は前者の復元のため、条件(63)に加えて下記式(84)の条件が必要になる。
【0246】
【0247】
このように構成することで、復号の候補が複数あった場合、それらに対応したsk,rk,ek復元できるか否かで絞り込むことが可能となり、複数の候補が存在することによる復号の失敗を防ぐことができる。
【0248】
[平文情報をsk,rk,ekにも埋め込むバリエーション]
上述のsk,rk,ekを復元するバリエーションを利用すると、平文情報もしくは平文情報の一部をこれらに埋め込むことができる。このようにすることによって一度に暗号化できるビット長を大きくできるだけでなく、認証子としての情報を加えることで、暗号文を改竄する攻撃にも耐性を有する暗号方式を実現できる。尚、平文多項式に埋め込む場合も含めて、平文を埋め込む際、埋め込む領域を予め決めておくことも可能である。この場合は埋め込まない部分にはランダム値か、解読されても影響がない情報を埋め込むことにより、暗号文としての整合を保つことができる。更に、サイドチャネル攻撃のような実装によって生じた脆弱性によって一部の情報が漏洩する状況にも情報漏洩が起こる可能性がある部分には平文を埋めないことにより対応可能となる。
【0249】
[平文を分散しないバリエーション]
本実施形態では、平文項を積構造とするため、復号結果から暗号化で埋め込んだ平文の順番が分からなくなる。本実施形態において平文を分散する理由は、安全性を向上させるという理由とともに、平文をどの順番で定義しても正しい復号結果を得るようにするためである。その観点に立って考えると平文多項式因子の一部に順番を示す情報を入れておけば良く、例えば上述の式(65)に示す平文多項式因子の定数項にその情報を入れると下記式(85)のようになる。
【0250】
【0251】
上記(85)では、定数項がそれぞれ0,1となっており、この順番で平文となっていることを意味している。本例においてはtxの項が定数倍の曖昧性を解決するために2に固定していることと、本例の平文の順番とを考慮すると、65613432(7)となり、暗号化できる平文のサイズが大きくなる。
【0252】
尚、順番を表す数値は0からp-1の範囲であれば0,1,2,・・・と付与しなくても特定の順番でランダムに並べることができる。例えばp=7の場合は3,5と振ることもできる。このようにすることにより、特定の係数が固定されるのを避け、暗号解析に有利となる情報を与えることなく、安全性の高い暗号が構成できる。
【0253】
[平文多項式因子を用いないバリエーション]
本実施形態では平文を平文多項式因子に分散して埋め込んだが、復号(その2)を前提とすると平文多項式因子を前提とせず、平文多項式をm(x,y)として下記式(86)としても同様の構成ができる。
【0254】
【0255】
ここで、c1(ux(t),uy(t))、c2(ux(t),uy(t))の近似GCD計算を行うため、条件(60)が必要になるため、m(x,y)は実質上2次以上となる。このため、復号(その1)では復号が困難となるが、復号(その2)ではイデアル分解を利用するため分解が可能となる。このように構成することにより、復号におけるイデアル分解の因子が少なくなるので、処理を高速化することが可能となる。
【0256】
[近似GCD計算における近似GCDの次数を変化させるバリエーション]
上述の[復号に関する注意]において述べたように近似GCD計算における入力となる近似GCDの次数dGはほとんどの場合はdG=Dm(d+dm)であるが、それよりも小さい場合や逆に大きい場合が存在する。本バリエーションではこれを考慮した実施形態を示す。これを実施するには復号(その1)、復号(その2)のいずれにおいても、近似GCD計算のステップにおいて、Dm(d+dm)よりも小さい値から次数dGを設定して実行し、平文が復元されない場合は当該dGを徐々に上げて、最終的にDm(d+dm)を超える値まで上げて実行する。このようにすることで、dG=Dm(d+dm)として実行した場合に復号失敗となっていた暗号文が復号可能となる。
【0257】
[変数に関するバリエーション]
本実施形態では一貫してFp[t]上の2変数多項式を扱ってきたが、これを一般のn変数としても本実施形態と同様に暗号化アルゴリズム、復号アルゴリズム、鍵生成アルゴリズムが成り立つ。変数の数が3つより多くなっても不定方程式X(x1,・・・,xn)が1つであれば不定方程式であることに変わりはなく、その求解問題は計算困難である。それどころか、変数が増えると多くの場合より計算困難な問題となり、安全性が強化される。そのため鍵サイズが削減可能となるだけでなく、変数が多いため、埋め込める平文のサイズは増える。一方で、復元する係数が増えるためシステムパラメータはds=n(dm+1)に変更しなければならない。
【0258】
[ノイズ多項式の係数eij(t)の次数を項毎に変えるバリエーション]
本実施形態ではDe=0に限定して単純化して説明していたが、De>0とすると、復号(その2)においてはe(x,y)を復元するには、e(ux(t),uy(t))から上述の式(54)に基づく線型連立方程式を立てて、これを解くアルゴリズムを適用することになる。この際に一意解を導出するためには方程式の数が変数の数以上であることが必要である。式の数は一変数多項式e(ux(t),uy(t))の次数と一致する。一方で、e(x,y)の高次の項(次数の高い項)はDe=3であればx3,x2y,xy2,y3となるなど、低次の項よりも数が多い。したがって、e(x,y)における係数の次数を高次の項の係数の次数を低くし、低次の項の係数の次数を高くすることで、変数の数を抑えながら式の数を増やすことができる。また、このように構成することで、Deを一律に決めた場合よりも復号条件(61)を満たすように構成しやすくなるという利点もある。
【0259】
[ノイズ多項式の係数e(x,y)に積構造を導入するバリエーション]
本実施形態では、平文多項式には積構造を持たせていたが、ノイズ多項式には積構造を持たせていなかった。これはDe=0であったことにも起因している。De>0の場合は、上述の[ノイズ多項式の係数eij(t)の次数を項毎に変えるバリエーション]でも示したようにe(x,y)を復元するためにe(ux(t),uy(t))から線型連立方程式を立てて、これを解く必要があった。ここで、積構造を導入するとノイズ多項式は複数のノイズ多項式因子の積となり、暗号文は下記式(87)となる。
【0260】
【0261】
上記式(87)ではノイズ多項式因子ek,j(x,y)は1次式だと仮定している。復号については復号(その2)において、ノイズ多項式を復元する際に、上述の[平文多項式因子の復元]で示したように、e(ux(t),uy(t))を因数分解して因子毎に連立方程式が組めば良い。これにより、より高い次数の1変数多項式を係数に持つノイズ多項式が構成でき、安全性の向上につながる。
【0262】
[ノイズ多項式と平文多項式の役割を変えるバリエーション]
本実施形態では平文を平文多項式因子に分散して埋め込んでいたが、上述の[ノイズ多項式の係数e(x,y)に積構造を導入するバリエーション]を踏まえると、平文多項式とノイズ多項式の役割を変更することができる。即ち、暗号文は下記式(88)となる。
【0263】
【0264】
このようにすることで、平文MはM1とM2に分割し、それぞれm1(x,y)=Πj=1
Dmmk,1(x,y)、m2(x,y)=Πj=1
Dmmk,2(x,y)に埋め込むことができる。
【0265】
上述のバリエーションの一部又は全部を併用して、実施形態に適用してもよい。例えば、[ノイズ多項式の係数e(x,y)に積構造を導入するバリエーション]と、[ノイズ多項式と平文多項式の役割を変えるバリエーション]とを組み合わせてもよい。すなわち、ノイズ多項式と平文多項式との役割を交換し、かつノイズ多項式に積構造を導入してもよい。
【0266】
[具体的な構成]
次に本実施形態の公開鍵暗号における暗号化装置、復号装置及び鍵生成装置の具体的な構成とその動作方法を示す。
【0267】
まず、本実施形態の暗号化装置の構成と処理の流れを
図5に示すフローチャートに沿って
図4に示す全体構成図を参照しながら示す。
【0268】
実施形態の暗号化装置10は、平文取得部1、公開鍵取得部2、平文埋め込み部3、記憶部4、暗号化部5、多項式生成部6、ランダム値生成部7、多項式演算部8及び暗号文出力部9を備える。
【0269】
まず、平文取得部1が、平文mを取得する(ステップS1)。平文取得部1は、例えば他のアプリケーション又は他の装置等から取得された暗号化対象データを、平文mとして取得する。平文取得部1は、平文mを平文埋め込み部3に入力する。
【0270】
次に、平文埋め込み部3が、記憶部4からシステムパラメータp,Dm,dmを取得する(ステップS2)。
【0271】
次に、公開鍵取得部2が、公開鍵として、2変数不定方程式X(x,y)を取得する(ステップS3)。公開鍵取得部2は、例えば後述の鍵生成装置等の他の装置から公開鍵を取得する。
【0272】
次に、平文埋め込み部3が、平文取得部1から入力された平文mを|p|ビット(|p|はpのビット長)の3(dm+1)個のサブブロックに分割する。次に、平文埋め込み部3が、各サブブロックをDm個の平文断片に分割する(ステップS4)。
【0273】
なお、分割方法は、Dm個の平文断片が揃ったときに復元できる方法であれば何でも良いが、一例として上述の和を利用した方法が挙げられる。
【0274】
平文埋め込み部3は、平文断片を順次Dm個の平文多項式因子に埋め込む(ステップS5)。本実施形態では平文多項式因子は1次式としているため、mj(x,y)=mj,x(t)x+mj,y(t)y+mj,1(t)(j=1,・・・,Dm)であり、各係数mj,x(t)、mj,y(t)、mj,1(t)の次数がdmであり、これら多項式の係数はFpの元である。平文埋め込み部3は、平文断片を、この1次式の平文多項式因子にそれぞれ埋め込み、平文多項式因子m1(x,y),・・・,mDm(x,y)を生成する。
【0275】
尚、このように本実施形態の暗号方式のブロックサイズは、3(|p|)(dm+1)であり、これより大きな平文が入力された際には、まずはこのブロックサイズに分割した上で、ブロック毎に暗号化する。
【0276】
平文埋め込み部3は、生成されたDm個の平文多項式因子を暗号化部5に入力する。
【0277】
一方、暗号化部5は、公開鍵取得部2から公開鍵を受け付けると、記憶部4から当該公開鍵に適合するシステムパラメータp,Ds,Dr,De,ds,dr,deを取得する。
【0278】
また、暗号化部5はシステムパラメータp,Ds,dsを多項式生成部6に入力し、ここから形成される最大項集合(以下では単に項集合)Γsに従ってds次の多項式を係数に持つ2つのランダムな多項式s1(x,y)、s2(x,y)の生成を多項式生成部6に指示する。多項式生成部6は、ランダム値生成部7に指示して係数sij(t)の係数となるような0からp-1までの整数を必要な数(この場合は2ds#Γs個)だけランダム値生成部7に生成させ、これらの整数に基づいてs1(x,y)、s2(x,y)を生成する(ステップS6)。なお、#Γsは集合Γsの要素数を示す。
【0279】
次に、暗号化部5は、引き続きシステムパラメータp,Dr,drを多項式生成部6に入力し、ランダム多項式s1(x,y)、s2(x,y)の生成方法と同じ方法で、ランダム多項式r1(x,y)、r2(x,y)を生成する(ステップS7)。
【0280】
次に、暗号化部5は、引き続きシステムパラメータp,De,deを多項式生成部6に入力し、ランダム多項式s1(x,y)、s2(x,y)の生成方法と同じ方法で、ランダム多項式e1(x,y)、e2(x,y)を生成する(ステップS8)。
【0281】
最後に、暗号化部5は、多項式sk(x,y)、rk(x,y)、ek(x,y)(k=1,2)と、公開鍵X(x,y)、及び、Dm個の平文多項式因子m1(x,y),・・・,mDm(x,y)から暗号文ck(x,y)(k=1,2)を、下記式(89)に従って生成する(ステップS9)。ここで、Dm個の平文多項式因子m1(x,y),・・・,mDm(x,y)の乗算は、多項式演算部8によって実行される。暗号化部5は、暗号文ck(x,y)(k=1,2)を暗号文出力部9に入力する。
【0282】
【0283】
次に、暗号文出力部9は、暗号化装置10の出力として、暗号文ck(x,y)(k=1,2)を(必要ならば予め定められたフォーマットに合わせて変形してから)出力する(ステップS10)。
【0284】
次に本実施形態の復号(その1)を実行する復号装置の構成と処理の流れを
図7に示すフローチャートに沿って
図6に示す全体構成図を参照しながら説明する。
【0285】
実施形態の復号装置20は、暗号文取得部21、鍵取得部22、復号部23、零点代入部24、近似GCD計算部25、因数分解部26、記憶部27、組合せ計算部28、平文多項式因子復元部29及び平文出力部30を備える。
【0286】
まず、暗号文取得部21が、暗号文ck(x,y)(k=1,2)を取得する(ステップS21)。暗号文取得部21は、例えばネットワークを介して他の装置から暗号文ck(x,y)を取得する。
【0287】
次に、鍵取得部22が、公開鍵(X(x,y))と、秘密鍵(零点u:(ux(t),uy(t))とを取得する(ステップS22)。鍵取得部22は、例えばネットワークを介して他の装置等から公開鍵(X(x,y))を取得し、復号装置の記憶部27等から秘密鍵(零点u:(ux(t),uy(t))を取得する。
【0288】
次に、復号部23が、暗号文取得部21から暗号文ck(x,y)(k=1,2)を受け付け、鍵取得部22から公開鍵(X(x,y))と、秘密鍵(零点u:(ux(t),uy(t))とを受け付けると、復号処理が開始される。
【0289】
復号部23はまず、零点代入部24に暗号文ck(x,y)(k=1,2)と零点uとを入力する。零点代入部24は、零点uをck(x,y)に代入し、hk(t)(k=1,2)を計算する(ステップS23)。零点代入部24は、hk(t)を復号部23に入力する。
【0290】
次に、復号部23は、零点代入部24からhk(t)を受け付けると、hk(t)(k=1,2)と、Πj=1
Dmmj(ux(t),uy(t))の次数dMとを近似GCD計算部25に入力する。近似GCD計算部25は、復号部23からhk(t)(k=1,2)と、Πj=1
Dmmj(ux(t),uy(t))の次数dMとを受け付けると、hk(t)(k=1,2)のdM次の近似GCDを計算し、近似GCD(M(ux(t),uy(t)))を復号部23に入力する(ステップS24)。ここで、dM=Dm(d+dm)とする。
【0291】
次に、復号部23は、近似GCD計算部25から近似GCD(M(ux(t),uy(t)))を受け付けると、当該近似GCDを因数分解部26に入力する。因数分解部26は、復号部23から近似GCD(M(ux(t),uy(t)))を受け付けると、当該近似GCDの因数分解を実行し(ステップS25)、因数分解の結果を、因子の順序付けられた因子配列として復号部23に入力する。
【0292】
次に、復号部23は、記憶部27から、システムパラメータd,dmを抽出し、因数分解部26から入力された因子配列から、それぞれの因子の次数を取り出して対応する次数配列を生成する。更に、復号部23は、次数配列と平文多項式因子の次数に対応するN(=dm+d)を組合せ計算部28に入力する。組合せ計算部28は、次数が丁度Nとなるような因子の組み合わせ(因子系列)を全て抽出し(ステップS26)、当該因子系列のリストを復号部23に入力する。
【0293】
復号部23は、組合せ計算部28から因子系列のリストを受け付けると、当該リストから因子系列を抽出して、零点u及びシステムパラメータd,dmとともに平文多項式因子復元部29に入力する。平文多項式因子復元部29は、復号部23から入力された因子系列と零点uとシステムパラメータdmとから上述の方法で平文多項式因子m1(x,y),・・・,mDm(x,y)を復元し(ステップS27)、当該平文多項式因子を復号部23に入力する。
【0294】
次に、平文多項式因子復元部29は、平文多項式因子を全て復元できたか否かを判定する(ステップS28)。
【0295】
平文多項式因子を全て復元できた場合(ステップS28,OK)、復号部23は、平文多項式因子復元部29から平文多項式因子m1(x,y),・・・,mDm(x,y)を受け付けると、当該平文多項式因子の係数から分割された平文を抽出して、平文mを復元する(ステップS28)。次に、平文出力部30が、mを復号結果として出力し(ステップS32)、復号処理を終了する。
【0296】
一方で、平文多項式因子を全て復元できなかった場合(ステップS28,NG)、復号部23は、次の平文多項式因子候補があるか否かを判定する(ステップS30)。
【0297】
次の平文多項式因子候補がある場合(ステップS30,Yes)、復号部23は、次の平文多項式因子候補を抽出し(ステップS31)、ステップS27の処理に戻る。具体的には、平文多項式因子復元部29が、平文多項式因子を全て復元できなかった場合に復号部23にエラーを送信する。復号部23は、平文多項式因子復元部29からエラーを受信すると、因子系列のリストを参照して次の候補となる因子系列を零点u及びシステムパラメータd,dmとともに平文多項式因子復元部29に送付する。
【0298】
尚、次の平文多項式因子候補がない場合(ステップS30,No)、復号部23が復号エラーを平文出力部30に通知し、平文出力部30が、復号失敗を示すエラーと空の復号結果とを出力し(ステップS33)、復号処理を終了する。
【0299】
復号失敗の原因としては通信路上で暗号文が壊れてしまった、或いは改竄されてしまったことが考えられる。もちろん上述の[復号失敗確率]で示したような不可避な場合も考えられるが、復号失敗確率を十分小さく(例えば2-64以下)することによって、例外的な可能性までに下げることが可能となる。
【0300】
次に本実施形態の復号(その2)を実現する復号装置の構成と処理の流れを
図9に示すフローチャートに沿って
図8に示す全体構成図を参照しながら説明する。
【0301】
実施形態の復号装置20-2は、暗号文取得部21、鍵取得部22、復号部23、零点代入部24、近似GCD計算部25、記憶部27、平文出力部30、剰余計算部31、ノイズ多項式復元部32、多項式減算部33及びイデアル分解部34を備える。
【0302】
ステップS41~S44の処理の説明は、復号(その1)のステップS21~S24(
図7参照)と同じなので省略する。
【0303】
復号部23は、近似GCD計算部25から近似GCDa(t)を受け付けると、剰余計算部31を用いてhk(t) mod a(t)を計算し、ek(ux(t),uy(t))を得る(ステップS45)。復号部23は、ek(ux(t),uy(t))を零点u及びシステムパラメータd,deとともにノイズ多項式復元部32に入力する。
【0304】
次に、ノイズ多項式復元部32は、因子系列と零点uとシステムパラメータdeから上述の方法でノイズ多項式e1(x,y)、e2(x,y)を復元し(ステップS46)、e1(x,y)、e2(x,y)を復号部23に入力する。
【0305】
次に、復号部23は、多項式減算部33を用いて、ek(x,y)からck(x,y)-ek(x,y)を計算し、ck(x,y)-ek(x,y)をイデアル分解部34に入力する。イデアル分解部34は、ck(x,y)-ek(x,y)をそれぞれイデアル分解して、m1(x,y),・・・,mDm(x,y),s1(x,y)、及び、m1(x,y),・・・,mDm(x,y),s2(x,y)を導出し(ステップS46)、復号部23に入力する。
【0306】
復号部23は、これらの共通部分として平文多項式因子m1(x,y),・・・,mDm(x,y)を特定し、その他の因子としてランダム多項式の組s1(x,y)、s2(x,y)を特定する。尚、イデアル分解部34は、ここで複数の候補が得られた場合は、平文多項式因子の組とランダム多項式の組とを一組とする因子系列を出力する。
【0307】
復号部23は、平文多項式因子の組とランダム多項式の組とを一組とする因子系列が計算されると、ステップS46の処理により計算されたek(x,y)(k=1,2)を利用して下記式(90)を計算し、下記式(90)をX(x,y)で割ることによってrk(x,y)(k=1,2)を復元する(ステップS48)。
【0308】
【0309】
次に、復号部23は、rk(x,y)(k=1,2)を全て復元できたか否かを判定する(ステップS49)。具体的には、X(x,y)で割った余りが0でなかった場合、正しくrk(x,y)(k=1,2)を復元できなかったことを意味する。
【0310】
rk(x,y)(k=1,2)を全て復元できなかった場合(ステップS49,NG)、復号部23は、次候補の因子系列(平文多項式因子の組m1(x,y),・・・,mDm(x,y)と、ランダム多項式の組sk(x,y)(k=1,2))があるか否かを判定する(ステップS50)。
【0311】
次候補の因子系列がある場合(ステップS50,Yes)、復号部23は、次候補の因子系列を抽出し(ステップS51)、処理はステップS47に戻る。
【0312】
次候補の因子系列がない場合(ステップS50,No)、復号部23が復号エラーを平文出力部30に通知し、平文出力部30が、復号失敗を示すエラーと空の復号結果とを出力し(ステップS53)、復号処理を終了する。
【0313】
rk(x,y)(k=1,2)を全て復元できた場合(ステップS49,OK)、復号部23は、平文mを復元して、平文出力部30が、mを復号結果として出力し(ステップS52)、復号処理を終了する。
【0314】
次に本実施形態の鍵生成装置の構成と処理の流れを
図11に示すフローチャートに沿って
図10に示す全体構成図を参照しながら示す。
【0315】
実施形態の鍵生成装置40は、システムパラメータ取得部41、制御部42、多項式生成部43、ランダム値生成部44、不定方程式生成部45、多項式演算部46及び鍵出力部47を備える。
【0316】
まず、システムパラメータ取得部41が、システムパラメータp,d,Dx,dxを取得する(ステップS61)。システムパラメータp,d,Dx,dxは、例えばユーザからの入力を受け付けることによって取得される。また例えば、システムパラメータp,d,Dx,dxは、システムパラメータp,d,Dx,dxを含む設定データ等を読み込むことにより取得される。
【0317】
システムパラメータ取得部41は、システムパラメータを制御部42に入力する。制御部42では、システムパラメータ取得部41から入力されたシステムパラメータに基づいて他の処理部と連携して以下のような処理を行う。
【0318】
まず、制御部42は、システムパラメータ取得部41から入力されたシステムパラメータのうちp,dを多項式生成部43に入力し、Fp[t]に含まれる2つの多項式ux(t),uy(t)の生成を指示する。次に、多項式生成部43が、ランダム値生成部44に2(d+1)個の0からp-1までの整数の生成を指示する。ランダム値生成部44は、疑似乱数生成器などを使って2(d+1)個の0からp-1までの乱数を生成し、多項式生成部43に入力する。多項式生成部43は、ランダム値生成部44から入力された2(d+1)個の乱数を係数として持つ多項式ux(t),uy(t)を生成し(ステップS62)、当該多項式ux(t),uy(t)を制御部42に入力する。
【0319】
制御部42は、多項式生成部43から受け付けた多項式ux(t),uy(t)を秘密鍵として保持(格納)する。
【0320】
また、制御部42は、公開鍵(下記式(91)により表される不定方程式X(x,y))の生成を実施する。
【0321】
【0322】
制御部42は、公開鍵を生成するため、X(x,y)の定数項以外の係数τij(t)をFp[t]から抽出する。具体的には、制御部42は、上述の多項式ux(t),uy(t)を生成したときと同様に、多項式生成部43にパラメータp,dを入力し、Fp[t]に含まれる#Γx-1個の多項式τij(t)の生成を指示する。多項式生成部43は、ランダム値生成部44を利用して多項式τij(t)を生成し、#Γx-1個の多項式τij(t)を生成する。多項式生成部43は、#Γx-1個の多項式τij(t)を制御部42に入力する。
【0323】
制御部42は、多項式生成部43により生成された多項式τij(t)、システムパラメータp,d,Γx,dx及び秘密鍵ux(t),uy(t)を不定方程式生成部45に入力する。
【0324】
不定方程式生成部45は、多項式演算部46を利用しながら、まず定数項のない不定
方程式X′(x,y)を生成する(ステップS63)。次に、不定方程式生成部45は、秘密鍵(多項式ux(t),uy(t))をX′(x,y)の変数x,yにそれぞれ代入することで、定数項τ00(t)=-X′(ux(t),uy(t))を計算する(ステップS64)。
【0325】
次に、不定方程式生成部45は、定数項τ00(t)の次数を削減する処理を行う(ステップS65)。
【0326】
この次数削減の処理に関しては、その一例を
図12に従って詳しく説明する。この次数削減処理は定数項τ
00(t)と秘密鍵u
x(t),u
y(t)を入力とし、同じ零点を持つ不定方程式の中で次数がd以下の定数項を持つ別の不定方程式に変換する処理である。
【0327】
基本的な原理は秘密鍵(零点)を利用して、同じ零点を持つ定数項の次数が小さな不定方程式に置き換えていくことにあり、理論的な背景は上述の通りである。
【0328】
簡単のため、以下の説明ではX(x,y)にはxi(i=1,・・・,degX)の項が全て含まれているとする。まず、不定方程式生成部45は、i=degX(x,y)と設定して(ステップS71)、τ00(t) mod ux(t)iを計算し、τ00(t)を置き換えるとともに、τi0′(t)=τ00(t)/ux(t)iを計算し(ステップS72)、X′(x,y)をX′(x,y)+τi0′(t)xiに置き換える(ステップS73)。この操作を、iを1つずつデクリメントしながら(ステップS74)、1になるまで続ける(ステップS75)。
【0329】
さて、
図11に戻り、
図12の処理をX′(x,y)について行うと以下のようになる。τ
00(t)がτ
00(t)=-X′(u
x(t),u
y(t))と設定されており、X′(x,y)の各係数の次数d
xがd-1であるとすると、τ
00(t)の次数はd(degX(x,y)+1)-1を超えず、ほぼd(degX(x,y)+1)-1となることが期待される。一方で、
図12の処理によりτ
00(t)の次数はddegX(x,y)-1未満となり、当初のτ
00(t)と比較して概ねd次だけ削減される。また、τ
i0′(t)はτ
00(t)をu
x(t)
degX(x,y)で割った商であるため次数はd-1以下となり、τ
i0(t)の次数を超えない。このことを踏まえると、
図12の処理により、不定方程式X′(x,y)は定数項以外の係数の次数を変更せずに定数項の次数をdだけ削減できたことが分かる。この操作をiが0になるまで続けることで、最終的にX′(x,y)の定数項以外の係数の次数を変更せずに定数項のみd-1以下とすることができる。
【0330】
次に、不定方程式生成部45は、X(x,y)=X′(x,y)+τ00(t)によって不定方程式を生成する(ステップS66)。
【0331】
ここで生成されたX(x,y)が当初の不定方程式X′(x,y)+τ00(t)と同じ零点(ux(t),uy(t))を持つことを示す。そのためには各ステップで得られる不定方程式が零点(ux(t),uy(t))を持つことを示せばよい。各ステップで得られる不定方程式はX′(x,y)+τi0′(t)xi+(τ00(t) mod ux(t)i)である。ここに零点(ux(t),uy(t))を代入すると、下記式(92)となり、零点となっていることが分かる。
【0332】
【0333】
このように生成された不定方程式X(x,y)は不定方程式生成部45から制御部42に出力される。制御部42は以上の一連の処理が完了したことを確認し、生成された公開鍵(X(x,y))及び秘密鍵(ux(t),uy(t))を鍵出力部47に入力する。鍵出力部47は、制御部42から入力された公開鍵(X(x,y)及び秘密鍵(ux(t),uy(t))を鍵生成装置40の外部に出力する(ステップS48)。
【0334】
[上述のバリエーションに関する具体的な構成]
次に、上述のバリエーション(変形例)に関する具体的な構成について説明する。
【0335】
暗号文のバリエーションは、暗号化装置10の暗号化部5において暗号文を作成するステップにおいて上述の式(82)で計算し、復号装置20ではこれを考慮して自明な変形を行えば実現可能となる。
【0336】
公開鍵圧縮に関するバリエーションは、鍵生成装置40においてランダム値生成部44への入力に乱数シードを追加するか、ランダム値生成部44からの出力にランダム値生成部44で生成に利用した乱数シードを追加し、最終的に鍵出力部47から公開鍵X(x,y)に変えて調整された係数と当該乱数シードとを出力することで実現ができる。尚、暗号化装置10及び復号装置20においては、公開鍵が入力された際に、当該乱数シードを使って調整されていない係数を復元するとともに、公開鍵に含まれる調整された係数を加えることによって、本来の公開鍵X(x,y)を復元できる。
【0337】
公開鍵係数に関するバリエーションは、鍵生成装置40におけるランダム値生成部44において公開鍵X(x,y)の係数τij(t)の係数を生成する際に乱数の範囲を1からp-1とする。係数の調整のステップ(不定方程式の定数項τ00(t)の次数を零点(ux(t),uy(t))により削減するステップ)においては、調整された係数τi0(t)(i=0,・・・,DX)に非ゼロの係数を含む場合、再度不定方程式X(x,y)の定数項以外の係数をランダムに生成する部分からやり直すことによって実現される。
【0338】
項集合の取り方に関するバリエーションは、鍵生成装置40、暗号化装置10のそれぞれにおいて、システムパラメータDξ、dξを指定された項集合Γξに変更し、Γξに基づいて公開鍵やランダム多項式、ノイズ多項式を生成することにより実現される。ここで、ξはX,s,r,eである。
【0339】
復号(その1)においてs
k,r
k,e
kを求めるバリエーションは、
図13に示すフローチャートのように実現する。即ち、
図6に示した復号装置20における
図7に示したフローチャートの処理において、復号部23は
図7の因子系列を全て抽出するステップ(ステップS26)の後に、因子系列を1つ抽出して、零点u及びシステムパラメータd,d
mとともに平文多項式因子復元部29に入力する。
【0340】
具体的には、平文多項式因子復元部29は、復号部23から入力された因子系列と零点uとシステムパラメータdmとから上述の方法で平文多項式因子m1(x,y),・・・,mDm(x,y)を復元する(ステップS81)。
【0341】
次に、平文多項式因子復元部29は、平文多項式因子を全て復元できたか否かを判定する(ステップS82)。
【0342】
ここで、復元できない平文多項式因子があった場合(ステップS82,No)、平文多項式因子復元部29は、復号部23にエラーを送信し、復号部23は、次候補の因子系列があるか否かを判定する(ステップS83)。次候補の因子系列がない場合(ステップS83,No)、復号部23は、復号エラーを平文出力部30に通知し、平文出力部30は復号エラーと空の復号結果を出力して(ステップS85)、処理は終了する。
【0343】
次候補の因子系列がある場合(ステップS83,Yes)、復号部23は、因子系列のリストを参照して次候補の因子系列を抽出し(ステップS84)、次候補の因子系列を零点u及びシステムパラメータd,dmとともに平文多項式因子復元部29に入力し、処理はステップS81に戻る。
【0344】
一方、復元できない平文多項式因子がなかった場合(ステップS82,Yes)、平文多項式因子復元部29は、復元された平文多項式因子を復号部23に入力する。復号部23は、hk(t)/M(ux(t),uy(t))(k=1,2)からsk(ux(t),uy(t))を計算し、これを零点u及びシステムパラメータd,dsとともに平文多項式因子復元部29に入力する。平文多項式因子復元部29は、sk(x,y)を復元し(ステップS86)、sk(x,y)を復号部23に入力する。尚、復元できなかった場合(ステップS87,No)、平文多項式因子復元部29は、復号部23にエラーを送信し、処理は上述のステップS83に進む。
【0345】
ランダム多項式sk(x,y)が復元できた場合(ステップS87,Yes)、復号部23は、hk(t) mod M(ux(t),uy(t))(k=1,2)からek(ux(t),uy(t))を計算し、これを零点u及びシステムパラメータd,deとともに平文多項式因子復元部29に入力する。平文多項式因子復元部29は、ek(x,y)を復元し(ステップS88)、ek(x,y)を復号部23に入力する。尚、復元できなかった場合(ステップS89,No)、平文多項式因子復元部29は、復号部23にエラーを送信し、処理は上述のステップS83に進む。
【0346】
ノイズ多項式ek(x,y)が復元できた場合(ステップS89,Yes)、復号部23は、下記式(93)からrk(x,y)を復元し(ステップS91)、この下記式(93)による除算における剰余(余り)が0であることをもってrk(x,y)の復元を確認する。
【0347】
【0348】
尚、復元できなかった場合(ステップS91,No)、平文多項式因子復元部29は、復号部23にエラーを送信し、処理は上述のステップS83に進む。
【0349】
以上により、m
j,s
k,e
k,r
kが全て復元できた場合(ステップS91,Yes)、ステップS92に進む。ステップS92及びS93の説明は、上述のステップS29及びS32(
図7参照)と同じなので省略する。
【0350】
平文情報をsk,rk,ekにも埋め込むバリエーションに関しては、暗号部5においてs1(x,y),s2(x,y),e1(x,y),e2(x,y),r1(x,y),r2(x,y)をランダムに生成するのではなく、平文(の一部)を平文の多項式への埋め込みと同様の方法で埋め込む。復号装置20においては、復号(その2)に関しては当該平文(の一部)が上述の通りに復元され、復号(その1)に関しては当該平文(の一部)が上述のバリエーションで説明した通りの方法で復元される。そして、平文出力部30が、平文多項式因子から出力された平文mとともに、当該平文(の一部)を出力する。
【0351】
尚、平文多項式mj(x,y)も含めて平文をこれらの一部に埋め込むときには、復号したのち、復号部23において、平文情報を含む全ての項や因子が復号されたのち、平文が埋め込まれた部分の情報を抽出して、抽出された情報のみが平文出力部30に出力される。平文を分散しないバリエーションに関しては、暗号化装置10における平文埋め込み部3において、平文多項式因子に順序情報を埋め込むように変更するとともに、復号装置20では平文多項式因子を復元した際に、順番情報を参照して、その指示する順番に並べることによって実現できる。
【0352】
平文多項式因子を用いないバリエーションに関しては、暗号化装置10における平文埋め込み部3において、平文を平文多項式に単純に埋め込むだけで良く、復号(その2)を実現する
図8に示す復号装置20-2においても出力された平文多項式から係数情報を引き出すだけで平文が復元できる。
【0353】
近似GCD計算における近似GCDの次数を変化させるバリエーションに関しては、復号(その2)を例としてそのフローチャートを
図14に示して説明する。ここでは近似GCDの次数をd
Gとして、d
Gを、期待値であるd
G=D
m(d+d
m)よりもL
1小さいところからL
2大きいところまでに設定して近似GCDを求める例を示している。
【0354】
ステップS101及びS102の説明は、復号(その2)のステップS41及びS42(
図9参照)と同じなので省略する。
【0355】
零点代入部24は、復号(その2)における零点(ux(t),uy(t))を暗号文ck(x,y)に代入してhk(t)を計算したのち(ステップS103)、dGをその最小値であるDm(d+dm)-L1に設定する(ステップS104)。
【0356】
近似GCD計算部25が、このdGで近似GCD計算を行う(ステップS105)。
【0357】
近似GCDが導出できなかった場合(ステップS106,No)、零点代入部24は、dGを1つ増加させ(ステップS107)、dGが、上限値Dm(d+dm)+L2以下であるか否かをチェックする(ステップS108)。上限値Dm(d+dm)+L2以下である場合(ステップS108,Yes)、近似GCD計算部25が、再び近似GCD計算を行う(ステップS105)。
【0358】
上限値Dm(d+dm)+L2を超える場合(ステップS108,No)、平文出力部30が、復号失敗を示すエラーと空の復号結果とを出力し(ステップS109)、復号処理を終了する。
【0359】
近似GCDが導出できたら(ステップS106,Yes)、復号(その2)と同様の方法で復号を継続するが(ステップS110~S117)、ステップS115が、上述の
図9に示す復号(その2)の実施形態とは異なる。
【0360】
ステップS115で次候補の因子系列がないと判定された場合、上述の
図9に示す復号(その2)の実施形態のようにエラーを出力するのではなく(ステップS53)、d
Gを1つ増やして処理を継続する(ステップS107)。これは誤ったd
Gでも復号が進み間違った平文多項式因子を導出することがあるからである。このように近似GCD計算における近似GCDの次数を変化させることにより、復号失敗の確率を極限まで減らすことができる。
【0361】
変数に関するバリエーションについて本実施形態を変更する部分は暗号化アルゴリズム、復号アルゴリズム、鍵生成アルゴリズムのうちで変数の数に関する部分のみとなる。即ち、変数をx,yとしている部分を変数x1,・・・,xlに変更し、それに伴ってこれに代入する秘密鍵を(ux1(t),・・・,uxl(t))とするなど自明な変更を施すだけで実現可能となる。
【0362】
ノイズ多項式の係数eij(t)の次数を項毎に変えるバリエーションについて、本実施形態を変更する部分は以下の通りである。まず、暗号化において、暗号化部5がノイズ多項式e1(x,y),e2(x,y)を生成するときにシステムパラメータp,De,deを多項式生成部6に入力するところを、次数毎にp,de,De,de,De-1,・・・,de,1,de,0のように次数を指定して多項式生成部6に指示を出す。ここでde,iはek(x,y)のi次の係数の次数を表している。
【0363】
復号においては復号(その2)において、ランダム多項式sk(x,y)が復元できた場合、復号部23はhk(t) mod M(ux(t),uy(t))(k=1,2)からek(ux(t),uy(t))を計算し、これを零点u及びシステムパラメータd,de,De,de,De-1,・・・,de,1,de,0とともに平文多項式因子復元部29に入力する。平文多項式因子復元部29ではこれを復元し、ek(x,y)を復号部23に入力する。尚、平文多項式因子復元部29は、ek(x,y)を復元できなかった場合はエラーを復号部23に入力する。
【0364】
ノイズ多項式の係数e(x,y)に積構造を導入するバリエーションについて本実施形態を変更する部分は暗号化アルゴリズムと復号アルゴリズムである。暗号化アルゴリズムは暗号化部5においてシステムパラメータp,de,Deを多項式生成部6に入力したのち、de次の多項式を係数に持つ2つのDe次のランダムな多項式e1(x,y),e2(x,y)を生成するところを、de次の多項式を係数に持つDe個の多項式e1,0(x,y),e1,1(x,y),・・・,e1,De(x,y)を生成し、これらを掛け合わせてe1(x,y)を生成し、更に同様にde次の多項式を係数に持つDe個の多項式e2,0(x,y),e2,1(x,y),・・・,e2,De(x,y)を生成し、これらを掛け合わせてe2(x,y)を生成するアルゴリズムに変更すればよい。
【0365】
復号については復号(その2)において、ランダム多項式s
k(x,y)が復元できた場合、復号部23ではh
k(t) mod M(u
x(t),u
y(t))(k=1,2)からe
k(u
x(t),u
y(t))を計算し、ノイズ多項式e
k(x,y)を復元するが、この時の処理について
図15に記載のフローチャートと
図6のブロック図を用いて説明する。
【0366】
因数分解部26は、ek(ux(t),uy(t))を因数分解し(ステップS121)、因数分解の結果を因子の順序付けられた配列により復号部23に入力する。復号部23は、記憶部27からd,deを抽出し、因数分解部26から入力された因子配列からそれぞれの因子の次数を取り出して対応する次数配列を生成する。
【0367】
更に復号部23は、次数配列と、ノイズ多項式因子の次数に対応するN(=de+d)とを組合せ計算部28に入力し、組合せ計算部28は次数が丁度Nとなるような因子の組み合わせ(因子系列)を全て抽出し(ステップS122)、因子系列のリストを復号部23に入力する。
【0368】
復号部23は、リストから因子系列を抽出して、零点u及びシステムパラメータd,deとともに平文多項式因子復元部29に入力する。平文多項式因子復元部29は、入力された因子系列と零点uとシステムパラメータdeとから、本実施形態に示した方法でノイズ多項式因子ek,1(x,y),・・・,ek,De(x,y)を復元する(ステップS123)。
【0369】
ノイズ多項式因子を全て復元できた場合(ステップS124,Yes)、ノイズ多項式因子の積によってノイズ多項式e(x,y)を復元する(ステップS127)。
【0370】
ここで、復元できないノイズ多項式因子があった場合(ステップS124,No)、平文多項式因子復元部29は復号部23にエラーを送信し、復号部23は因子系列のリストを参照して次候補の因子系列があるか否かを判定する(ステップS125)。次候補の因子系列がある場合(ステップS125,Yes)、復号部23は、次候補の因子系列を抽出し(ステップS126)、当該次候補の因子系列を零点u及びシステムパラメータd,deとともに平文多項式因子復元部29に入力し、処理はステップS123に戻る。
【0371】
尚、ここで次候補の因子系列がなかった場合(ステップS125,No)、復号部23は、復号エラーを平文出力部30に通知し、平文出力部30は、復号エラーと空の復号結果とを出力する(ステップS128)。復号失敗の原因としては通信路上で暗号文が壊れてしまった、或いは改竄されてしまったことが考えられる。上述の[復号失敗確率]で示したような不可避な場合も考えられるが、復号失敗確率を十分小さく(例えば2-64以下)することによって、例外的な可能性までに下げることが可能となる。
【0372】
ノイズ多項式と平文多項式の役割を変えるバリエーションに関しては、バリエーションの平文多項式とノイズ多項式の役割を変えるだけで良い。このようにすることで、本実施形態においてノイズ多項式を最初に復元し、平文多項式因子の復元を行わないという選択肢も出てくる。これによって処理時間が大幅に削減できる。
【0373】
以上で、本実施形態における本発明の暗号化装置10、復号装置20,20-2及び鍵生成装置40の具体的構成の説明を終了する。
【0374】
[安全性の検討]
以下では本実施形態で構成した公開鍵暗号の安全性に関して考察する。尚、公開鍵から秘密鍵を復元する鍵復元攻撃に関しては一般的な解法アルゴリズムがない不定方程式の求解問題であるため、総当たり攻撃においてのみ考察する。
【0375】
[係数比較攻撃]
係数比較攻撃は暗号文における平文多項式やランダム多項式、ノイズ多項式の未知部分を変数において計算し、実際の暗号文と係数比較することによって生じる連立方程式を解くことにより、平文多項式を他の未知部分とともに導出する攻撃手法である。本方式の場合は既知部分は下記式(94)のみである。
【0376】
【0377】
【0378】
これらを利用して上述の式(44)に基づいて暗号文を作るとb=1,2のそれぞれに対して下記式(96)が得られる。
【0379】
【0380】
上記式(96)と、下記式(97)で表される実際の暗号文と係数比較を行う。ここで、μijk,c(l)
ijkは既知である。
【0381】
【0382】
ここでは簡単のため、公開鍵Xと、これに対応したFp[t]上の多項式c1(=Πl=1
Dmmls1+Xr1+e1)が以下の条件の下で与えられたとして議論する。このようにc1,c2のうち一方だけを解析する攻撃を片側攻撃と呼ぶ。ここでは簡単のため下記式(98)として議論を進める。
【0383】
【0384】
すると、m,r1,s1,e1は下記式(99)とかけ、mijk,s(1)
ijk,r(1)
ijk,e(1)
ijkはFpに値を取る変数である。
【0385】
【0386】
また、Xおよびc1はそれぞれ下記式(100)と書け、τijk,(1)
ijkはFpに値を持つ定数である。
【0387】
【0388】
ここで、x2、xy、y2、x、yの項および定数項を比較すると、下記式(101)の連立方程式が導出できる。
【0389】
【0390】
この連立方程式は変数が10、式が6であることから非線形不定方程式となっている。
一般には変数の個数が#ΔDm,Dmdm+#ΔDr,dr+#ΓDs,ds+#ΓDe,deであり、式の個数が#ΓDx+Dr,dx+drである。dX、drが大きくなると不定方程式ではなくなるが、NP困難として知られる非線形な多変数連立方程式の求解問題となる。これは、c1,c2ともに考慮に入れた場合でも同様である。
【0391】
[線形代数攻撃]
線形代数攻撃は係数比較攻撃において非線形部分を線形化することで、本来非線形連立方程式が導出されるところを、線形連立方程式に変える攻撃手法である。これによって攻撃の計算量を飛躍的に下げることが可能となる。非線形部分を線形化するとは非線形部分(即ち、積となっている部分)をひと塊の多項式としてみて未知部分を設定することを意味する。本方式で言えば、平文が埋め込まれている項(平文項)がΠj=1
Dmmj(x,y)sk(x,y)のように非線形となっているため、この部分をまとめて1つの多項式M(x,y)とおく、即ち、暗号文を下記式(102)とおく。
【0392】
【0393】
未知部分をM,rk,sk,ekとし、これを上述の式(98)に示したパラメータを用いてc1(x,y)に適用して、下記式(103)とし、既知部分Xおよびc1をそれぞれ下記式(104)とすると、係数比較攻撃と同様の考察により、以下の連立方程式(105)が導出される。
【0394】
【0395】
【0396】
【0397】
この連立方程式は変数が10、式が6であることから線形不定方程式となっている。一般には変数の個数が#ΔDx+Dr,dx+dr+#ΔDr,dr+#ΓDe,deであり、式の個数が#ΓDx+Dr,dx+drである。このことから、#ΔDr,dr+#ΓDe,de次元だけの解空間を持つ。実際、変数rijk、eijkに任意のFpの元を代入すると、これに対応するMijkが求まる。しかし、復号結果として正しいMijkはそのうち1つであり、これを決定するには導出されたM(x,y)を因数分解したときΠj=1
Dmmj(x,y)sk(x,y)となることを確かめる手段しかなく、これには今のところ(係数比較攻撃による以外は)解空間を総当たりするほか方法しか知られていない。よって、総当たり攻撃が回避するに十分な大きさの解空間が取れれば、本攻撃は防ぐことが可能となる。
【0398】
尚、線形代数攻撃にも両側攻撃が存在するが、解空間を総当たりするという意味では片側攻撃の方が有効となる。
【0399】
[総当たり攻撃]
前節までに述べた各種攻撃への耐性は基本的に連立方程式を解く計算量で評価したが、本節ではこれらを総当たり攻撃の観点で再考する。係数比較攻撃では片側攻撃の場合、ei(x,y)を総当たりすることにより、復号と同じ手段でイデアル分解によりΠj=1mj(x,y)を求めることが可能となる。そのように考えるとei(x,y)の総当たり回数は(有限体の標数pの変数の個数乗なので)pde+1となり、これもまた計算量が指数関数的に増大する。これは線形代数攻撃でも同様である。
【0400】
また、鍵復元攻撃においても、多変数連立方程式を解くときには(ux(t),uy(t))を両方求める必要があったが、これは片方(例えばux(t))を総当たりして、これに対応する(この場合はuy(t))をX(ux(t),y)=0を解くことによって求めることが可能となる。これらのことを考え合わせるとux(t)の総当たりを検討する必要があり、総当たり回数はpd+1となり、やはり指数関数的に増大する。
【0401】
以上の考察により、既存のいずれの攻撃においても計算量は指数関数的に増大することが分かる。
【0402】
最後に、実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40のハードウェア構成の例について説明する。
【0403】
[ハードウェア構成の例]
図16は実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40のハードウェア構成の例を示す図である。
【0404】
実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40は、制御装置301、主記憶装置302、補助記憶装置303、表示装置304、入力装置305及び通信装置306を備える。制御装置301、主記憶装置302、補助記憶装置303、表示装置304、入力装置305及び通信装置306は、バス310を介して接続されている。
【0405】
制御装置301は、補助記憶装置303から主記憶装置302に読み出されたプログラムを実行する。主記憶装置302は、ROM(Read Only Memory)、及び、RAM(Random Access Memory)等のメモリである。補助記憶装置303は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、及び、メモリカード等である。
【0406】
表示装置304は表示情報を表示する。表示装置304は、例えば液晶ディスプレイ等である。入力装置305は、コンピュータを操作するためのインタフェースである。入力装置305は、例えばキーボードやマウス等である。コンピュータがスマートフォン及びタブレット型端末等のスマートデバイスの場合、表示装置304及び入力装置305は、例えばタッチパネルである。通信装置306は、他の装置と通信するためのインタフェースである。
【0407】
コンピュータで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD-ROM、メモリカード、CD-R及びDVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
【0408】
またコンピュータで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。またコンピュータで実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【0409】
またコンピュータで実行されるプログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0410】
コンピュータで実行されるプログラムは、実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40の機能構成(機能ブロック)のうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置301が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置302上にロードされる。すなわち上記各機能ブロックは主記憶装置302上に生成される。
【0411】
なお上述した各機能ブロックの一部又は全部をソフトウェアにより実現せずに、IC(Integrated Circuit)等のハードウェアにより実現してもよい。
【0412】
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち1つを実現してもよいし、各機能のうち2つ以上を実現してもよい。
【0413】
また実施形態の暗号化装置10、復号装置20、20-2及び鍵生成装置40を実現するコンピュータの動作形態は任意でよい。例えば、暗号化装置10(復号装置20、20-2、鍵生成装置40)を1台のコンピュータにより実現してもよい。また例えば、暗号化装置10、復号装置20、20-2及び鍵生成装置40を、ネットワーク上のクラウドシステムとして動作させてもよい。
【0414】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0415】
1 平文取得部
2 公開鍵取得部
3 平文埋め込み部
4 記憶部
5 暗号化部
6 多項式生成部
7 ランダム値生成部
8 多項式演算部
9 暗号文出力部
10 暗号化装置
20 復号装置
21 暗号文取得部
22 鍵取得部
23 復号部
24 零点代入部
25 近似GCD計算部
26 因数分解部
27 記憶部
28 組合せ計算部
29 平文多項式因子復元部
30 平文出力部
31 剰余計算部
32 ノイズ多項式復元部
33 多項式減算部
34 イデアル分解部
40 鍵生成装置
41 システムパラメータ取得部
42 制御部
43 多項式生成部
44 ランダム値生成部
45 不定方程式生成部
46 多項式演算部
47 鍵出力部
301 制御装置
302 主記憶装置
303 補助記憶装置
304 表示装置
305 入力装置
306 通信装置
310 バス