IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ EAGLYS株式会社の特許一覧

特開2023-66339暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム
<>
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図1
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図2
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図3
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図4
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図5
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図6
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図7
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図8
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図9
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図10
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図11
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図12
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図13
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図14
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図15
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図16
  • 特開-暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023066339
(43)【公開日】2023-05-15
(54)【発明の名称】暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20230508BHJP
【FI】
G09C1/00 620Z
【審査請求】有
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021210018
(22)【出願日】2021-12-23
(11)【特許番号】
(45)【特許公報発行日】2022-07-15
(31)【優先権主張番号】P 2021176099
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】518334141
【氏名又は名称】EAGLYS株式会社
(74)【代理人】
【識別番号】100210815
【弁理士】
【氏名又は名称】西田 聡子
(72)【発明者】
【氏名】丸山 祐丞
(72)【発明者】
【氏名】三原 健太郎
(72)【発明者】
【氏名】林 卓也
(57)【要約】
【課題】準同型暗号を利用した畳み込み演算において、効率的に演算すること。
【解決手段】制御部と、記憶部とを備えるコンピュータが実行するプログラムであって、制御部が、第1の多次元データおよび第2の多次元データを記憶部に記憶させ、第1の多次元データに対応する第1の多項式を生成し、第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、第2の多次元データに対応する第2の多項式を生成し、第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、第1の暗号多項式と第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、第3の暗号多項式を表す暗号情報を出力するステップを備え、第3の多項式の所定の項は、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する。
【選択図】図4
【特許請求の範囲】
【請求項1】
制御部と、記憶部とを備えるコンピュータが実行するプログラムであって、
前記制御部が、第1の多次元データおよび第2の多次元データを前記記憶部に記憶させるステップと、
前記制御部が、前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成するステップと、
前記制御部が、前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成するステップと、
前記制御部が、前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成するステップと、
前記制御部が、前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成するステップと、
前記制御部が、前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成するステップと、
前記制御部が、前記第3の暗号多項式を表す暗号情報を出力するステップと、を備え、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する、暗号処理プログラム。
【請求項2】
前記多項式は、剰余多項式環である、請求項1に記載の暗号処理プログラム。
【請求項3】
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有する、請求項2に記載の暗号処理プログラム。
【請求項4】
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入する、請求項3に記載の暗号処理プログラム。
【請求項5】
前記第3の暗号多項式を生成するステップにおいて、前記制御部は、
前記第1の暗号多項式と前記第2の暗号多項式との積を、所定の法多項式で除算する処理を行う、請求項4に記載の暗号処理プログラム。
【請求項6】
前記第1の多項式は、前記第1の多次元データである2次元データ
(a00,a01,a02,…,aij,…,aw-1,w-1) (wは前記第1の多次元データのサイズ)に対して、
【数8】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b00,b01,b02,…,bij,…,bk-1,k-1) (kは前記第2の多次元データのサイズ)に対して、
【数9】
で定義され、
ただし、Φは、m≧w2、およびm=2n(nは自然数)を満たす整数mによって、
Φm(x)=Z[x]/(xm+1)
で定義される剰余多項式環である、請求項5に記載の暗号処理プログラム。
【請求項7】
前記第3の多項式は、
【数10】
で定義され、
前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果である2次元データのi行j列目の値dijに対応する係数cは、前記第3の多項式の係数から、
ij=ciw+j
で定義される請求項6に記載の暗号処理プログラム。
【請求項8】
前記第1の多項式であるa(x)にxのα乗を乗じ、前記第2の多項式であるb(x)にxのβ乗を乗じたとき(ただし、αおよびβは、-m<α≦m、-m<β≦m、を満たす整数)、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果である前記dijに対応する係数cは、前記第3の多項式の係数から、
【数11】
ただし、zは、iw+j+α+β≧0 のとき 0,iw+j+α+β<0 のとき 1、
で定義される請求項7に記載の暗号処理プログラム。
【請求項9】
前記第1の多項式は、前記第1の多次元データである2次元データ
(a00,a01,a02,…,aij,…,aw-1,w-1) (wは第1の多次元データのサイズ)に対して、
【数12】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b00,b01,b02,…,bij,…,bk-1,k-1) (kは第2の多次元データのサイズ)に対して、
【数13】
で定義され、
ただし、Φは、m≧2w2、およびm=2n(nは自然数)を満たす次数mの剰余多項式環である、請求項4に記載の暗号処理プログラム。
【請求項10】
前記第3の多項式は、
【数14】
で定義され、
前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果である2次元データのi行j列目の値dijに対応する係数cは、前記第3の多項式の係数から、
ij=cwk-1+iw+j
で定義される請求項9に記載の暗号処理プログラム。
【請求項11】
制御部と、記憶部とを備えるコンピュータにおいて、
前記制御部が、第1の多次元データおよび第2の多次元データを前記記憶部に記憶させ、
前記制御部が、前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成し、
前記制御部が、前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記制御部が、前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成し、
前記制御部が、前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記制御部が、前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記制御部が、前記第3の暗号多項式を表す暗号情報を出力する方法であって、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する、暗号処理方法。
【請求項12】
制御部と、記憶部とを備える暗号処理装置であって、
前記制御部は、
第1の多次元データおよび第2の多次元データを前記記憶部に記憶させ、
前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成し、
前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成し、
前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記第3の暗号多項式を表す暗号情報を出力し、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する、暗号処理装置。
【請求項13】
第1の多次元データを記憶する端末装置と、第2の多次元データを記憶するサーバ装置と、を備える暗号処理システムであって、
前記端末装置は、
前記第1の多次元データに対応する第1の多項式を生成し、
前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記第1の暗号多項式を前記サーバ装置に送信し、
前記サーバ装置は、
前記第2の多次元データに対応する第2の多項式を生成し、
前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記端末装置から受信した第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記第3の暗号多項式を表す暗号情報を前記端末装置に送信し、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する、暗号処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、暗号処理プログラム、暗号処理方法、暗号処理装置、暗号処理システムに関する。
【背景技術】
【0002】
近年、ディープラーニングの発展により、画像や時系列データ、テキスト、インターネット上のつながり分析、嗜好性分析など、より複雑なデータの分析を高精度に行うことが可能となっている。
【0003】
他方、これらの分析手法の発展に伴い、分析に用いられるデータは多様化しており、クレジットカード情報、日々の室内の音声データ、医療画像、遺伝情報など個人プライバシーに直結した機微データが扱われており、プライバシー情報を秘匿したまま分析処理を行う秘密計算技術が注目を集めている。例えば、非特許文献1では、暗号文に演算処理を行うことが可能な準同型暗号を用いた技術が開示されている。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】C. Gentry, “Fully Homomorphic Encryption Using Ideal Lattices”, STOC 2009, pp. 169-178, 2009.
【非特許文献2】JUNVEKAR, C., VAIKUNTANATHAN, V. and CHANDRAKASAN, A., “GAZELLE: A Low Latency Framework for Secure Neural Network Inference”, Cryptology ePrint Archive, [online], 2018年, Report 2018/073, pp.1-17, インターネット
【発明の概要】
【発明が解決しようとする課題】
【0005】
準同型暗号を用いて秘密計算を行う場合、配列型データを扱う畳み込み処理のような計算においては、パッキングと呼ばれる方法により多数の数字(ベクトル)を1つの多項式に入れ込み、内積計算をベースとする手法が、非特許文献2で提案されている。しかしながら、内積計算をベースとした当該手法では、畳み込み処理のために内積した上に複雑に足し合わせる処理が必要となるため、データ量や計算量が膨大になってしまう。
【0006】
そこで、本開示は、本開示は、上記課題を解決すべくなされたものであって、その目的は、準同型暗号を利用した畳み込み演算において、効率的に演算する技術を提供することである。
【課題を解決するための手段】
【0007】
上記目的を達成するため、本開示に係る暗号処理プログラムは、制御部と、記憶部とを備えるコンピュータが実行するプログラムであって、制御部が、第1の多次元データおよび第2の多次元データを記憶部に記憶させるステップと、制御部が、記憶部から読み込んだ第1の多次元データに対応する第1の多項式を生成するステップと、制御部が、第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成するステップと、制御部が、記憶部から読み込んだ第2の多次元データに対応する第2の多項式を生成するステップと、制御部が、第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成するステップと、制御部が、第1の暗号多項式と第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成するステップと、制御部が、第3の暗号多項式を表す暗号情報を出力するステップと、を備え、第3の多項式の所定の項は、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する。
【0008】
また、上記目的を達成するため、本開示に係る暗号処理方法は、制御部と、記憶部とを備えるコンピュータにおいて、制御部が、第1の多次元データおよび第2の多次元データを記憶部に記憶させ、制御部が、記憶部から読み込んだ第1の多次元データに対応する第1の多項式を生成し、制御部が、第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、制御部が、記憶部から読み込んだ第2の多次元データに対応する第2の多項式を生成し、制御部が、第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、制御部が、第1の暗号多項式と第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、制御部が、第3の暗号多項式を表す暗号情報を出力する方法であって、第3の多項式の所定の項は、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する。
【0009】
また、上記目的を達成するため、本開示に係る暗号処理装置は、制御部と、記憶部とを備え、制御部は、第1の多次元データおよび第2の多次元データを記憶部に記憶させ、記憶部から読み込んだ第1の多次元データに対応する第1の多項式を生成し、第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、記憶部から読み込んだ第2の多次元データに対応する第2の多項式を生成し、第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、第1の暗号多項式と第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、第3の暗号多項式を表す暗号情報を出力し、第3の多項式の所定の項は、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する。
【0010】
また、上記目的を達成するため、本開示に係る暗号処理システムは、第1の多次元データを記憶する端末装置と、第2の多次元データを記憶するサーバ装置と、を備え、端末装置は、第1の多次元データに対応する第1の多項式を生成し、第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、第1の暗号多項式をサーバ装置に送信し、サーバ装置は、第2の多次元データに対応する第2の多項式を生成し、第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、端末装置から受信した第1の暗号多項式と第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、第3の暗号多項式を表す暗号情報を端末装置に送信し、第3の多項式の所定の項は、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果に対応する係数を有する。
【発明の効果】
【0011】
本開示によれば、準同型暗号を利用した畳み込み演算において、効率的に演算することができる。
【図面の簡単な説明】
【0012】
図1】畳み込み演算の具体例を示す図である。
図2】暗号処理装置100の構成を示す全体図である。
図3】暗号処理装置100の機能的構成を示す図である。
図4】暗号処理装置100における処理の一例を示すフローチャートである。
図5】第1の多次元データと第1の多項式の具体例を示す図である。
図6】第2の多次元データの具体例を示す図である。
図7】第1の多項式と第2の多項式に基づいて第3の多項式を算出する過程の具体例を示す図である。
図8】第1の多次元データと第2の多次元データに複数のチャンネルがある場合の具体例を示す図である。
図9】暗号処理装置200の機能的構成を示す図である。
図10】暗号処理装置200における処理の一例を示すフローチャートである。
図11】第2の多次元データの具体例を示す図である。
図12】第1の多項式と第2の多項式に基づいて第3の多項式を算出する過程の具体例を示す図である。
図13】第1の多項式と第2の多項式の係数の挿入を変形させた場合に、第1の多項式と第2の多項式に基づいて第3の多項式を算出する過程の具体例を示す図である。
図14】第1の多項式と第2の多項式の係数の挿入を変形させた場合に、第1の多項式と第2の多項式に基づいて第3の多項式を算出する過程の具体例を示す図である。
図15】第1の多項式と第2の多項式の係数の挿入を逆方向にした場合に、第1の多項式と第2の多項式に基づいて第3の多項式を算出する過程の具体例を示す図である。
図16】第1の多項式と第2の多項式の係数の挿入を逆方向にした場合に、第1の多項式と第2の多項式に基づいて第3の多項式を算出する過程の具体例を示す図である。
図17】暗号処理装置を複数のコンピュータに分けて処理させる場合の具体例を示す図である。
【発明を実施するための形態】
【0013】
以下、本開示の実施形態について図面を参照して説明する。実施形態を説明する全図において、共通の構成要素には同一の符号を付し、繰り返しの説明を省略する。なお、以下の実施形態は、特許請求の範囲に記載された本開示の内容を不当に限定するものではない。また、実施形態に示される構成要素のすべてが、本開示の必須の構成要素であるとは限らない。
【0014】
<畳み込み演算と本発明の概要>
図1は、畳み込み演算の具体例を示した図である。図1は、より具体的に言えば、3×3のサイズである第1のデータに2×2のサイズである第2のデータを適用して畳み込み演算して結果を算出する具体例である。なお、第1のデータは、第1の多次元データに相当し、例えば、画像データである。第2のデータは、第2の多次元データに相当し、例えばカーネルのデータである。
【0015】
コンピュータは、画像データなどに代表される2次元のデータの畳み込み演算を、例えば、以下のように算出する。すなわち、コンピュータは、第1のデータの座標(0,0)の画素値であるデータa00と、第2のデータの座標(0,0)の重みであるデータb00が重なるように、画像データの上にカーネルを重ね合わせる。なお、座標は、ストライド1のラスタ走査をするときの始点を(0,0)とし、(行方向,列方向)として表記する。次に、コンピュータは、第1のデータと第2のデータが重なった座標のデータ同士を掛け合わせた上で、各座標において掛け合わされた結果の値を足し合わせることで、畳み込み演算後の結果を取得する。例えば、a00の上に、b00を重ね合わせた場合の畳み込み演算の結果は、
「a0000+a0101+a1010+a1111
となり、演算結果の座標(0,0)に対応する。
【0016】
次に、コンピュータは、カーネルをストライド1のラスタ走査をした順方向にずらした上で、畳み込み演算の結果を算出する。これを言い換えれば、コンピュータは、第1のデータの座標(0,1)の画素値であるデータa01に、第2のデータの座標(0,0)の重みであるデータb00を重ね、畳み込み演算の結果を算出する。
【0017】
上記の処理を繰り返すが、コンピュータは、第1のデータである画像データの上に第2のデータであるカーネルのデータが完全に重ならないものは除外して処理する。つまり、第1のデータの座標(0,2)の画素値であるa02に第2のデータの座標(0,0)の重みであるb00を重ねると、第2のデータの重みであるb01とb11の値が第1のデータである画像データと重ならなくなるため、コンピュータは、この重ね合わせは除外して処理する。そして、コンピュータは、第1のデータの座標(1,0)の画素値であるa10に第2のデータの座標(0,0)の重みであるb00を重ねた上で、畳み込み演算の結果を算出し、処理を継続する。
【0018】
以上のように計算を行うと、コンピュータは、第1のデータである画像データのサイズをw、第2のデータであるカーネルのサイズをkとしたときに、第2のデータの座標(0,0)の重みを、第1のデータの座標(0,0)から、座標(w-k、w-k)まで移動させたときに、第1のデータの画像データと第2のデータのカーネルデータを完全に重ね合わせることが可能であり、畳み込み演算結果を算出する。また、第1のデータである画像データのうち、行方向又は列方向の座標が(w-k+1)以上のものは、第1のデータと第2のデータを完全に重ね合わせることができないため、計算処理から除外する。
【0019】
したがって、コンピュータは、第1のデータである画像データのサイズをw、第2のデータであるカーネルのサイズをkとすると、(w-k+1)のサイズの畳み込み演算後のデータを算出する。
【0020】
一般的に用いられるシステム(画像などを対象とした機械学習モデル等、計算方法等を含む)は、畳み込み演算結果を算出する際、得られたデータにさらにデータを付加して、画像データと同じサイズの畳み込み演算後の結果を算出するものもあるが、不足するデータの付加方法は、システムごとに定義されて一律ではない。したがって、コンピュータは、畳み込み演算結果を算出するとき、上記のような(w-k+1)のサイズの畳み込み演算結果を算出することが重要である。
【0021】
詳細は後述するが、本発明の開示において、畳み込み演算を行う対象が二次元データであるとき、コンピュータは、多項式として剰余多項式環を用い、第1のデータである画像データの画素値を第1の多項式の係数として所定の順序で挿入し、第2のデータであるカーネルの重みを第2の多項式の係数として、第1の多項式に挿入した順序とは逆方向の順序に挿入する。その上で、コンピュータは、準同型暗号を利用して、第1の多項式と第2の多項式とを乗算した結果の第3の多項式の係数から、畳み込み演算の結果を取得することができる。したがって、本発明では、畳み込み演算のコアとなるデータを秘密計算下で効率的に算出することが可能となる。
【0022】
<実施形態1>
実施形態1では、準同型暗号を用い、2つの多次元データの畳み込み演算の結果を得るための方法の一例について示す。
【0023】
(全体構成)
図2は、本実施形態の暗号処理装置100の全体構成を示す図である。暗号処理装置100は、汎用のコンピュータである。暗号処理装置100は、例えば、据え置き型のPC(Personal Computer)、ラップトップPC等により実現される。また、暗号処理装置100は、スマートフォン、又はタブレット端末などの携行性を備えたコンピュータであってもよい。
【0024】
暗号処理装置100は、プロセッサ11と、メモリ12と、ストレージ13と、通信IF14と、入出力IF15と、を備える。
【0025】
プロセッサ11は、プログラムに記述された命令セットを実行するためのハードウェアであり、演算装置、レジスタ、周辺回路などにより構成される。メモリ12は、プログラム、および、プログラム等で処理されるデータ等を一時的に記憶するためのものであり、例えばDRAM(Dynamic Random Access Memory)等の揮発性のメモリにより実現される。ストレージ13は、データを保存するための記憶装置であり、例えばフラッシュメモリ、HDD(Hard Disc Drive)により実現される。通信IF14は、暗号処理装置100が外部の装置と通信するため、信号を送受信するためのインタフェースである。入出力IF15は、ユーザからの入力を受け付けるための入力装置、および、ユーザに対し情報を提示するための出力装置とのインタフェースとして機能する。
【0026】
(暗号処理装置100の機能的構成)
図3は、本実施形態に係る暗号処理装置100の機能的構成を示す図である。図3を参照して、実施形態1に係る暗号処理装置100の機能的構成について説明する。
【0027】
暗号処理装置100は、通信部110と、記憶部120と、制御部130と、を備える。
【0028】
通信部110は、暗号処理装置100が他の装置と通信するための処理を行う。ここでいう他の装置とは、ネットワークで接続されたPCでもよいし、スマートフォン、タブレットなどの端末であってもよい。また、他の入出力装置、例えば、フラッシュメモリやHDDなどによりデータの入出力を行う装置であってもよい。
【0029】
記憶部120は、例えば、RAM等の揮発性のメモリ、フラッシュメモリ、HDD等により構成され、暗号処理装置100が使用するデータ、及びプログラムを記憶する。
【0030】
制御部130は、暗号処理装置100のプロセッサが記憶部120に記憶されるプログラムを読み込み、プログラムに含まれる命令を実行することにより実現される。制御部130は、暗号処理装置100の動作を制御する。具体的には、制御部130は、例えば、多次元データを記憶部120に記憶させるステップと、第1の多項式を生成するステップと、第1の暗号多項式を生成するステップと、第2の多項式を生成するステップと、第2の暗号多項式を生成するステップと、第3の暗号多項式を生成するステップと、暗号情報を出力するステップとしての機能を発揮する。
【0031】
(暗号処理装置100が行う処理の流れ)
図4は、暗号処理装置100の制御部130が行う処理の流れを示す図である。なお、処理の流れは一例であり、図4で示す順序に限られない。例えば、第2の多項式を第1の多項式よりも先に生成してもよいし、並列的に処理してもよい。
【0032】
ステップS101において、制御部130は、通信部110を介して、ネットワークに接続された他の装置から、又は、暗号処理装置100に接続された入力装置から、第1の多次元データと第2の多次元データを取得し、記憶部120に記憶する。
【0033】
第1の多次元データは、例えば画像データ、音声データ、動画データなどであるが、これらに限られるものではない。
【0034】
第2の多次元データは、例えば、画像データ、音声データ、動画データなどを処理するためのフィルタやカーネルなどであるが、これらに限られるものではない。
【0035】
ステップS102において、制御部130は、記憶部120から第1の多次元データを取得し、第1の多次元データに対応する第1の多項式(後述)を生成する。
【0036】
制御部130は、例えば、第1の多次元データが画像データであるとき、画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、格子暗号に使われる剰余多項式環の係数として昇冪の順に挿入することで、第1の多次元データに対応する第1の多項式を生成する。すなわち、第1の多項式は画像データの各画素値に対応する係数を有する。なお、本明細書において「昇冪の順」とは、多項式において次数が低い方から高い方になるような順のことを意味する。また「降冪の順」とは、多項式において次数が高い方から低い方になるような順のことを意味する。
【0037】
制御部130は、第1の多次元データに対応する第1の多項式の生成を以下のように行う。
【0038】
制御部130は、第1の多次元データのサイズがw×wであり、第1の多次元データが(式1)で示されるとき、第1の多次元データに対応する第1の多項式を(式2)のように生成する。なお、第1の多項式において、画素値が係数として挿入されない項は、係数として0(ゼロ)を挿入する。
(式1) (a00,a01,a02,…,aij,…,aw-1,w-1)
(式2)
【数1】
ただし、Φは、m≧2w2、およびm=2n(nは自然数)を満たす次数mの剰余多項式環である。なお、演算の効率化の観点では、mは、上記式を満たす最小の値を用いることが好ましい。
【0039】
ステップS103において、制御部130は、第1の多項式を準同型暗号により暗号化して、第1の暗号多項式を生成する。暗号化方法は、準同型性を有する一般的に用いられる方法であればよく、例えば格子暗号などを用いてよい。なお、準同型性を有する一般的に用いられる暗号化方法は、公知の技術であるため、説明を省略する。
【0040】
ステップS104において、制御部130は、記憶部120から第2の多次元データを取得し、第2の多次元データに対応する第2の多項式(後述)を生成する。
【0041】
制御部130は、第2の多次元データが2次元のカーネルであるとき、カーネルの所定の位置からストライド1のラスタ走査をして得られる重みを、剰余多項式環の係数として降冪の順に挿入することで、第2の多次元データに対応する第2の多項式を生成する。すなわち、第2の多項式はカーネルの各重みに対応する係数を有する。
【0042】
制御部130は、第2の多次元データに対応する第2の多項式の生成を以下のように行う。
【0043】
第1の多次元データが上記(式1)で表され、第2の多次元データのサイズをk×kとし、そのデータが(式3)で表されるとき、制御部130は、第2の多項式を(式4)のように生成する。なお、第2の多項式において、重みが挿入されない項は、係数として0(ゼロ)を挿入する。
(式3) (b00,b01,b02,…,bij,…,bk-1,k-1)
(式4)
【数2】
ただし、Φは、m≧2w2、およびm=2n(nは自然数)を満たす次数mの剰余多項式環である。なお、演算の効率化の観点では、mは、上記式を満たす最小の値を用いることが好ましい。
【0044】
ステップS105において、制御部130は、第2の多項式を準同型暗号により暗号化して、第2の暗号多項式を生成する。暗号化方法には、準同型性を有する一般的に用いられる方法であればよく、例えば格子暗号などを用いてよい。なお、準同型性を有する一般的に用いられる暗号化方法は、公知の技術であるため、説明を省略する。
【0045】
ステップS106において、制御部130は、第1の暗号多項式と、第2の暗号多項式とに基づいて、第3の暗号多項式を生成する。第3の暗号多項式は、第3の多項式を、準同型暗号により暗号化した暗号結果に対応する暗号多項式である。
【0046】
第1の暗号多項式をA(x)、第2の暗号多項式をB(x)、第3の暗号多項式をC(x)とすると、制御部130は、A(x)とB(x)とを乗算してC(x)を算出する。すなわち、C(x)は(式5)のように表される。
(式5) C(x)=A(x)×B(x)
【0047】
ステップS107において、制御部130は、第3の暗号多項式を表す暗号情報を出力する。
【0048】
制御部130が、ステップS107で出力した暗号情報は、復号すると、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果として利用することができる。
【0049】
暗号情報の復号は、暗号処理装置100が行ってもよいし、暗号処理装置100以外の装置が行ってもよい。例えば、制御部130が出力する暗号情報、すなわち第3の暗号多項式を受け取った情報処理装置は、暗号化に対応する復号方法を用いて暗号情報を復号し、第3の多項式を算出する。
【0050】
第3の多項式の係数には、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果に対応する係数が含まれているため、これらを取り出すことにより、畳み込み演算の結果を算出することができる。
【0051】
具体的には、第3の多項式c(x)を(式6)で表すと、畳み込み演算の結果dは、(式7)によって算出することができる。
(式6)
【数3】
ただし、Φは、次数mの剰余多項式環である。
(式7) dij=cwk-1+iw+j
ただし、(式7)において、wは第1の多次元データのサイズ、kは第2の多次元データのサイズ、dijは、2次元データのi行j列目の値を表す。
【0052】
上記の処理により、コンピュータは、第1の多項式と第2の多項式とに基づいて第3の多項式を生成し、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果を算出することができる。
【0053】
(二次元データの処理における具体例)
図5図7を参照して、第1の多次元データと第2の多次元データが二次元のデータであることを前提として、第1の多次元データに対し、第2の多次元データを適用する畳み込み演算の結果に対応する多項式の係数を取得する処理について具体的に説明する。
図5は、第1の多次元データと第1の多項式の具体例を示す図である。図5(a)は、例えば画像データなどの第1の多次元データを示し、図5(b)は、第1の多次元データの各画素値を第1の多項式の係数に挿入して第1の多項式を生成する過程を示し、図5(c)は、第1の多項式を示す。図5(a)において、画像データの座標(0,0)の画素値はa00であり、画像データの座標(0,1)の画素値はa01であり、画像データの座標(1,0)の画素値はa10である。すなわち、座標(i,j)の画素値はaijである。
【0054】
例えば、図5(a)に示すような2次元の画像データが第1の多次元データであるとき、制御部130は、上記(式2)で示される多項式を生成する。(式2)に従えば、図5(c)に示す式が第1の多項式である。ただし、図5の説明においては、記載を簡単にするため、Φは省略する。
【0055】
ここで、(式2)で示される多項式を生成する手順は、以下のように考えることができる。なお、図5の例では、第1の多次元データのサイズwは3であるため、以下では(式2)の条件を満たす最小のmとして、2×32=18以上であり、かつm=2nを満たすm=25=32を剰余多項式環の次数として説明する。
【0056】
制御部130は、一つの方法として、例えば、座標(0,0)からストライド1のラスタ走査をして得られる画素値を、剰余多項式環の最も小さな次数(x0)の項から昇冪の順に係数として挿入する。
【0057】
より具体的には、制御部130は、座標(0,0)を始点として、まずは同じ行0の中で列番号jが大きくなる順に画素値a0jをxの次数の最も小さい項から昇冪の順に係数に挿入し、行i内の画素値の挿入が終わった場合には、次の行((i+1)行)に移動して、xの次数の小さい項から昇冪の順に画素値を係数として挿入していく。
【0058】
制御部130は、図5(a)に示す2次元の画像データは、図5(b)に示すように、a00をx0の係数、a01をx1の係数、a02をx2の係数、a10をx3の係数、a11をx4の係数、a12をx5の係数、a20をx6の係数、a21をx7の係数、a22をx8の係数として挿入する。ここで、画素値が挿入されなかった多項式の項(x9~x31)には、係数として0を挿入する。
【0059】
このように、第1の多次元データに基づいて剰余多項式環の係数を挿入することで、第1の多項式、すなわち、図5(c)に示す多項式を生成することができる。
【0060】
図6は、第2の多次元データと第2の多項式の具体例を示す図である。図6(a)は、例えばカーネルなどの第2の多次元データを示し、図6(b)は、ゼロパディングにより拡張した第2の多次元データを示す。図6(c)は、第2の多次元データの重みを第2の多項式の係数に挿入して第2の多項式を生成する過程を示し、図6(d)は、第2の多項式を示す。図6(a)において、カーネルの座標(0,0)の重みはb00であり、カーネルの座標(0,1)の重みはb01である。また、カーネルの座標(1,0)の重みはb10であり、カーネルの座標(1,1)の重みはb11である。
【0061】
例えば、図6(a)に示すような2次元のカーネルのデータが第2の多次元データであるとき、制御部130は、上記(式4)で示される多項式を生成する。(式4)に従えば、図6(d)に示す式が第2の多項式である。ただし、図6においては、記載を簡単にするため、Φは省略する。
【0062】
ここで、(式4)で示される多項式を生成する手順は、以下のように考えることができる。
【0063】
上述したように、制御部130は、第1の多次元データについて、ストライド1のラスタ走査をして得られる画素値を、多項式(剰余多項式環)の所定の次数の項から昇冪の順に係数として挿入した。制御部130は、第1の多項式および第2の多項式に基づいて生成される第3の多項式の係数から畳み込み演算の結果を取得できるように、第2の多次元データに対応する第2の多項式の係数への挿入方法を工夫する必要がある。
【0064】
そこで、本実施形態では、制御部130は、第2の多次元データについて、第2の多次元データを、少なくとも列サイズは、第1の多次元データと同じ大きさになるようにゼロパディングする。つまり、第2の多次元データを第1の多次元データと同じ大きさになるようにゼロパディングするか、第2の多次元データを第1の多次元データと列サイズにおいて同じ大きさになるようにゼロパディングする。そして、第1の多次元データについてストライド1のラスタ走査をして得られた値を多項式の係数として挿入した方向とは逆方向に、第2の多次元データについてストライド1のラスタ走査をして得られる値を係数として挿入する。すなわち、2次元データの所定の位置からストライド1のラスタ走査をして得られる値を、第1の多次元データでは多項式の係数として昇冪の順に挿入するのに対し、第2の多次元データでは、多項式の係数として降冪の順に挿入する。
【0065】
例えば、図5(a)の第1の多次元データは3×3の大きさであるが、図6(a)の第2の多次元データは2×2である。このとき、ゼロパディングの一例として、第2の多次元データを第1の多次元データと同じ大きさになるようにゼロパディングするとき、図6(b)のように、制御部130は、第2の多次元データを第1の多次元データの大きさである3×3に拡張する。図6(b)では、座標(0,0)の値、座標(0,1)の値、座標(0,2)の値、座標(1,2)の値、座標(2,2)の値をいずれも0としてゼロパディングを行い、図6(a)の第2の多次元データを拡張する。
【0066】
また、ゼロパディングの一例として、第2の多次元データの列サイズを第1の多次元データの列サイズと揃えてもよい。すなわち、制御部130は、第2の多次元データを、図6(b)の点線で囲まれるような2×3の大きさに拡張する。つまり、座標(0,2)の値、座標(1,2)の値をいずれも0としてゼロパディングを行い、図6(a)の第2の多次元データを拡張する。
【0067】
そして、第1の多次元データについて、図5(a)のように、座標(0,0)を始点としてストライド1のラスタ走査の順方向に向かって画素値を、第1の多項式の所定の項から昇冪の順に係数として挿入するとき、図6(b)の第2の多次元データ(サイズ3×3)の座標(0,0)を始点として、ストライド1のラスタ走査の順方向に向かって重みを、第2の多項式の所定の項から降冪の順に係数として挿入する。
【0068】
すなわち、制御部130は、座標(0,0)を始点として、まずは同じ行0の中で列番号jが大きくなる順に座標(0,j)の値をxの次数の所定の項(後述)から降冪の順に係数に挿入し、行0内の重みの挿入が終わった場合には、次の行(行1)に移動して、引き続き降冪の順に重みを係数として挿入していく。ここで、ゼロパディングにより拡張した第2の多次元データの各値を係数として挿入できるように、拡張した第2の多次元データのサイズ分(w×w)に相当する項数が少なくとも必要である。したがって、始点である座標(0,0)の値は、xの(w×w-1)乗の項(上記所定の項)に係数として挿入する。
【0069】
制御部130は、図6(a)に示す2次元のカーネルのデータについて、図6(b)に示す拡張した2次元のカーネルのデータを座標(0,0)からストライド1のラスタ走査をし、xの8(=3×3-1)乗の項から係数として、ストライド1のラスタ走査で得られた値を挿入していく。そうすると、図6(c)に示すように、座標(0,0)の値(ゼロ)をx8の係数、座標(0,1)の値(ゼロ)をx7の係数、座標(0,2)の値(ゼロ)をx6の係数として挿入する。同様に、b00をx5の係数、b01をx4の係数、座標(1,2)の値(ゼロ)をx3の係数、座標(2,0)の値b10をx2の係数、座標(2,1)の値b11をx1の係数、座標(2,2)の値(ゼロ)をx0の係数として挿入する。ここで、値が挿入されなかった多項式の項(x9~x31)には、係数として0を挿入する。
【0070】
これは、言い換えれば、図6(b)の拡張した2次元のカーネルのデータの座標(2,2)を始点として、ストライド1のラスタ走査の逆方向に向かって重み(値)を、第2の多項式の最も次数が小さい項から昇冪の順に係数として挿入することと同じことである。
【0071】
なお、第2の多次元データの列サイズ(k)を、第1の多次元データの列サイズ(w)と揃える場合は、ゼロパディングにより拡張した第2の多次元データの各値を係数として挿入できるように、拡張した第2の多次元データのサイズ分(w×k)に相当する項数が少なくとも必要である。したがって、ラスタ走査の始点である座標(0,0)の値は、xの(w×k-1)乗の項に係数として挿入する。具体的には、制御部130は、図6(b)の点線で囲まれた2×3のカーネルのデータについて、座標(0,0)からストライド1のラスタ走査し、xの5(=3×2-1)乗の項から係数として、ストライド1のラスタ走査で得られた値を挿入していく。そうすると、座標(0,0)の値b00をx5の係数、座標(0,1)の値b01をx4の係数、座標(0,2)の値(ゼロ)をx3の係数として挿入する。同様に、座標(1,0)の値b10をx2の係数、座標(1,1)の値b11をx1の係数、座標(1,2)の値(ゼロ)をx0の係数として挿入する。ここで、値が挿入されなかった多項式の項(x6~x31)には、係数として0を挿入する。
【0072】
これは、言い換えれば、拡張した(点線で囲まれた2×3の)2次元のカーネルのデータの座標(1,2)を始点として、ストライド1のラスタ走査の逆方向に向かって重み(値)を、第2の多項式の最も次数が小さい項から昇冪の順に係数として挿入することと同じことである。
【0073】
このように、制御部130は、第2の多次元データに基づいて剰余多項式環の係数を挿入することで、第2の多項式、すなわち、図6(d)に示す多項式を生成することができる。
【0074】
図7は、第1の多項式a(x)と第2の多項式b(x)に基づいて第3の多項式c(x)を算出する過程の具体例を示す図である。最上位の1行目には、剰余多項式環の項の次数を示している。2行目には、第1の多項式a(x)において、剰余多項式環の項に挿入した係数の値を示している。3行目には、第2の多項式b(x)において、剰余多項式環の項に挿入した係数の値を示している。4行目以下は、a(x)にb(x)を乗じた結果、剰余多項式環の各項の係数として算出される値を示しており、3行目以下の値を全て足し合わせたものが、第3の多項式c(x)において、各項の係数の値となる。
【0075】
図7に示すように、c(x)の所定の項の係数は、第1の多次元データ(w×w)に第2の多次元データ(k×k)を適用して畳み込み演算を行った結果に対応している。畳み込み結果の2次元データをDとし、Dのi行j列目のピクセルD(i,j)の値をdijと表記した際、dijは、c(x)のxの(w×k-1+i×w+j)乗の係数から取得することができる(式7参照)。図7の例では、制御部130は、c(x)のx5の係数、x6の係数、x8の係数、x9の係数を取り出すことで、畳み込み演算の結果(それぞれ、D(0,0)、D(0,1)、D(1,0)、D(1,1)のピクセル値d00,d01,d10,d11に対応。)を取得することができる。
【0076】
(複数チャンネルへの拡張)
第1の多次元データは1チャンネルであることを前提に説明したが、第1の多次元データは、複数のチャンネルを有してもよい。例えば、画像データでは、色を含めて、Rチャンネル、Gチャンネル、Bチャンネルの3チャンネルが存在することが多い。
【0077】
加えて、第2の多次元データも、複数のチャンネルを有してもよい。例えば、第2の多次元データがカーネルである場合には、それぞれの特徴を抽出するために、複数のチャンネルのカーネルを用いることがある。
【0078】
上記のように、第1の多次元データと、第2の多次元データは、どちらも複数のチャンネルを有してよいが、畳み込み演算の結果として得られるチャンネル数は、第2の多次元データ数と同じチャンネル数となる。
【0079】
図8は、第1の多次元データと第2の多次元データに複数のチャンネルがある場合の処理の具体例を示す図である。第1の多次元データがpチャンネルあり、第2の多次元データがqチャンネルあるとき、畳み込み演算結果として得られるチャンネル数は、第1の多次元データの各チャンネルに第2の多次元データの各チャンネルを適用して畳み込み演算した結果に対して、第1の各チャンネルを足し合わせた結果を畳み込み演算結果とするため、第2のチャンネル数であるqチャンネル分の出力を得る。
【0080】
(効果の説明)
本実施形態によれば、第1の多次元データに第2の多次元データを適用した畳み込み演算を、剰余多項式環を用いて計算することにより、暗号処理を用いたデータ処理においても、畳み込み演算の結果を算出することが可能となる。
【0081】
また、暗号化処理を用いて畳み込み演算を行う従来の手法と比較して、暗号化の回数や掛け算の回数を少なく効率的に計算結果を算出することが可能であり、これにより、メモリやCPUの資源を節約し、高速に計算することが可能となる。従来の手法では、畳み込み演算結果の2次元データサイズ(w-k+1)2回程度の暗号同士の乗算が必要だったのに対し、本手法では1回程度の乗算で計算できる。
【0082】
さらに、本実施形態による方法を用いると、上記(式4)の多項式環において、一定のサイズを確保すればよく、それ以上の制限を課することなく畳み込み演算の結果を算出することが可能である。
【0083】
<実施形態2>
実施形態2では、準同型暗号を用い、2つの多次元データの畳み込み演算の結果を得るための方法において、実施形態1とは異なる方法について示す。具体的には、実施形態2では、多項式として用いる剰余多項式環が実施形態1とは異なる。
【0084】
(全体構成)
本実施形態の暗号処理装置200の全体構成は、実施形態1と同様であり、図1に示すとおりであるため、重複する説明を省略する。
【0085】
(暗号処理装置200の機能的構成)
図9は、本実施形態に係る暗号処理装置200の機能的構成を示す図である。図9を参照して、実施形態2に係る暗号処理装置200の機能的構成について説明する。
【0086】
暗号処理装置200は、通信部110と、記憶部120と、制御部230とを備える。
【0087】
通信部110及び記憶部120の機能は、暗号処理装置100と同様である。
【0088】
制御部230は、暗号処理装置200のプロセッサが記憶部120に記憶されるプログラムを読み込み、プログラムに含まれる命令を実行することにより実現される。制御部230は、暗号処理装置200の動作を制御する。具体的には、例えば、制御部230は、多次元データを記憶部120に記憶させるステップと、第1の多項式を生成するステップと、第1の暗号多項式を生成するステップと、第2の多項式を生成するステップと、第2の暗号多項式を生成するステップと、第3の暗号多項式を生成するステップと、暗号情報を出力するステップとしての機能を発揮する。
【0089】
(暗号処理装置200が行う処理の流れ)
以下、暗号処理装置200の制御部230における処理の流れについて説明する。
【0090】
図10は、暗号処理装置200の制御部230が行う処理の流れを示す図である。なお、処理の流れは一例であり、図10で示す順序に限られない。例えば、第2の多項式を第1の多項式よりも先に生成してもよいし、並列的に処理してもよい。
【0091】
ステップS201において、制御部230は、通信部110を介して、ネットワークに接続された他の装置から、又は、暗号処理装置200に接続された入力装置から、第1の多次元データと第2の多次元データを取得し、記憶部120に記憶する。これは、暗号処理装置100のステップS101(図4参照)と同様である。
【0092】
ステップS202において、制御部230は、記憶部120から第1の多次元データを取得し、第1の多次元データに対応する第1の多項式を生成する。これは、暗号処理装置100のステップS102と同様である。ただし、実施形態2では、剰余多項式環が後述する(式8)を満たすものを用いる。また、(式2)におけるΦは、m≧w2、およびm=2n(nは自然数)を満たす次数mの剰余多項式環である。
【0093】
ステップS203において、制御部230は、第1の多項式を準同型暗号により暗号化して、第1の暗号多項式を生成する。暗号化方法には、準同型性を有する一般的に用いられる方法であればよく、例えば格子暗号などを用いてよい。なお、準同型性を有する一般的に用いられる暗号化方法は、公知の技術であるため、説明を省略する。なお、これは、暗号処理装置100のステップS103(図4参照)と同様である。
【0094】
ステップS204において、制御部230は、記憶部120から第2の多次元データを取得し、第2の多次元データに対応する第2の多項式を生成する。
【0095】
制御部230は、第2の多次元データが2次元のカーネルであるとき、カーネルの各重みに対応する係数を多項式環の係数として挿入することで、第2の多次元データに対応する第2の多項式を生成する。
【0096】
制御部230は、第2の多次元データに対応する第2の多項式の生成を以下のように行うが、実施形態2では、(式8)で定義される剰余多項式環を用いるため、(式9)に示す式が成立する。
【0097】
剰余多項式環が(式8)を満たすとき、(式9)が成立する。
(式8) Φm(x)=Z[x]/(xm+1)
ただし、mは、m≧w2、およびm=2n(nは自然数)を満たす。
(式9)
【数4】
【0098】
第1の多次元データが(式1)で、第2の多次元データが(式3)で表されるとき、制御部230は、第2の多次元データを第1の多次元データと同じサイズになるようにゼロパディングして拡張した第2の多次元データである(式10)に対して、第2の多項式を(式11)のように生成する。なお、第2の多項式において、重みが挿入されない項には、係数として0(ゼロ)を挿入する。
【0099】
(式10) (b00,b01,b02,…,bij,…,bw-1,w-1)
(式11)
【数5】
ただし、Φは、m≧w2、およびm=2n(nは自然数)を満たす整数mによって、
Φm(x)=Z[x]/(xm+1)
で定義される剰余多項式環である。なお、演算の効率化の観点では、mは、上記式を満たす最小の値を用いることが好ましい。
【0100】
なお、第2の多次元データの列サイズを、第1の多次元データの列サイズにそろえる場合は以下のとおりである。第1の多次元データが(式1)で、第2の多次元データが(式3)で表されるとき、制御部230は、第2の多次元データの列サイズを第1の多次元データの列サイズと同じサイズになるようにゼロパディングして拡張した第2の多次元データ(b00,b01,b02,…,bij,…,bk-1,w-1)に対して、第2の多項式を(式12)のように生成する。なお、第2の多項式において、重みが挿入されない項には、係数として0(ゼロ)を挿入する。
(式12)
【数6】
ただし、Φは、m≧w2、およびm=2n(nは自然数)を満たす整数mによって、
Φm(x)=Z[x]/(xm+1)
で定義される剰余多項式環である。なお、演算の効率化の観点では、mは、上記式を満たす最小の値を用いることが好ましい。
【0101】
ステップS205において、制御部230は、第2の多項式を暗号化して、第2の暗号多項式を生成する。これは、暗号処理装置100におけるステップS105(図4参照)と同様である。
【0102】
ステップS206において、制御部230は、第1の暗号多項式と、第2の暗号多項式に基づいて、第3の暗号多項式を生成する。これは、暗号処理装置100におけるステップS106(図4参照)と同様である。
【0103】
制御部230は、第1の暗号多項式をA(x)、第2の暗号多項式をB(x)としたとき、第3の暗号多項式をC(x)として、A(x)とB(x)の掛け合わせ、すなわち上記(式5)のようにしてC(x)を算出する。
【0104】
ステップS207において、制御部230は、第3の暗号多項式を用いて、暗号情報を出力する。
【0105】
暗号処理装置200の制御部230が生成する多項式環は、(式8)を満たすため、(式9)が成立する。したがって、例えば、xについて2nの次数の項は、x0を(-1)倍した項と同じであり、xについて(2n+1)の次数の項は、x1を(-1)倍した項と同じである。制御部230は、(式9)を踏まえ、第3の暗号多項式を法多項式で除算する。すなわち、A(x)とB(x)とを掛け合わせて、第3の暗号多項式C(x)を生成するとき、次数が2n以上となるものは、2nで除算した上で、係数を(-1)倍する。
【0106】
制御部230がステップS207で出力した暗号情報は、復号すると、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果として利用することができる。
【0107】
暗号情報の復号は、暗号処理装置200が行ってもよいし、暗号処理装置200以外の装置が行ってもよい。例えば、制御部230が出力する暗号情報、すなわち第3の暗号多項式を受け取った情報処理装置は、暗号化に対応する復号方法を用いて暗号情報を復号し、第3の多項式を算出する。
【0108】
第3の多項式の係数には、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果が含まれているため、これらを取り出すことにより、畳み込み演算の結果を算出することができる。
【0109】
具体的には、第3の多項式c(x)を上記(式6)で表すと、畳み込み演算の結果dは、(式13)によって算出することができる。ただし、(式6)において、剰余多項式環は、m≧w2、およびm=2n(nは自然数)を満たす次数mを有する。
【0110】
(式13) dij=ciw+j
ただし、(式13)において、wは第1の多次元データのサイズ、dijは、2次元データのi行j列目の値を表す。
【0111】
なお、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果は、第1の多次元データがw×w、第2の多次元データがk×kのサイズであるとき、(w-k+1)×(w-k+1)のサイズとなる。
【0112】
上記の処理により、コンピュータは、第1の多項式と第2の多項式とに基づいて第3の多項式を生成し、第1の多次元データに第2の多次元データを適用した畳み込み演算の結果を算出することができる。
【0113】
(二次元データの処理における具体例)
図5,11および図12を参照して、第1の多次元データと第2の多次元データが二次元のデータであることを前提として、具体例で実施形態2における畳み込み演算の結果に対応する多項式の係数を取得する処理について説明する。
【0114】
第1の多次元データから第1の多項式を生成する過程は、剰余多項式環の次数が異なる以外は、実施形態1と同様である。実施形態2においては、上述したように剰余多項式環は、(式8)で定義される。そうすると、図5(a)で示す第1の多次元データ(サイズw=3)について、(式8)の条件を満たす最小のmは、w2=9以上であり、かつ、m=2nを満たすm=24=16となる。そして、剰余多項式環が(式8)を満たすとき、(式9)が成立するので、剰余多項式環の次数は15(=m-1)となる。制御部230は、次数15の剰余多項式環に対し、図5で示した流れにより、第1の多次元データの画素値を挿入して、図5(c)に示す第1の多項式を生成する。
【0115】
図11は、第2の多次元データと第2の多項式の具体例を示す図である。図11(a)は、例えばカーネルなどの第2の多次元データを示し、図11(b)は、ゼロパディングにより拡張した第2の多次元データを示す。図11(c)は、第2の多次元データの重みを第2の多項式の係数に挿入して第2の多項式を生成する過程を示し、図11(d)は、第2の多項式を示す。図11(a)において、カーネルの座標(0,0)の重みはb00であり、カーネルの座標(0,1)の重みはb01である。また、カーネルの座標(1,0)の重みはb10であり、カーネルの座標(1,1)の重みはb11である。
【0116】
例えば、第2の多次元データが図11(a)のように示されるとき、制御部230は、一つの方法として、座標(0,0)からストライド1のラスタ走査をして得られる重みを、剰余多項式環の所定の次数の項から降冪の順に係数として挿入する。
【0117】
制御部230は、上述したように、第1の多次元データについて、ストライド1のラスタ走査をして得られる画素値を、多項式(剰余多項式環)の所定の次数の項から昇冪の順に係数として挿入する。制御部230は、第1の多項式および第2の多項式に基づいて生成される第3の多項式の係数から畳み込み演算の結果を取得できるように、第2の多次元データに対応する第2の多項式の係数への挿入方法を工夫する必要がある。これは実施形態1と同様である。
【0118】
そして、本実施形態においても、実施形態1と同様に、制御部230は、第2の多次元データについて、第2の多次元データの大きさを、第1の多次元データの大きさと同じ大きさになるようにゼロパディングし、第1の多次元データについてストライド1のラスタ走査をして得られた値を多項式の係数として挿入した方向とは逆方向に、第2の多次元データについてストライド1のラスタ走査をして得られる値を係数として挿入する。ここで、本実施形態では、(式8)で定義される剰余多項式環を用いているため、(式9)を満たすことから、多項式の係数の扱いが実施形態1と異なる。
【0119】
すなわち、本実施形態では、制御部230は、ゼロパディングにより拡張した第2の多次元データについて、座標(0,0)を始点としてストライド1のラスタ走査をして得られた値を第2の多項式の最も次数が小さい項(x0)から降冪の順に係数として挿入するが、剰余多項式環が(式9)を満たすことから、降冪の順で、x0の次の次数の項は、xの(2n-1)乗の次数(図5および図11の例の場合、15乗)の項となる。
【0120】
具体的には、図5(a)の第1の多次元データは3×3の大きさであるが、図11(a)の第2の多次元データは2×2である。このとき、ゼロパディングの一例として、図11(b)のように、制御部230は、第2の多次元データを第1の多次元データの大きさである3×3に拡張する。図11(b)では、座標(0,2)の値、座標(1,2)の値、座標(2,0)の値、座標(2,1)の値、座標(2,2)の値をいずれも0としてゼロパディングを行い、図11(a)の第2の多次元データを拡張する。
【0121】
そして、制御部230は、第2の多次元データの座標(0,0)を始点としてストライド1のラスタ走査により得られた値を、第2の多項式の最も次数が小さい項(x0)から降冪の順に挿入していくと、x0の係数にb00を挿入した後は、(式9)により、x15の係数に-b01を挿入することになる。そして、x14の係数に0を、x13の係数に-b10を、x12の係数に-b11を挿入する。また、x11の係数に座標(1,2)の値0(ゼロ)、x10の係数に座標(2,0)の値0(ゼロ)、x9の係数に座標(2,1)の値0(ゼロ)、x8の係数に座標(2,2)の値0(ゼロ)を挿入する。ここで、重みが挿入されなかった多項式の項(x1~x7)には、係数として0を挿入する。
【0122】
なお、第2の多次元データについて、第2の多次元データの列サイズを、第1の多次元データの列サイズと同じ大きさになるようにゼロパディングする場合には以下のようになる。すなわち、制御部230は、第2の多次元データについて、第2の多次元データの列サイズを、第1の多次元データの列サイズと同じ大きさになるようにゼロパディングし、第1の多次元データについてラスタ走査して得られた値を多項式の係数として挿入した方向とは逆方向に、第2の多次元データについてラスタ走査して得られる値を係数として挿入する。ここで、本実施形態では、(式8)で定義される剰余多項式環を用いているため、(式9)を満たすことから、多項式の係数の扱いが実施形態1と異なる。
【0123】
すなわち、本実施形態では、制御部230は、ゼロパディングにより拡張した第2の多次元データについて、座標(0,0)を始点としてストライド1のラスタ走査をして得られた値を第2の多項式の最も次数が小さい項(x0)から降冪の順に係数として挿入するが、剰余多項式環が(式9)を満たすことから、降冪の順で、x0の次の次数の項は、xの(2n-1)乗の次数(図5および図11の例の場合、15乗)の項となる。
【0124】
具体的には、図5(a)の第1の多次元データは3×3の大きさであるが、図11(a)の第2の多次元データは2×2である。このとき、ゼロパディングの一例として、図11(b)の点線で囲まれたデータのように、制御部230は、第2の多次元データの列サイズを第1の多次元データの列サイズにそろえ、2×3に拡張する。図11(b)では、座標(0,2)の値、座標(1,2)の値をいずれも0としてゼロパディングを行い、図11(a)の第2の多次元データを拡張する。
【0125】
そして、制御部230は、第2の多次元データの座標(0,0)を始点としてストライド1のラスタ走査により得られた値を、第2の多項式の最も次数が小さい項(x0)から降冪の順に挿入していくと、x0の係数にb00を挿入した後は、(式9)により、x15の係数に-b01を挿入することになる。そして、x14の係数に0を、x13の係数に-b10を、x12の係数に-b11を挿入する。また、x11の係数に座標(1,2)の値0(ゼロ)を挿入する。ここで、重みが挿入されなかった多項式の項(x1~x10)には、係数として0を挿入する。
【0126】
このように、制御部230は、第2の多次元データに基づいて剰余多項式環(ただし、(式8)で定義される。)の係数を挿入することで、第2の多項式、すなわち、図11(d)に示す多項式を生成することができる。
【0127】
図12は、第1の多項式a(x)と第2の多項式b(x)に基づいて第3の多項式c(x)を算出する過程の具体例を示す図である。最上位の1行目には、剰余多項式環の項の次数を示している。2行目には、第1の多項式a(x)において、剰余多項式環の項に挿入した係数の値を示している。3行目には、第2の多項式b(x)において、剰余多項式環の項に挿入した係数の値を示している。4行目以下は、a(x)にb(x)を乗じた結果、剰余多項式環の各項の次数として算出される値を示しており、3行目以下の値を全て足し合わせたものが、第3の多項式c(x)において、各項の係数の値となる。
【0128】
図12に示すように、c(x)の所定の項の係数は、第1の多次元データ(w×w)に第2の多次元データ(k×k)を適用して畳み込み演算を行った結果に対応している。畳み込み結果の2次元データをDとし、Dのi行j列目のピクセルD(i,j)の値をdijと表記した際、dijは、c(x)のxの(i×w+j)乗の係数から取得することができる(式13参照)。図12の例では、制御部230は、c(x)のx0の係数、x1の係数、x3の係数、x4の係数を取り出すことで、畳み込み演算の結果(それぞれ、D(0,0)、D(0,1)、D(1,0)、D(1,1)のピクセル値d00,d01,d10,d11に対応。)を取得することができる。
【0129】
(複数チャンネルへの拡張)
また、第1の多次元データ、第2の多次元データはそれぞれ、複数のチャンネルを有してもよく、最終的に畳み込み演算した結果は第2の多次元データのチャンネル数を出力することは暗号処理装置100と同様である。
【0130】
(効果)
本実施形態によれば、第1の多次元データと第2の多次元データを暗号化した領域において畳み込み演算を行い、畳み込み演算結果である第3の多次元データを算出することが可能となる。
【0131】
また、暗号化領域において畳み込み演算を行う従来の手法と比較して、計算の回数を少なく効率的に計算結果を算出することが可能であり、これにより、メモリやCPUの資源を節約し、高速に計算することが可能となる。
【0132】
さらに、実施形態1の方法と比較すると、第1、第2、第3それぞれの多項式の次元を軽減することが可能となる。
【0133】
<本発明の開示における多項式への係数の挿入方法の変形例>
本発明の開示では、第1の多次元データ(例えば画像データ)と第2の多次元データ(例えばカーネルのデータ)を剰余多項式環の係数に挿入して、畳み込み演算結果を算出するところに特徴を有する。
【0134】
実施形態1における制御部130及び実施形態2における制御部230は、畳み込み演算結果が取得できるように、第1の多次元データと第2の多次元データを剰余多項式環の係数に挿入するが、このとき、畳み込み演算の性質を考慮して、第1の多次元データと第2の多次元データとは、逆向きに多項式環の係数に挿入する。すなわち、例えば、第1の多次元データを第1の多項式に昇冪の順に係数として挿入したとき、第2の多次元データを第2の多項式に降冪の順に係数として挿入する。例えば、第1の多次元データを第1の多項式に降冪の順に係数として挿入したとき、第2の多次元データを第2の多項式に昇冪の順に係数として挿入する。
【0135】
また、制御部130及び制御部230は、第1の多次元データに対応する第1の多項式の生成及び第2の多次元データに対応する第2の多項式の生成に際し、以下のような変形を行ってもよい。
【0136】
例えば、制御部130及び制御部230は、座標(0,0)を始点として、まずは同じ行0の中で列番号jが大きくなる順に座標(0,j)の値を最も次数の小さい項(x0)から、昇冪の順に画素値を第1の多項式の係数として挿入していく。このとき、第1の多項式の最も次数の小さい項(x0)ではなく、第1の多項式の任意に選んだ項の次数(pを自然数としたとき、xp)を第1の次数とし、第1の次数の項からから昇冪の順に係数として挿入してもよい。
【0137】
ただし、実施形態1における制御部130は、第1の多項式について、第1の次数を、もっとも小さい0(ゼロ)からpへ移動させた分、(式2)の多項式の次数がp増えるため、余計にメモリを消費することとなる。
【0138】
また、実施形態2における制御部230は、(式8)及び(式9)を満たすため、第1の多項式の項の次数が2のn乗以上となった場合には、2のn乗で除算した次数に対して、係数を(-1)倍した値を挿入してよい。
【0139】
制御部130及び制御部230は、第1の多次元データを、第1の多項式のxのp乗の項から係数として挿入したとき、実施形態1では、(式7)で表されるclをcl+pとした項から係数を取り出すことで、畳み込み演算の結果を取得することができる。実施形態2では、(式13)で表されるclをcl+pとした項から係数を取り出すことで、畳み込み演算の結果を取得することができる。
【0140】
制御部130及び制御部230は、第2の多次元データから第2の多項式を生成する際に、既に述べた方法に基づいて生成した第2の多項式b(x)に対して、xのq乗を乗じてもよい。
【0141】
ただし、実施形態1における制御部130は、第2の多項式について、第2の次数を、もっとも小さい0(ゼロ)からqへ移動させた分、(式4)の多項式の次数がq増えるため、余計にメモリを消費することとなる。
【0142】
また、実施形態2における制御部230は、(式8)及び(式9)を満たすため、第2の多項式の項の次数が2のn乗以上となった場合には、2のn乗で除算した次数に対して、係数を(-1)倍した値を挿入してよい。
【0143】
制御部130及び制御部230は、第2の多次元データを、既に述べた方法と比較して、xのq乗を乗ずることで、第2の多次元データの係数への挿入をシフトさせたとき、実施形態1では、(式7)で表されるclをcl+qとした項から係数を取り出すことで、畳み込み演算の結果を取得することができる。実施形態2では、(式13)で表されるclをcl+qとした項から係数を取り出すことで、畳み込み演算の結果を取得することができる。
【0144】
図13は、第1の多項式a(x)と第2の多項式b(x)に基づいて第3の多項式c(x)を算出する過程の具体例を示す図である。図13は、図7の具体例に対して、第1の多項式a(x)に対してx2を乗じて第1の多項式の係数をシフトさせ、第2の多項式b(x)に対してx1を乗じて第2の多項式の係数をシフトさせたものである。
【0145】
図13に示すように、c(x)の所定の項の係数は、第1の多次元データに第2の多次元データを適用して畳み込み演算を行った結果に対応している。図13の例では、制御部130は、c(x)のx8の係数、x9の係数、x11の係数、x12の係数を取り出すことで、畳み込み演算の結果を取得することができる。すなわち、第1の多項式a(x)と第2の多項式b(x)をシフトさせた分(図13の例では、1+2=3)だけ、図7で示すc(x)から取り出す位置をシフトさせることで、畳み込み演算を行った結果を抽出することができる。
【0146】
なお、実施形態2における制御部230においても、同様に、第2の多項式の項にxqを乗ずることで、第2の多項式の係数をシフトさせてもよい。ただし、第2の多項式は(式8)で定義される剰余多項式環を用いるため、制御部230は、第2の多項式の項の次数が2のn乗以上となった場合には、2のn乗で除算した次数に対して、係数を(-1)倍した値を挿入することになる。
【0147】
図14は、第1の多項式a(x)と第2の多項式b(x)に基づいて第3の多項式c(x)を算出する過程の具体例を示す図である。図14は、図12の具体例に対して、第1の多項式a(x)に対してx2を乗じて第1の多項式の係数をシフトさせ、第2の多項式b(x)に対してx1で除することで第2の多項式の係数をシフトさせたものである。実施形態2(図12の具体例)では、(式8)で定義される剰余多項式環を用いるため、制御部230は、多項式をxqで除すること(すなわちx-qを乗ずること)で多項式の係数をシフトさせてもよい。
【0148】
図14に示すように、c(x)の所定の項の係数は、第1の多次元データに第2の多次元データを適用して畳み込み演算を行った結果に対応している。図14の例では、制御部130は、c(x)のx1の係数、x2の係数、x4の係数、x5の係数を取り出すことで、畳み込み演算の結果を取得することができる。すなわち、図12で示す第1の多項式a(x)と第2の多項式b(x)をシフトさせた分だけ、図12で示すc(x)から取り出す位置をシフトさせることで、畳み込み演算を行った結果を抽出することができる。
【0149】
より一般的には、畳み込み演算の結果dは、実施形態2における第1の多項式、すなわち(式2)で示され、Φは、m≧w2、およびm=2n(nは自然数)を満たす次数mの剰余多項式環との条件を満たす第1の多項式a(x)に対してxのα乗を乗じて第1の多項式の係数をシフトさせ、実施形態2で述べた(式11)又は(式12)で示される第2の多項式b(x)に対してxのβ乗を乗じて第2の多項式の係数をシフトさせたとき、(式14)によって算出することができる(ただし、αおよびβは、-m<α≦m、-m<β≦m、を満たす整数)。
【0150】
(式14)
【数7】
ただし、zは、iw+j+α+β≧0 のとき 0,iw+j+α+β<0 のとき 1。
【0151】
加えて、制御部130及び制御部230は、第1の多次元データの大きさをwとするとき、ストライド1のラスタ走査をするときの終点となる座標(w-1,w-1)の画素値から、ストライド1のラスタ走査の逆方向の走査により、第1の多項式の第1の次数の項から、昇冪の順に係数として挿入してもよい。
【0152】
この際、制御部130及び制御部230は、第2の多次元データに対応する第2の多項式を生成するために、既に説明した従来の方向とは逆方向に係数の挿入を行う。
【0153】
上記のように、第1の多次元データを第1の多項式の項の係数に挿入するときに変形した形で挿入を行う際、制御部130及び制御部230は、適宜調整して、第3の多項式から係数を取り出す。
【0154】
制御部130及び制御部230は、第1の多次元データに対応する第1の多項式の生成及び第2の多次元データに対応する第2の多項式の生成に際し、さらに、以下のような変形を行ってもよい。
【0155】
例えば、制御部130は、第1の多次元データのサイズがw×wであるとき、座標(w-1,w-1)を始点として、降冪の順に画素値を第1の多項式の係数として挿入してもよい。これは、既に説明した方法とは、逆方向に、第1の多項式の項に係数を挿入することに相当する。
【0156】
また、制御部130は、第1の多次元データを既に説明した方法とは逆方向に係数を挿入したとき、第2の多次元データを、座標(0,0)を始点として、昇冪の順に重みを第2の多項式の係数に挿入していく。これは、既に説明した方法とは、逆方向に、第2の多項式の項に係数を挿入することに相当する。このように、第1の多項式の係数へのデータの挿入方法と、第2の多項式の係数へのデータの挿入方法を逆向きにすることにより、第3の多項式の係数から、畳み込み演算の結果を算出が可能である。
【0157】
図15は、第1の多項式a(x)と第2の多項式b(x)に基づいて第3の多項式c(x)を算出する過程の具体例を示す図である。図15は、実施形態1に係る図7の具体例に対して、第1の多項式及び第2の多項式を生成するときに、既に説明した方法とは逆方向に係数の挿入を行った具体例を示している。
【0158】
図15に示すように、c(x)の所定の項の係数は、第1の多次元データに第2の多次元データを適用して畳み込み演算を行った結果に対応している。図15の例では、制御部130は、図7の例と逆方向に係数を取り出し、c(x)のx8の係数、x7の係数、x5の係数、x4の係数を取り出すことで、畳み込み演算の結果を取得することができる。すなわち、第1の多次元データのサイズをw、第2の多次元データのサイズをk、畳み込み演算の結果(2次元データのi行j列目の値、ただし0≦i,j≦k-1)をdijとしたとき、dijは、c(x)のxの(w2-1-iw-j)乗の係数から取得することができる。
【0159】
また、例えば、制御部230は、第1の多次元データのサイズがw×wであるとき、座標(w-1,w-1)を始点として、降冪の順に画素値を第1の多項式の係数として挿入してもよい。これは、既に説明した方法とは逆方向に、第1の多項式の項に係数を挿入することに相当する。このとき、第2の多次元データのサイズをk×kとしたとき、第1の多項式の次数(wk-(w-k)-1)の項(xの(wk-(w-k)-1)乗)から、降冪の順に画素値を第1の多項式の係数として挿入し、次数が(-1)の項に係数を挿入する際には、(-1)倍した画素値をxの(2n-1)乗の項に挿入する(nは、上記(式8)および(式9)における自然数)。
【0160】
また、制御部130は、第1の多次元データを既に説明した方法とは逆方向に係数を挿入したとき、第2の多次元データを、座標(0,0)を始点として、昇冪の順に重みを第2の多項式の係数に挿入していく。これは、既に説明した方法とは、逆方向に、第2の多項式の項に係数を挿入することに相当する。このように、第1の多項式の係数へのデータの挿入方法と、第2の多項式の係数へのデータの挿入方法を逆向きにすることにより、第3の多項式の係数から、畳み込み演算の結果を算出が可能である。
【0161】
図16は、第1の多項式a(x)と第2の多項式b(x)に基づいて第3の多項式c(x)を算出する過程の具体例を示す図である。図16は、実施形態2に係る図12の具体例に対して、第1の多項式及び第2の多項式を生成するときに、既に説明した方法とは逆方向に係数の挿入を行った具体例を示している。
【0162】
図16に示すように、c(x)の所定の項の係数は、第1の多次元データに第2の多次元データを適用して畳み込み演算を行った結果に対応している。図16の例では、制御部130は、図12の例とは逆方向に係数を取り出し、c(x)のx4の係数、x3の係数、x1の係数、x0の係数を取り出すことで、畳み込み演算の結果を取得することができる。すなわち、第1の多次元データのサイズをw、第2の多次元データのサイズをk、畳み込み演算の結果(2次元データのi行j列目の値、ただし0≦i,j≦k-1)をdijとしたとき、dijは、c(x)のxの(wk-iw-w+k-1-j)乗の係数から取得することができる。
【0163】
上記のように、制御部130及び制御部230は、第1の多次元データを第1の多項式に挿入し、第2の多次元データを第2の多項式の係数に挿入するとき、(1)それぞれの多項式に対してxのr乗(rは自然数)の係数から挿入することが可能である。加えて、制御部130及び制御部230は、(2)第1の多次元データの第1の多項式の係数への挿入方法と、第2の多次元データの第2の多項式の係数への挿入方法を、既に説明した方法と逆方向に行うことも可能である。さらに、(3)これらの変形例を組み合わせることも可能である。このとき、制御部130及び制御部230は、第3の多項式からの係数の取り出すとき、適宜調整を行う。
【0164】
<多次元データの複数処理への拡張>
制御部130及び制御部230は、第1の多次元データに対応する第1の多項式を生成する際に、複数の多次元データを第1の多項式に含めてもよい。このとき、多項式の次元数は大きくなるが、第1の多項式と第2の多項式との掛け算の処理を1回行うことで、複数の多次元データに対する畳み込み演算の演算結果を得ることが可能となる。
【0165】
<多次元データの分割処理への拡張>
制御部130及び制御部230は、第1の多次元データに対応する第1の多項式を生成する際に、1つの画像データを分割して第1の多項式を生成してもよい。
【0166】
例えば、図5(a)に示すデータが第1の多次元データとして存在するとき、第1の多次元データについて、座標(0,0)から座標(1,2)までの値と、座標(1,0)から座標(2,2)までの値に分割して第1の多項式に係数として挿入し、畳み込み演算結果を算出してもよい。
【0167】
ただし、畳み込み演算の性質上、行の途中でデータを区切ると、正しい畳み込み演算結果が算出できないため、行の終わりまで第1の多次元データを第1の多項式の係数に挿入する必要がある。例えば、図5(a)の例では、座標(0,2)のa02、座標(1,2)のa12などで区切る必要がある。
【0168】
加えて、畳み込み演算の性質上、第2の多次元データのサイズをk×kとしたとき、第1の多次元データを分割した行から、さらに(k-1)行分、第1の多次元データを第1の多項式に係数を挿入する必要がある。
【0169】
例えば、図5(a)の例では、座標(0,2)で区切った場合には、1つめの処理として、第1の多次元データを座標(1,2)のa12の値まで多項式の係数に挿入する必要がある。また、座標(1,2)で区切った場合には、1つめの処理として、第1の多次元データを座標(2,2)のa22の値まで多項式の係数に挿入する必要がある。
【0170】
上記のように、第1の多次元データを分割すると、少ないメモリのコンピュータにおいても、大きなサイズのデータを処理することが可能となる。
【0171】
<CNNへの応用>
本発明によれば、第1の多次元データを第2の多次元データに適用した畳み込み演算の結果を取得することが可能であるが、かかる演算結果を機械学習に用いることも可能である。具体的には、第3の暗号多項式を表す暗号情報を、CNN(Convolutionla Neural Network)の畳み込み層の次の層の入力データとして出力することも可能である。
【0172】
これにより、機械学習においても、暗号化した畳み込み演算の結果を効率的に利用することが可能となる。
【0173】
以上で実施形態の説明を終了するが、上記実施形態は一例に過ぎない。そのため、サーバ10、20の具体的な構成、処理内容等は上記実施形態で説明したものに限られない。
【0174】
図17は、暗号処理装置を複数のコンピュータに分けて処理させる場合の具体例を示す図である。本開示に係る暗号処理装置は、例えば、2台のコンピュータに分けて処理することが想定される。具体的には、図17に示すように、ユーザが操作する端末装置300と、サービスを提供するサーバ装置400に分けて処理を行う場面が想定される。
【0175】
例えば、ユーザが個人情報などを含む画像情報を処理したい場合、本開示に係る暗号処理システムを用いることで、画像情報を第1の多次元データとして、端末装置300において暗号化し、第1の暗号多項式を生成して、サーバ装置400に送信することができる。サーバ装置400では、第2の多次元データとしてカーネルを暗号化し、第2の暗号多項式を生成する。サーバ装置400では、第1の暗号多項式と第2の暗号多項式から、第3の暗号多項式を生成する。サーバ装置400は、第3の暗号多項式を表す暗号情報を端末装置300に送信する。端末装置300では、暗号情報を復号して、第3の多項式を取得し、所定の係数を取り出すことで、第1の多次元データに第2の多次元データを適用して畳み込み演算を行った結果を取得することが可能となる。
【0176】
このとき、端末装置300では、図4又は図10のステップS101(ステップS201)に係る第1の多次元データを記憶する処理、ステップS102(ステップS202)に係る処理、ステップS103(ステップS203)に係る処理を、サーバ装置400では、ステップS101(ステップS201)に係る第2の多次元データを記憶する処理、ステップS104(ステップS204)に係る処理、ステップS105(ステップS205)に係る処理、ステップS106(ステップS206)に係る処理、ステップS107(ステップS207)に係る処理を実行する。
【0177】
また、端末装置300は、第3の暗号多項式を表す暗号情報を復号して第3の多項式を取得する。次いで、端末装置300は、第3の多項式の所定の係数を取り出して、畳み込み演算の結果を取得する。
【0178】
上記のような構成とすることで、端末装置側からすれば、第1の多次元データをサーバ装置側に知られることなく、機密を保ったままサーバ装置側に処理の一部を実行させることが可能となる。サーバ装置側からすれば、第2の多次元データを端末装置側に知られることなく、機密を保ったまま、畳み込み演算の処理を行い、サービスの提供を行うことが可能となる。
【0179】
以上、本開示の好ましい実施形態について説明したが、上記実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【符号の説明】
【0180】
10,20 サーバ、11 プロセッサ、12 メモリ、13 ストレージ、14 通信IF、15 入出力IF、100,200 暗号処理装置、110 通信部、120 記憶部、130,230 制御部、300 端末装置、400 サーバ装置。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
【手続補正書】
【提出日】2022-06-03
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
制御部と、記憶部とを備えるコンピュータが実行するプログラムであって、
前記制御部が、第1の多次元データおよび第2の多次元データを前記記憶部に記憶させるステップと、
前記制御部が、前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成するステップと、
前記制御部が、前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成するステップと、
前記制御部が、前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成するステップと、
前記制御部が、前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成するステップと、
前記制御部が、前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成するステップと、
前記制御部が、前記第3の暗号多項式を表す暗号情報を出力するステップと、を備え、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有し、
前記多項式は、剰余多項式環であり、
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有し、
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入し、
前記第3の暗号多項式を生成するステップにおいて、前記制御部は、
前記第1の暗号多項式と前記第2の暗号多項式との積を、所定の法多項式で除算する処理を行い、
前記第1の多項式は、前記第1の多次元データである2次元データ
(a00,a01,a02,…,aij,…,aw-1,w-1) (wは前記第1の多次元データのサイズ)に対して、
【数8】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b00,b01,b02,…,bij,…,bk-1,k-1) (kは前記第2の多次元データのサイズ)に対して、
【数9】
で定義され、
ただし、Φは、m≧w、およびm=2(nは自然数)を満たす整数mによって、
Φ(x)=Z[x]/(x+1)
で定義される剰余多項式環である、暗号処理プログラム。
【請求項2】
前記第3の多項式は、
【数10】
で定義され、
前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果である2次元データのi行j列目の値dijに対応する係数cは、前記第3の多項式の係数から、
ij=ciw+j
で定義される請求項に記載の暗号処理プログラム。
【請求項3】
前記第1の多項式であるa(x)にxのα乗を乗じ、前記第2の多項式であるb(x)にxのβ乗を乗じたとき(ただし、αおよびβは、-m<α≦m、-m<β≦m、を満たす整数)、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果である前記dijに対応する係数cは、前記第3の多項式の係数から、
【数11】
ただし、zは、iw+j+α+β≧0 のとき 0,iw+j+α+β<0 のとき 1、
で定義される請求項に記載の暗号処理プログラム。
【請求項4】
制御部と、記憶部とを備えるコンピュータが実行するプログラムであって、
前記制御部が、第1の多次元データおよび第2の多次元データを前記記憶部に記憶させるステップと、
前記制御部が、前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成するステップと、
前記制御部が、前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成するステップと、
前記制御部が、前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成するステップと、
前記制御部が、前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成するステップと、
前記制御部が、前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成するステップと、
前記制御部が、前記第3の暗号多項式を表す暗号情報を出力するステップと、を備え、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有し、
前記多項式は、剰余多項式環であり、
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有し、
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入し、
前記第1の多項式は、前記第1の多次元データである2次元データ
(a00,a01,a02,…,aij,…,aw-1,w-1) (wは第1の多次元データのサイズ)に対して、
【数12】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b00,b01,b02,…,bij,…,bk-1,k-1) (kは第2の多次元データのサイズ)に対して、
【数13】
で定義され、
ただし、Φは、m≧2w、およびm=2(nは自然数)を満たす次数mの剰余多項式環である、暗号処理プログラム。
【請求項5】
前記第3の多項式は、
【数14】
で定義され、
前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果である2次元データのi行j列目の値dijに対応する係数cは、前記第3の多項式の係数から、
ij=cwk-1+iw+j
で定義される請求項に記載の暗号処理プログラム。
【請求項6】
制御部と、記憶部とを備えるコンピュータにおいて、
前記制御部が、第1の多次元データおよび第2の多次元データを前記記憶部に記憶させ、
前記制御部が、前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成し、
前記制御部が、前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記制御部が、前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成し、
前記制御部が、前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記制御部が、前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記制御部が、前記第3の暗号多項式を表す暗号情報を出力する方法であって、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有
前記多項式は、剰余多項式環であり、
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有し、
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入し、
前記第3の暗号多項式を生成するステップにおいて、前記制御部は、
前記第1の暗号多項式と前記第2の暗号多項式との積を、所定の法多項式で除算する処理を行い、
前記第1の多項式は、前記第1の多次元データである2次元データ
(a 00 ,a 01 ,a 02 ,…,a ij ,…,a w-1,w-1 ) (wは前記第1の多次元データのサイズ)に対して、
【数15】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b 00 ,b 01 ,b 02 ,…,b ij ,…,b k-1,k-1 ) (kは前記第2の多次元データのサイズ)に対して、
【数16】
で定義され、
ただし、Φは、m≧w 、およびm=2 (nは自然数)を満たす整数mによって、
Φ (x)=Z[x]/(x +1)
で定義される剰余多項式環である、暗号処理方法。
【請求項7】
制御部と、記憶部とを備えるコンピュータにおいて、
前記制御部が、第1の多次元データおよび第2の多次元データを前記記憶部に記憶させ、
前記制御部が、前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成し、
前記制御部が、前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記制御部が、前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成し、
前記制御部が、前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記制御部が、前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記制御部が、前記第3の暗号多項式を表す暗号情報を出力する方法であって、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有し、
前記多項式は、剰余多項式環であり、
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有し、
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入し、
前記第1の多項式は、前記第1の多次元データである2次元データ
(a 00 ,a 01 ,a 02 ,…,a ij ,…,a w-1,w-1 ) (wは第1の多次元データのサイズ)に対して、
【数17】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b 00 ,b 01 ,b 02 ,…,b ij ,…,b k-1,k-1 ) (kは第2の多次元データのサイズ)に対して、
【数18】
で定義され、
ただし、Φは、m≧2w 、およびm=2 (nは自然数)を満たす次数mの剰余多項式環である、暗号処理方法。
【請求項8】
制御部と、記憶部とを備える暗号処理装置であって、
前記制御部は、
第1の多次元データおよび第2の多次元データを前記記憶部に記憶させ、
前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成し、
前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成し、
前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記第3の暗号多項式を表す暗号情報を出力し、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有
前記多項式は、剰余多項式環であり、
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有し、
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入し、
前記第3の暗号多項式を生成するステップにおいて、前記制御部は、
前記第1の暗号多項式と前記第2の暗号多項式との積を、所定の法多項式で除算する処理を行い、
前記第1の多項式は、前記第1の多次元データである2次元データ
(a 00 ,a 01 ,a 02 ,…,a ij ,…,a w-1,w-1 ) (wは前記第1の多次元データのサイズ)に対して、
【数19】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b 00 ,b 01 ,b 02 ,…,b ij ,…,b k-1,k-1 ) (kは前記第2の多次元データのサイズ)に対して、
【数20】
で定義され、
ただし、Φは、m≧w 、およびm=2 (nは自然数)を満たす整数mによって、
Φ (x)=Z[x]/(x +1)
で定義される剰余多項式環である、暗号処理装置。
【請求項9】
制御部と、記憶部とを備える暗号処理装置であって、
前記制御部は、
第1の多次元データおよび第2の多次元データを前記記憶部に記憶させ、
前記記憶部から読み込んだ前記第1の多次元データに対応する第1の多項式を生成し、
前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記記憶部から読み込んだ前記第2の多次元データに対応する第2の多項式を生成し、
前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記第3の暗号多項式を表す暗号情報を出力し、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有し、
前記多項式は、剰余多項式環であり、
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有し、
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入し、
前記第1の多項式は、前記第1の多次元データである2次元データ
(a 00 ,a 01 ,a 02 ,…,a ij ,…,a w-1,w-1 ) (wは第1の多次元データのサイズ)に対して、
【数21】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b 00 ,b 01 ,b 02 ,…,b ij ,…,b k-1,k-1 ) (kは第2の多次元データのサイズ)に対して、
【数22】
で定義され、
ただし、Φは、m≧2w 、およびm=2 (nは自然数)を満たす次数mの剰余多項式環である、暗号処理方法。
【請求項10】
第1の多次元データを記憶する端末装置と、第2の多次元データを記憶するサーバ装置と、を備える暗号処理システムであって、
前記端末装置は、
前記第1の多次元データに対応する第1の多項式を生成し、
前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記第1の暗号多項式を前記サーバ装置に送信し、
前記サーバ装置は、
前記第2の多次元データに対応する第2の多項式を生成し、
前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記端末装置から受信した第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記第3の暗号多項式を表す暗号情報を前記端末装置に送信し、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有
前記多項式は、剰余多項式環であり、
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有し、
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入し、
前記第3の暗号多項式を生成するステップにおいて、前記制御部は、
前記第1の暗号多項式と前記第2の暗号多項式との積を、所定の法多項式で除算する処理を行い、
前記第1の多項式は、前記第1の多次元データである2次元データ
(a 00 ,a 01 ,a 02 ,…,a ij ,…,a w-1,w-1 ) (wは前記第1の多次元データのサイズ)に対して、
【数23】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b 00 ,b 01 ,b 02 ,…,b ij ,…,b k-1,k-1 ) (kは前記第2の多次元データのサイズ)に対して、
【数24】
で定義され、
ただし、Φは、m≧w 、およびm=2 (nは自然数)を満たす整数mによって、
Φ (x)=Z[x]/(x +1)
で定義される剰余多項式環である、暗号処理システム。
【請求項11】
第1の多次元データを記憶する端末装置と、第2の多次元データを記憶するサーバ装置と、を備える暗号処理システムであって、
前記端末装置は、
前記第1の多次元データに対応する第1の多項式を生成し、
前記第1の多項式を準同型暗号により暗号化した第1の暗号多項式を生成し、
前記第1の暗号多項式を前記サーバ装置に送信し、
前記サーバ装置は、
前記第2の多次元データに対応する第2の多項式を生成し、
前記第2の多項式を準同型暗号により暗号化した第2の暗号多項式を生成し、
前記端末装置から受信した第1の暗号多項式と前記第2の暗号多項式とに基づいて、第3の多項式を準同型暗号により暗号化した暗号結果に対応する第3の暗号多項式を生成し、
前記第3の暗号多項式を表す暗号情報を前記端末装置に送信し、
前記第3の多項式の所定の項は、前記第1の多次元データに前記第2の多次元データを適用した畳み込み演算の結果に対応する係数を有し、
前記多項式は、剰余多項式環であり、
前記第1の多次元データは画像データであり、前記第1の多項式は当該画像データの各画素値に対応する係数を有し、
前記第2の多次元データはカーネルのデータであり、前記第2の多項式は当該カーネルの各重みに対応する係数を有し、
前記第1の多項式を生成するステップにおいて、前記制御部は、
前記画像データの所定の位置からストライド1のラスタ走査をして得られる画素値を、前記第1の多項式の第1の次数の項から昇冪の順に係数として挿入し、
前記第2の多項式を生成するステップにおいて、前記制御部は、
前記画像データと行および列が同じサイズになるように、又は列サイズのみ同じ大きさとなるようにゼロパディングされたカーネルにおいて、所定の位置からストライド1のラスタ走査をして得られる重みを、前記第2の多項式の第2の次数の項から降冪の順に係数として挿入し、
前記第1の多項式は、前記第1の多次元データである2次元データ
(a 00 ,a 01 ,a 02 ,…,a ij ,…,a w-1,w-1 ) (wは第1の多次元データのサイズ)に対して、
【数25】
で定義され、
前記第2の多項式は、前記第2の多次元データである2次元データ
(b 00 ,b 01 ,b 02 ,…,b ij ,…,b k-1,k-1 ) (kは第2の多次元データのサイズ)に対して、
【数26】
で定義され、
ただし、Φは、m≧2w 、およびm=2 (nは自然数)を満たす次数mの剰余多項式環である、暗号処理システム。