(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-02-07
(54)【発明の名称】暗号文に対する非多項式演算を行う装置及び方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20220131BHJP
H04L 9/30 20060101ALI20220131BHJP
【FI】
G09C1/00 620Z
H04L9/30 Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021532251
(86)(22)【出願日】2019-11-13
(85)【翻訳文提出日】2021-06-07
(86)【国際出願番号】 KR2019015410
(87)【国際公開番号】W WO2020116807
(87)【国際公開日】2020-06-11
(32)【優先日】2018-12-07
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】10-2019-0128403
(32)【優先日】2019-10-16
(33)【優先権主張国・地域又は機関】KR
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】519389328
【氏名又は名称】クリプト ラボ インク
【氏名又は名称原語表記】CRYPTO LAB INC.
【住所又は居所原語表記】27-404, 1, Gwanak-ro, Gwanak-gu, Seoul, 08826, Republic of Korea
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100132067
【氏名又は名称】岡田 喜雅
(74)【代理人】
【識別番号】100137903
【氏名又は名称】菅野 亨
(72)【発明者】
【氏名】チョン ジャン ヒー
(72)【発明者】
【氏名】キム ドン ウ
(72)【発明者】
【氏名】キム デュヒョン
(57)【要約】
暗号文演算方法が開示される。本暗号文演算方法は、複数の同型暗号文に対する比較演算命令を入力されるステップと、前記比較演算命令に対応する合成関数に、前記複数の同型暗号文を反映して演算するステップと、前記演算された同型暗号文を出力するステップとを含む。
【特許請求の範囲】
【請求項1】
複数の同型暗号文に対する比較演算命令を入力されるステップと、
前記比較演算命令に対応する合成関数に、前記複数の同型暗号文を反映して演算するステップと、
前記演算された同型暗号文を出力するステップと
を含む暗号文演算方法。
【請求項2】
前記合成関数は、2
-αの正確度に対応し、θ(α)又はθ(αlogα)の複雑度(complexity)を有することを特徴とする請求項1に記載の暗号文演算方法。
【請求項3】
前記比較演算は、最大値算出又は最小値算出であり、
前記演算するステップは、
平方根演算に対応する合成関数を用いて前記最大値算出又は前記最小値算出を演算することを特徴とする請求項1に記載の暗号文演算方法。
【請求項4】
前記平方根演算に対応する合成関数は、
入力値を初期値として有する第1変数と、前記入力値から1を引いた値を初期値として有する第2変数とを含む第1関数、及び前記第2変数を含む第2関数を予め設定された回数分繰り返し演算する関数であることを特徴とする請求項3に記載の暗号文演算方法。
【請求項5】
前記予め設定された回数は、
前記平方根演算の誤差率に対応する回数であることを特徴とする請求項4に記載の暗号文演算方法。
【請求項6】
前記比較演算は、大きさの比較に応じて、予め設定された値を出力する演算であり、
前記演算するステップは、
インバース(inverse)演算に対応する関数演算を含む合成関数を予め設定された回数分繰り返し演算することを特徴とする請求項1に記載の暗号文演算方法。
【請求項7】
前記比較演算は、大きさの比較に応じて、予め設定された値を出力する演算であり、
前記演算するステップは、
符号関数に対応する合成関数を用いて予め設定された回数分繰り返し演算することを特徴とする請求項1に記載の暗号文演算方法。
【請求項8】
前記符号関数に対応する合成関数は、
0より大きい入力値に対しては、出力値が1に近づき、0より小さい入力値に対しては、出力値が-1に近づくようにする合成関数であることを特徴とする請求項7に記載の暗号文演算方法。
【請求項9】
前記演算するステップは、
前記符号関数に対応する近似関数であり、相互異なる2つ以上の合成関数を用いて前記比較演算を行うことを特徴とする請求項7に記載の暗号文演算方法。
【請求項10】
演算装置において、
少なくとも1つのインストラクション(instruction)を保存するメモリと、
前記少なくとも1つのインストラクションを行うプロセッサと
を含み、
前記プロセッサは、前記少なくとも1つのインストラクションを行うことで、
複数の同型暗号文に対する比較演算命令を入力されると、前記比較演算命令に対応する合成関数に、前記複数の同型暗号文を反映して演算し、前記演算された同型暗号文を出力する演算装置。
【請求項11】
前記比較演算は、最大値算出又は最小値算出であり、
前記プロセッサは、
平方根演算に対応する合成関数を用いて前記最大値算出又は前記最小値算出を演算することを特徴とする請求項10に記載の演算装置。
【請求項12】
前記比較演算は、大きさの比較に応じて、予め設定された値を出力する演算であり、
前記プロセッサは、
インバース(inverse)演算に対応する関数演算を含む合成関数を予め設定された回数分繰り返し演算することを特徴とする請求項10に記載の演算装置。
【請求項13】
前記比較演算は、大きさの比較に応じて、予め設定された値を出力する演算であり、
前記プロセッサは、
符号関数に対応する合成関数を用いて予め設定された回数分繰り返し演算することを特徴とする請求項10に記載の演算装置。
【請求項14】
前記符号関数に対応する合成関数は、
0より大きい入力値に対しては、出力値が1に近づき、0より小さい入力値に対しては、出力値が-1に近づくようにする合成関数であることを特徴とする請求項13に記載の暗号文演算装置。
【請求項15】
前記プロセッサは、
前記符号関数に対応する近似関数であり、相互異なる2つ以上の合成関数を用いて前記比較演算を行うことを特徴とする請求項13に記載の暗号文演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、近似暗号化された暗号文に対し、比較演算のような非多項式演算を行うための装置及び方法に関する。
【背景技術】
【0002】
通信技術が発生し、電子装置の普及が活発化するにつれ、電子装置の間での通信セキュリティを保持するための取り組みが持続的に行われている。それにより、多くの通信環境においては、暗号化/復号化技術が使われている。
【0003】
暗号化技術によって暗号化されたメッセージが相手に伝達されると、相手はメッセージを用いるためには、復号化を行わなければならない。この場合、相手は暗号化されたデータを復号化する過程において、リソース及び時間の無駄が生じることなる。なお、相手が演算のために、一時的にメッセージを復号化した状態で第三者のハッキングが行われる場合、メッセージが第三者に容易く漏洩しかねないとの問題もあった。
【0004】
このような問題を解決するために、同型暗号化方法が研究されている。同型暗号化によると、暗号化された情報を復号化せずに、暗号文そのもので演算を行うとしても、平文に対して演算した後、暗号化した値と同じ結果を得ることができる。そのため、暗号文を復号化していない状態で各種演算を行うことができる。
【0005】
しかし、従来の同型暗号文は、足し算及び掛け算などの一部の演算のみをサポートしていたとの点において、同型暗号文に対して比較演算のような非多項式演算を適用することができる方法が求められている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、近似暗号化された暗号文に対し、比較演算のような非多項式演算を行うための装置及び方法を提供することにある。
【課題を解決するための手段】
【0007】
本発明は、以上のような目的を達成するためのものであって、本暗号文演算方法は、複数の同型暗号文に対する比較演算命令を入力されるステップと、前記比較演算命令に対応する合成関数に、前記複数の同型暗号文を反映して演算するステップと、前記演算された同型暗号文を出力するステップとを含む。
【0008】
この場合、前記合成関数は、2-αの正確度に対応し、θ(α)又はθ(αlogα)の複雑度(complexity)を有してよい。
【0009】
一方、前記比較演算は、最大値算出又は最小値算出であり、前記演算するステップは、平方根演算に対応する合成関数を用いて前記最大値算出又は前記最小値算出を演算してよい。
【0010】
この場合、前記平方根演算に対応する合成関数は、入力値を初期値として有する第1変数と、前記入力値から1を引いた値を初期値として有する第2変数とを含む第1関数、及び前記第2変数を含む第2関数を予め設定された回数分繰り返し演算してよい。
【0011】
なお、前記予め設定された回数は、前記平方根演算の誤差率に対応する回数であってよい。
【0012】
一方、前記比較演算は、大きさの比較に応じて、予め設定された値を出力する演算であり、前記演算するステップは、インバース(inverse)演算に対応する関数演算を含む合成関数を予め設定された回数分繰り返し演算してよい。
【0013】
一方、前記比較演算は、大きさの比較に応じて、予め設定された値を出力する演算であり、前記演算するステップは、符号関数に対応する合成関数を用いて予め設定された回数分繰り返し演算してよい。
【0014】
この場合、前記符号関数に対応する合成関数は、0より大きい入力値に対しては、出力値が1に近づき、0より小さい入力値に対しては、出力値が-1に近づくようにする合成関数であってよい。
【0015】
一方、前記演算するステップは、前記符号関数に対応する近似関数であり、相互異なる2つ以上の合成関数を用いて前記比較演算を行ってよい。
【0016】
一方、本発明の一実施形態に係る演算装置は、少なくとも1つのインストラクション(instruction)を保存するメモリと、前記少なくとも1つのインストラクションを行うプロセッサとを含み、前記プロセッサは、前記少なくとも1つのインストラクションを行うことで、複数の同型暗号文に対する比較演算命令を入力されると、前記比較演算命令に対応する合成関数に、前記複数の同型暗号文を反映して演算し、前記演算された同型暗号文を出力する。
【0017】
この場合、前記比較演算は、最大値算出又は最小値算出であり、前記プロセッサは、平方根演算に対応する合成関数を用いて前記最大値算出又は前記最小値算出を演算してよい。
【0018】
一方、前記比較演算は、大きさの比較に応じて、予め設定された値を出力する演算であり、前記プロセッサは、インバース(inverse)演算に対応する関数演算を含む合成関数を予め設定された回数分繰り返し演算してよい。
【0019】
一方、前記比較演算は、大きさの比較に応じて、予め設定された値を出力する演算であり、前記プロセッサは、符号関数に対応する合成関数を用いて予め設定された回数分繰り返し演算してよい。
【0020】
一方、前記符号関数に対応する合成関数は、0より大きい入力値に対しては、出力値が1に近づき、0より小さい入力値に対しては、出力値が-1に近づくようにする合成関数であってよい。
【0021】
一方、前記プロセッサは、前記符号関数に対応する近似関数であり、相互異なる2つ以上の合成関数を用いて前記比較演算を行ってよい。
【発明の効果】
【0022】
以上説明したように、本発明によれば、同型暗号文処理方法は、合成関数を用いて、近似暗号化された暗号文に対する比較演算を行うことができるようになる。更に、本発明で提案した合成関数は、複雑度が低いため、正確度が高くなったとしても、より速い演算ができるようになる。
【図面の簡単な説明】
【0023】
【
図1】本発明の一実施形態に係るネットワークシステムの構造を説明するための図である。
【
図2】本発明の一実施形態に係る演算装置の構成を示すブロック図である。
【
図3】本発明の演算装置の演算動作を説明するための図である。
【
図4】本発明の一実施形態に係る暗号文演算方法を説明するためのフローチャートである。
【
図5】本発明の一実施形態により、インバース演算を合成関数を用いて計算する方法を説明するための図である。
【
図6】本発明の一実施形態により、平方根演算を合成関数を用いて計算する方法を説明するための図である。
【
図7】本発明の一実施形態に係る最大値計算及び最小値計算方法を説明するための図である。
【
図8】本発明の第1実施形態に係る大きさの比較方法を説明するための図である。
【
図9】本発明の第2実施形態に係る大きさの比較方法を説明するための図である。
【
図10】符号関数の勾配に対応する合成関数を求める方法を説明するための図である。
【
図11】本発明の第3実施形態に係る大きさの比較方法を説明するための図である。
【
図12】符号関数に対応する合成関数の繰り返し回数別の形態を示す図である。
【
図13】符号関数に関連する多様な合成関数の繰り返し回数別の形態を示す図である。
【発明を実施するための形態】
【0024】
以下では、添付図面を参照し、本発明について詳細に説明する。本発明において、処理される情報(データ)伝送過程は、必要に応じて、暗号化/復号化が適用されてよく、本発明及び特許請求範囲で情報(データ)伝送過程を説明する表現は、格別に言及されなくても、いずれも暗号化/復号化する場合も含むものとして解釈されるべきである。本発明において、「AからBに伝送(伝達)」又は「AがBから受信」のような表現は、中間に他の媒介体が含まれて伝送(伝達)又は受信されることも含み、必ずしもAからBまで直接伝送(伝達)又は受信されるものだけを表現するわけではない。
【0025】
本発明の説明において、各ステップの順番は、先行段階が論理的及び時間的に必ず後続段階より前に行われなければならない場合でなければ、各段階の順番は非制限的に理解されるべきである。即ち、上記のような例外的な場合を除いては、後続段階として説明された過程が先行段階として説明された過程より前に行われるとしても、開示の本質には影響がなく、権利範囲も段階の順番によらず定義されるべきである。そして、本明細書において、「A又はB」との記載は、AとBとのいずれか一方を選択的に指すだけでなく、AとBとのいずれもを含むことも意味するものとして定義される。なお、本発明で「含む」との用語は、含むものとして並べ立てられた要素の他に、他の構成要素を更に含むことも包括する意味を有する。
【0026】
本開示においては、本発明の説明に必要な必須の構成要素のみを説明し、本発明の本質と関係のない構成要素については言及しないこととする。そして、言及される構成要素のみを含む排他的な意味として解釈されてはならず、他の構成要素も含むことができる非排他的な意味として解釈されるべきである。
【0027】
そして、本開示において、「値」とは、スカラー値だけでなく、ベクトルも含む概念で定義される。
【0028】
後述する本発明の各段階の数学的な演算及び算出は、当該演算又は算出を行うために、公知となっているコーディング方法及び/又は本開示に好適に考案されたコーディングによってコンピュータ演算で実現されてよい。
【0029】
以下で説明する具体的な数式は、可能な限り、複数の代案のうち、例示的に説明されるものであり、本発明の権利範囲が本発明に言及された数式に制限されるものとして解釈されてはならない。
【0030】
説明の便宜上、本発明では、次のように表記を定めることにする。
【0031】
a←D:分布(D)に応じて、元素(a)を選択する
s1、s2∈R:S1、S2のそれぞれは、R集合に属する元素である
mod(q):q元素でモジュール(module)演算
「-」:内部値を四捨五入する
以下では、添付図面を用いて、本発明の多様な実施形態について具体的に説明する。
【0032】
図1は、本発明の一実施形態に係るネットワークシステムの構造を説明するための図である。
【0033】
図1を参照すると、ネットワークシステムは、複数の電子装置100-1~100-n、第1サーバ装置200、第2サーバ装置300を含んでよく、各構成は、ネットワーク10を介して相互接続されてよい。
【0034】
ネットワーク10は、多様な形態の有・無線通信ネットワーク、放送通信ネットワーク、光通信ネットワーク、クラウドネットワークなどで実現されてよく、各装置は、別途の媒介体なしに、Wi-Fi、ブルートゥース、NFC(Near Field Communication)などのような方式で接続されてよい。
【0035】
図1においては、電子装置が、複数100-1~100-nであるとして示しているが、必ずしも複数の電子装置が使用されなければならないわけではなく、1つの装置が使用されてよい。一例として、電子装置100-1~100-nは、スマートフォン、タブレット、ゲームプレイヤ、パソコン、ラップトップ、ホームサーバ、キオスク端末などのような多様な装置で実現されてよく、その他に、IoT機能付きの家電製品で実現されてよい。
【0036】
ユーザは、自らが使用する電子装置100-1~100-nを介して多様な情報を入力してよい。入力された情報は、電子装置100-1~100-nそのものに保存されてよいが、保存容量及びセキュリティなどを理由に、外部装置に伝送されて保存されてよい。
図1において、第1サーバ装置200は、このような情報を保存する役割を担い、第2サーバ装置300は、第1サーバ装置200に保存された情報の一部又は全部を用いる役割を担ってよい。
【0037】
各電子装置100-1~100-nは、入力された情報を同型暗号化し、同型暗号文を第1サーバ装置200に伝送してよい。
【0038】
各電子装置100-1~100-nは、同型暗号化を行う過程で算出される暗号化ノイズ、即ち、エラーを暗号文に含めてよい。具体的には、各電子装置100-1~100-nから生成する同型暗号文は、以後、秘密鍵を用いて復号化した際、メッセージ及びエラー値を含む結果値が復元される形で生成されてよい。
【0039】
一例として、電子装置100-1~100-nから生成される同型暗号文は、秘密鍵を用いて復号化した際、次のような性質を満たす形で生成されてよい。
【0040】
【数1】
ここで、<、>は、内在的演算(usual inner product)、ctは暗号文、skは秘密鍵、Mは平文メッセージ、eは暗号化エラー値、mod qは暗号文のモデュラス(Modulus)を意味する。qは、スケーリングファクタ(scaling factor)(Δ)がメッセージに掛け算された結果値Mより大きい値に選択されなければならない。エラー値eの絶対値がMに比べて十分に小さい値である場合、暗号文の復号化値M+eは、有効数字演算で本来のメッセージを同じ精度に代替できる値である。復号化されたデータのうち、エラーは最下位ビット(LSB)側に配置され、Mは、最下位から2番目のビット側に配置されてよい。
【0041】
メッセージの大きさが小さすぎるか大きすぎる場合、スケーリングファクタを用いて、その大きさを調節することもできる。スケーリングファクタを使用するようになると、整数のメッセージだけでなく、実数のメッセージまで暗号化できるようになるため、活用性が大幅に増大することができる。なお、スケーリングファクタを用いて、メッセージの大きさを調節することで、演算が行われてからの暗号文でメッセージの存在する領域、即ち、有効領域の大きさも調節されてよい。
【0042】
実施形態によって、暗号文のモジュラスqは、多様な形態に設定されて使用されてよい。一例として、暗号文のモジュラスは、スケーリングファクタΔのべき乗q=ΔLの形態に設定されてよい。Δが2なら、q=210のような値に設定されてよい。
【0043】
第1サーバ装置200は、受信された同型暗号文を復号化せずに、暗号文の状態で保存してよい。
【0044】
第2サーバ装置300は、同型暗号文に対する特定の処理結果を第1サーバ装置200にリクエストしてよい。第1サーバ装置200は、第2サーバ装置300のリクエストに応じて特定演算を行った後、その結果を第2サーバ装置300に伝送してよい。
【0045】
一例として、2つの電子装置100-1、100-2の伝送した暗号文ct1、ct2が、第1サーバ装置200に保存された場合、第2サーバ装置300は、両電子装置100-1、100-2から提供された情報を合算した値を、第1サーバ装置200にリクエストしてよい。第1サーバ装置200は、リクエストに応じて、2つの暗号文を合算する演算を行った後、その結果値(ct1+ct2)を第2サーバ装置300に伝送してよい。
【0046】
同型暗号文の性質上、第1サーバ装置200は復号化を行っていない状態で演算を行ってよく、その結果値も暗号文の形態になる。本発明では、演算によって獲得された結果値を演算結果暗号文と称する。
【0047】
第1サーバ装置200は、演算結果暗号文を第2サーバ装置300に伝送してよい。第2サーバ装置300は、受信された演算結果暗号文を復号化し、各同型暗号文に含まれたデータの演算結果値を獲得してよい。
【0048】
第1サーバ装置200は、ユーザのリクエストに応じて、演算を複数回行ってよい。そのとき、第1サーバ装置200は、足し算、引き算及び掛け算のみで構成される演算だけでなく、インバース演算、平方根演算を含む演算も行ってよい。なお、第1サーバ装置200は、最大値算出、最小値算出、及び大きさの比較のような比較演算も行うことができる。このように、第1サーバ装置200は、演算動作を行うことができる点において、演算装置と称してよい。
【0049】
このとき、第1サーバ装置200は、比較演算を行うことにおいて、非多項式演算に対応する合成関数を用いて、演算を行うことができる。本発明に係る合成関数は、2-αの正確度に対応し、θ(α)又はθ(αlogα)の複雑度(complexity)を有するため、正確度が高くなる場合に、従来より速い演算が可能になる。
【0050】
一方、
図1においては、第1電子装置及び第2電子装置で暗号化を行い、第2サーバ装置が復号化を行う場合を示しているが、それに限らない。
【0051】
図2は、本発明の一実施形態に係る演算装置の構成を示すブロック図である。
【0052】
具体的に、
図1のシステムにおいて、第1電子装置、第2電子装置などのように同型暗号文を行う装置、第1サーバ装置などのように同型暗号文を演算する装置、第2サーバ装置などのように同型暗号文を復号する装置などを演算装置と称してよい。このような演算装置は、PC(Personal computer)、ノートパソコン、スマートフォン、タブレット、サーバなど多様な装置であってよい。
【0053】
図2を参照すると、演算装置400は、通信装置410、メモリ420、ディスプレイ430、操作入力装置440及びプロセッサ450を含んでよい。
【0054】
通信装置410は、演算装置400を外部装置(図示せず)と接続するために形成され、ローカル・エリア・ネットワーク(LAN:Local Area Network)及びインターネット網を介して、外部装置に接続される形態だけでなく、USB(Universal Serial Bus)ポート又は無線通信(例えば、WiFi 802.11a/b/g/n、NFC、Bluetooth)ポートを介して接続される形態も可能である。このような通信装置410は、送受信部(transceiver)と称してよい。
【0055】
通信装置410は、公開鍵を外部装置から受信してよく、演算装置400自ら生成した公開鍵を外部装置に伝送してよい。
【0056】
そして、通信装置410は、外部装置からメッセージを受信してよく、生成した同型暗号文を外部装置に送信してよい。
【0057】
なお、通信装置410は、暗号文の生成に必要な各種パラメータを外部装置から受信してよい。一方、実現時は、各種パラメータは、後述する操作入力装置440を介してユーザから直接入力されてよい。
【0058】
なお、通信装置410は、外部装置から同型暗号文に対する演算をリクエストされてよく、それにより、計算された結果を外部装置に伝送してよい。ここで、リクエストされた演算は、足し算、引き算、掛け算のような演算であってよく、非多項式演算である比較演算であってよい。
【0059】
メモリ420には、演算装置400に関する少なくとも1つのインストラクション(instruction)が保存されてよい。具体的に、メモリ420には、本開示の多様な実施形態によって、演算装置400が動作するための各種プログラム(又は、ソフトウェア)が保存されてよい。
【0060】
このようなメモリ420は、RAMやROM、フラッシュメモリ、HDD、外付けメモリ、メモリカードなどのような多様な形態で実現されてよく、何れかに限定されるものではない。
【0061】
メモリ420は、暗号化するメッセージを保存してよい。ここで、メッセージとは、ユーザが引用する各種信用情報、個人情報などであってよく、演算装置400で使用される位置情報、インターネット使用時間情報など、使用履歴などに関連する情報であってよい。
【0062】
そして、メモリ420は、公開鍵を保存してよく、演算装置400が直接公開鍵を生成した装置である場合、秘密鍵だけでなく、公開鍵及び秘密鍵の生成に必要な各種パラメータを保存してよい。
【0063】
そして、メモリ420は、後述する過程で生成された同型暗号文を保存してよい。そして、メモリ420は、外部装置から伝送した同型暗号文を保存してよい。なお、メモリ420は、後述する演算過程における結果物である演算結果暗号文を保存してよい。
【0064】
ディスプレイ430は、演算装置400のサポートする機能を選択されるためのユーザインターフェースウィンドウを表示する。具体的に、ディスプレイ430は、演算装置400の提供する各種機能を選択されるためのユーザインターフェースウィンドウを表示してよい。このようなディスプレイ430は、LCD(liquid crystal display)、OLED(Organic Light Emitting Diodes)などのようなモニタであってよく、後述する操作入力装置440の機能を同時に実行することができるタッチスクリーンで実現されてよい。
【0065】
ディスプレイ430は、秘密鍵及び公開鍵の生成に必要なパラメータの入力をリクエストするメッセージを表示してよい。そして、ディスプレイ430は、暗号化対象がメッセージを選択するメッセージを表示してよい。一方、実現時は、暗号化対象は、ユーザが直接選択してよく、自動的に選択されてよい。即ち、暗号化の必要な個人情報などは、ユーザが直接メッセージを選択しなくても、自動的に設定されてよい。
【0066】
操作入力装置440は、ユーザから演算装置400の機能選択及び当該機能に対する制御命令を入力されてよい。具体的に、操作入力装置440は、ユーザから秘密鍵及び公開鍵の生成に必要なパラメータを入力されてよい。なお、操作入力装置440は、ユーザから暗号化されるメッセージを設定されてよい。
【0067】
プロセッサ450は、演算装置400の動作全般を制御する。具体的に、プロセッサ450は、メモリ420に保存された少なくとも1つのインストラクションを実行することで、演算装置400の動作を全般的に制御してよい。このようなプロセッサ450は、CPU(central processing unit)、ASIC(application-specific integrated circuit)のような単一装置で構成されてよく、CPU、GPU(Graphics Processing Unit)などの複数の装置で構成されてよい。
【0068】
プロセッサ450は、伝送しようとするメッセージが入力されると、メモリ420に保存してよい。そして、プロセッサ450は、メモリ420に保存された各種設定値及びプログラムを用いて、メッセージを同型暗号化してよい。この場合、公開鍵が使用されてよい。
【0069】
プロセッサ450は、暗号化を行うのに必要な公開鍵を自ら生成して使用してよく、外部装置から受信して使用してよい。一例として、復号化を行う第2サーバ装置300が公開鍵を他の装置に配信してよい。
【0070】
自ら鍵を生成する場合、プロセッサ450は、Ring-LWE技法を用いて公開鍵を生成してよい。具体的に説明すると、プロセッサ450は、まず。各種パラメータ及びリングを設定し、メモリ420に保存してよい。パラメータの例としては、平文メッセージビットの長さ、公開鍵及び秘密鍵の大きさなどがあってよい。
【0071】
リングは、次のような数式で表現されてよい。
【0072】
【数2】
ここで、Rはリング、Zqは係数、f(x)はn次多項式である。
【0073】
リング(Ring)とは、予め設定された係数を有する多項式の集合であって、元素の間で足し算と掛け算とが定義されており、足し算と掛け算とに対しては閉じている集合を意味する。このようなリングは、環と称してよい。
【0074】
一例として、リングは、係数がZqであるn次多項式の集合を意味する。具体的には、nがΦ(n)である際、N次円分多項式(n-th cyclotomic polynomial)を意味する。(f(x))とは、f(x)として生成されるZq[x]のアイディール(ideal)を示す。Euler totient関数Φ(N)とは、Nと互いに素であり、Nより小さい自然数の数を意味する。ΦN(x)をN次円分多項式と定義すると、リングは次のような数式3でも表されてよい。
【0075】
【数3】
秘密鍵(sk)は、次のように表現されてよい。
【0076】
一方、上述の数式3のリングは、平文空間で複素数を有する。一方、同型暗号文に対する演算速度を向上するために、上述のリングの集合のうち、平文空間が実数である集合のみを利用してよい。
【0077】
このようなリングが設定されると、プロセッサ450はリングから秘密鍵(sk)を算出してよい。
【0078】
【数4】
ここで、s(x)は小さい係数でランダムに生成した多項式を意味する。
【0079】
そして、プロセッサ450は、リングから第1ランダム多項式(a(x))を算出する。第1ランダム多項式は、次のように表現されてよい。
【0080】
【数5】
なお、プロセッサ450は、エラーを算出してよい。具体的に、プロセッサ450は、離散ガウシアン分布又はそれと統計的距離の近い分布からエラーを抽出してよい。このようなエラーは、次のように表されてよい。
【0081】
【数6】
エラーまで算出されると、プロセッサ450は第1ランダム多項式及び秘密鍵にエラーをモデュラー演算し、第2ランダム多項式を算出してよい。第2ランダム多項式は、次のように表されてよい。
【0082】
【数7】
最終的に公開鍵(pk)は、第1ランダム多項式及び第2ランダム多項式を含む形態として、次のように設定される。
【0083】
【数8】
上述の鍵生成方法は一例に過ぎないため、必ずしもそれに限定されるものではなく、その他の方法で公開鍵及び秘密鍵を生成し得ることは勿論である。
【0084】
一方、プロセッサ450は公開鍵が生成されると、他の装置に伝送されるように通信装置410を制御してよい。
【0085】
そして、プロセッサ450は、メッセージに対する同型暗号文を生成してよい。具体的に、プロセッサ450は、メッセージに対して、先に生成された公開鍵を適用して同型暗号文を生成してよい。このとき、プロセッサ450は、暗号文の長さをスケーリングファクタの大きさに対応するように生成してよい。
【0086】
そして、プロセッサ450は、同型暗号文が生成されると、メモリ420に保存するか、ユーザのリクエスト又は予め設定されたデフォルトコマンドに応じて、同型暗号文を他の装置に伝送するように通信装置410を制御してよい。
【0087】
一方、本発明の一実施形態によると、パッキング(Packing)が行われてよい。同型暗号化でパッキングを利用するようになると、複数のメッセージを1つの暗号文で暗号化することが可能になる。この場合、演算装置400で各暗号文の間の演算を行うと、結果的に複数のメッセージに対する演算が並列的に処理されるため、演算の負担が大幅に軽減する。
【0088】
具体的に、プロセッサ450は、メッセージが複数のメッセージベクトルで行われる場合、複数のメッセージベクトルを並列的に暗号化できる形態の多項式に変換した後、その多項式にスケーリングファクタを乗算し、公開鍵を用いて同型暗号化してよい。それにより、複数のメッセージベクトルをパッキングした暗号文を生成してよい。
【0089】
そして、プロセッサ450は、同型暗号文に対する復号が必要な場合、同型暗号文に秘密鍵を適用して多項式形態の復号文を生成し、多項式形態の復号文をデコードしてメッセージを生成してよい。このとき、生成したメッセージは、上述した数式1で言及したように、エラーを含んでよい。
【0090】
そして、プロセッサ450は、暗号文に対する演算を行ってよい。具体的に、プロセッサ450は、同型暗号文に対して暗号化された状態を維持した状態で、足し算、引き算又は掛け算などの演算を行ってよい。
【0091】
なお、プロセッサ450は、暗号文に対しても、足し算、引き算又は掛け算以外の演算を有する多項式に対する演算を行ってよい。具体的に、同型暗号文は、足し算、引き算、掛け算に対しては閉じているが、その他の演算に対しては閉じていない。
【0092】
従って、足し算、引き算、掛け算以外の演算に対しては、上述の3つの演算で表現される近似演算式を用いなければならない。このような点において、プロセッサ450は、足し算、引き算又は掛け算以外の演算に対しては、リクエストされる演算に対応する近似関数を用いて演算を行ってよい。
【0093】
そのために、従来広く知られる近似関数(例えば、Taylor、Least square、minimax)を用いてよいが、従来の近似関数は、正確度(2-α)に対して複雑度はθ(2α/2)を有する。即ち、従来の方式は、正確度に対して指数的に演算を複雑になるため、正確度が高まるほど多くの演算時間が必要になる。
【0094】
このような問題点を解決するために、本開示では、2-αの正確度に対応してθ(α)又はθ(αlogα)の複雑度(complexity)を有する合成関数、即ち、近似関数を用いる。具体的に、本発明では、一般的な多項式より効率的な評価を有する構造化された多項式(well-structured polynomials)、即ち、合成関数を用いる。
【0095】
本発明では、インバース演算、平方根、最大値又は最小値、大きさの比較のそれぞれに対する合成関数を提案し、各演算に対する合成関数の適用方式は、
図5ないし
図10を参照して後述する。
【0096】
そして、演算装置400は演算が完了すると、演算結果データから有効領域のデータを検出してよい。具体的に、演算装置400は、演算結果データをラウンディング処理を行って有効領域のデータを検出してよい。ラウンディング処理とは、暗号化された状態でメッセージの四捨五入(round-off)を行うことを意味し、他には、リスケーリング(rescaling)と称してよい。
【0097】
なお、演算装置400は、演算結果暗号文内の近似メッセージ割合がしきい値を超過すると、暗号文に対するリブート動作を行ってよい。
【0098】
図3は、本発明の演算装置の演算動作を説明するための図である。
【0099】
図3を参照すると、各同型暗号文10、20は、近似メッセージ領域11、21をそれぞれ含んでよい。近似メッセージ領域11、21には、メッセージ及びエラー(m1+e1、m2+e2)が一緒に入っている。
【0100】
演算装置400は、両同型暗号文10、20を入力値とし、特定の演算を行ってよい。このような演算は、足し算、引き算、掛け算で構成される多項式演算であってよく、近似関数の利用が必要な多項式演算又は非多項式演算であってよい。
【0101】
非多項式演算で最も代表的な演算は比較演算で、最大値算出、最小値算出、大きさの比較であってよい。最大値算出は、2値のうち大きい値を出力するものであり、最小値算出は2値のうち最小値を出力するものであり、大きさの比較はいずれか一方の値が大きい場合は1を出力し、他方の値が大きい場合は0を出力し、2値が同じである場合は1/2を出力するものである。一方、大きさの比較の際に出力される数値は一例に過ぎず、実現時は他の値を出力するように実現してよい。
【0102】
最大値算出は、以下のような数式9で表してよく、最小値算出は、以下のような数行10で表してよい。
【0103】
【数9】
ここで、aは第1同型暗号文、bは第2同型暗号文、max(a、b)は第1同型暗号文と第2同型暗号文のうち、大きい値を有する同型暗号文の値を出力する関数である。
【0104】
【数10】
ここで、aは第1同型暗号文、bは第2同型暗号文、min(a、b)は第1同型暗号文と第2同型暗号文のうち、小さい値を有する同型暗号文の値を出力する関数である。
【0105】
上述の数式9、10を参照すると、足し算、引き算、定数2割などは、同型暗号文の状態で演算してよいが、平方根演算は同型暗号文の状態ではできない。従って、平方根演算に対しては近似多項式が必要であり、入力値を初期値として有する第1変数と、入力値から1を引いた値を初期値として有する第2変数に対する第1関数と、第2変数を有する第2関数を予め設定された回数分繰り返し演算する合成関数を用いる。平方根演算の具体的な動作は、
図6を参照して後述する。
【0106】
このような平方根演算に対応する合成関数を用いると、最大値算出及び最小値算出は、次のように表してよい。
【0107】
【0108】
【数12】
ここで、aは第1同型暗号文、bは第2同型暗号文、dは繰り返し回数、Sqrt((a-b)
2;d)は、平方根演算に対応する合成関数である。
【0109】
大きさの比較は、
【0110】
【数13】
のような数式を繰り返し演算することで近似してよく、上述の大きさの比較に対応する数式は、同型暗号文に対するインバース演算を含む。インバース演算は、同型暗号文状態で直ちにできないため、本発明では、インバース演算に対応する合成関数を用いる。インバース演算の具体的な動作は、
図5を参照して後述する。
【0111】
一方、大きさの比較は、符号関数を用いて近似してよく、このような符号関数は0ではない入力値における関数出力値が水平になるようにする合成関数(即ち、0より大きい入力値に対しては出力値が1に近づき、0より小さい入力値に対しては出力値が-1に近づくようにする合成関数)及び/又は0ではない入力値で関数出力値が水平になるようにする合成関数で近似化することもできる。このような合成関数を用いる動作については、
図9及び
図10を参照して後述する。
【0112】
一方、上述の演算による暗号文30は、各近似メッセージの間の演算結果(m3+e3)が盛り込まれた近似メッセージ領域310を含んでよい。もし、平文空間32がなくなるか、限界値より小さくなる場合、演算装置400はリブート動作を行ってよい。
【0113】
図4は、本発明の一実施形態に係る暗号文演算方法を説明するためのフローチャートである。
【0114】
図4を参照すると、複数の同型暗号文に対する比較演算命令を受信してよい(S410)。このような命令は、外部装置から入力されてよく、演算装置で直接入力されてよい。そして、このような比較演算は、最小値算出、最大値算出、大きさの比較のうちのいずれかであってよい。
【0115】
そして、比較演算命令に対応する合成関数に複数の同型暗号文を反映して演算してよい(S420)。具体的に、θ(α)又はθ(αlogα)の複雑度(complexity)を有する合成関数を用いて比較演算を行ってよい。
【0116】
そして、演算された同型暗号文を出力してよい(S430)。具体的に、演算をリクエストした装置に演算結果を出力してよい。
【0117】
以上のように、本発明に係る暗号文演算方法は、2-αの正確度に対応し、θ(α)又はθ(αlogα)の複雑度(complexity)で演算を行ってよいため、高い正確度が必要な場合でも、より早く演算を行うことができる。
【0118】
図5は、本発明の一実施形態により、インバース演算を合成関数を用いて計算する方法を説明するための図である。
【0119】
図5を参照すると、変数x及び正の数dに対するインバース関数(Inv(x;d))は、2から入力値(x)を引いた値を初期値(a
0)として有する第1変数(a
n)と、1から入力値(x)を引いた値を初期値(b
0)として有する第2変数(b
n)がセットされ、その後、第2変数(b
n)を有する第1関数(b
2
n)と、第1変数(a
n)と第2変数(b
n)とを有する第2関数(a
n・(1+B
n+1))とが予め設定された回数分、繰り返される合成関数である。
【0120】
このようなインバース関数は、以下の数式13のようなGoldschmidts’分割アルゴリズムは変更したものである。
【0121】
【数14】
このようなインバースに対する合成関数は、θ(α)の複雑度のみを有する。
【0122】
図6は、本発明の一実施形態により、平方根演算を合成関数を用いて計算する方法を説明するための図である。
【0123】
図6を参照すると、変数x及び正の数dに対する平方根演算(Sqrt(x;d))は、初期に入力値(x)を初期値(a
0)として有する第1変数(a
n)と、入力値(x)から1を引いた値を初期値(b
0)として有する第2変数(b
n)とがセットされ、その後、第1変数(a
n)と第2変数(b
n)とを有する第1関数
【0124】
【0125】
【数16】
とが予め設定された回数分、繰り返される合成関数である。
【0126】
同じ平方根に対する合成関数は、エラーバウンド(Error bound)2-αに対し、θ(α)の複雑度を有する。
【0127】
図7は、本発明の一実施形態に係る最大値計算及び最小値計算方法を説明するための図である。
【0128】
図7を参照すると、最大値計算及び最小値計算は、上述の数式9、10のように表してよく、数式9または10内の平方根演算は、
図6に示すような平方根演算に対する合成関数を用いてよい。
【0129】
例えば、同型暗号文A、Bに対する最大値計算がリクエストされると、演算装置700は、
図7に示すように、[1](A+B)/2値と(A-B)/2値は計算し、[2](A-B)/2を二乗計算し、二乗計算された値を平方根演算に対応する合成関数を用いて予め設定された回数(d)分繰り返し、[3]合成関数の結果と、既に計算した(A+B)/2値を足して最大値を算出してよい。
【0130】
一方、同型暗号文A、Bに対する最小値の計算がリクエストされると、演算装置700は、
図7に示すように、[1](A+B)/2値と(A-B)/2値は計算し、[2](A-B)/2を二乗計算し、二乗計算された値を平方根演算に対応する合成関数を用いて予め設定された回数(d)分繰り返し、[3]既に計算した(A+B)/2値に合成関数の結果を引いて最小値を算出してよい。
【0131】
一方、以上では、2つの値のみを比較し、最大値又は最小値を出力するものとして示して説明しているが、実現時には、3つ以上の同型暗号部に対しても、最大値算出及び最小値算出を行うこともできる。例えば、3つの同型暗号文があれば、第1と第2暗号文を比較した後、その結果と残りの同型暗号文とを比較し、3つのうち最も大きい値、又は3つのうち最も小さい値を算出することもできる。
【0132】
図8は、本発明の第1実施形態に係る大きさの比較方法を説明するための図である。
【0133】
例えば、2値が異なる場合、0または1を出力し、2値が同じである場合、0.5を出力する比較関数は、次のように近似化することができる。
【0134】
【数17】
ここで、aは第1同型暗号文、bは第2同型暗号文、comp(a、b)は入力された2つの同型暗号文を比較し、aが大きい場合に1を出力し、bが大きい場合に0を出力し、aと比が同じである場合に0.5を出力する関数である。
【0135】
数式14を参照すると、比較関数に対する近似関数はインバース演算が含まれている。よって、数式14のようにな近似関数を用いて、同型暗号文A、Bに対する大きさの比較演算を行う場合、演算装置400は、
図8に示すように、初期値(a
0、b
0)を算出し、初期値算出の後、[1]
図5に関連して説明したようなインバースに対応する合成関数を用いて、Inv(a
m
n+b
m
n;d)演算を行うことができる。そして、[2]インバース演算値に、a
m
n値を掛け算、[3]1に先立って計算された値(a
n+1)を引く演算を予め設定された回数(t)分繰り返し、比較演算結果値を算出してよい。
【0136】
図9は、本発明の第2実施形態に係る大きさの比較方法を説明するための図である。
【0137】
一方、大きさの比較関数は、以下のように、符号関数として表してよい。
【0138】
【数18】
ここで、aは第1同型暗号文、bは第2同型暗号文、comp(a、b)は入力された2つの同型暗号文を比較し、aが大きい場合に1を出力し、bが大きい場合に0を出力し、aと比が同じである場合に0.5を出力する関数である。そして、sgn()は符号関数である。
【0139】
よって、大きさの比較関数に対する近似化は、符号関数に対する近似化として表してよい。
【0140】
符合関数が同じ数式16を満たす場合、符号関数計算のための合成関数は、以下のような数式17のように表してよい。
【0141】
【0142】
【数20】
このような符号関数計算のための合成関数は、0より大きい入力値に対しては、出力値が1に近づき、0より小さい入力値に対しては、出力値が-1に近づくようにする合成関数である。
【0143】
図9を参照すると、同型暗号文に対する大きさの比較演算命令がリクエストされると、演算装置400は、[1]2値の差を計算する演算(a-b)、[2]当該演算値を数式17を用いて、予め設定された回数(d)分繰り返し演算するステップ、[3]演算値に定数演算を行うステップを行い、比較演算を行ってよい。
【0144】
一方、
図9の方式は、符号関数が両端が1又は-1で収束するように、即ち、水平になるようにする方式を用いるものである。一方、理想的な符号関数の別の特徴は、0の値で勾配が無限の値、即ち、0における勾配が垂直にならなければならない点において、以下では、このような点を考慮した合成関数について説明する。
【0145】
図10は、符号関数の勾配に対応する合成関数を求める方法を説明するための図である。
【0146】
大きさの比較関数に対する近似化は、上述したように、符号関数に対する近似化で表してよい。
【0147】
【数21】
ここで、g(x)は、符号関数計算のための更に別の合成関数であり、cは出力値の収束範囲として、1/4、1/3など、1より小さい値に決められてよい。
【0148】
符合関数が、数式18を満たす場合、演算装置400は、
図10に示すような方式を用いてg(x)に対する関数を算出してよい。
【0149】
そして、
図10のような方式で、合成関数を算出した場合、
図9に関連して説明した合成関数の組み合わせを用いて、大きさの比較方法を行ってよい。それについては、
図11を参照して以下で説明する。
【0150】
図11は、本発明の第3実施形態に係る大きさの比較方法を説明するための図である。
【0151】
図11を参照すると、同型暗号文に対する大きさの比較演算命令がリクエストされると、演算装置400は、[1]2値の差を計算する演算(a-b)、[2]当該演算値を
図10のような方式で算出された合成関数(g
n(x))に、予め設定された回数(d
g)分繰り返し演算するステップ、[3]当該演算値を数式17(f
n(x))を用いて、予め設定された回数(d
f)分繰り返し演算するステップ、[4]演算値に定数演算を行うステップを行い、比較演算を行ってよい。
【0152】
図12は、符号関数に対応する合成関数の繰り返し回数別の形態を示す図であり、
図13は、符号関数に関連する多様な合成関数の繰り返し回数別の形態を示す図である。
【0153】
図12を参照すると、
図9に関連して説明した合成関数(f
n(x))は、繰り返し回数が増加するほど、より理想的な形態を有することを確認することができる。
【0154】
図13の左図を参照すると、
図10に関連して説明した合成関数は、
図9の合成関数より大きい勾配を有するが、両端で誤差が生じていることを確認することができる。よって、初期は、
図10の合成関数を用いて、後は、
図9の合成関数を用いる場合、即ち、
図11のような方式で用いた組み合わせられた合成関数を用いると、
図9の合成関数のみを用いるよりも、同じ繰り返し回数に比べて、理想的な形態を有することができる。
【0155】
具体的に、
図13の右図を参照すると、
図9の合成関数を5回適用したものより、
図10の合成関数を2回適用し、
図9の合成関数を3回適用したもののほうが、より理想的な形態を有することを確認することができる。
【0156】
一方、上述の多様な実施形態に係る暗号文処理方法は、各ステップを行うためのプログラムコードで実現され、記録媒体に保存されて配布されてよい。この場合、記録媒体の登載された装置は、上述の暗号化又は暗号文処理などの動作を行うことができる。
【0157】
このような記録媒体は、ROM、RAM、メモリチップ、メモリカード、外付けハード、ハード、CD、DVD、磁気ディスク又は磁気テープなどのような多様なコンピュータ読み取り可能な媒体であってよい。
【0158】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明は以上の実施形態に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的趣旨の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【国際調査報告】