(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-03-11
(54)【発明の名称】同型暗号文に対するリブート演算を行う装置および方法
(51)【国際特許分類】
G09C 1/00 20060101AFI20250304BHJP
【FI】
G09C1/00 620Z
G09C1/00 650Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024547838
(86)(22)【出願日】2023-04-14
(85)【翻訳文提出日】2024-08-14
(86)【国際出願番号】 KR2023005107
(87)【国際公開番号】W WO2023204534
(87)【国際公開日】2023-10-26
(31)【優先権主張番号】10-2022-0048850
(32)【優先日】2022-04-20
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2022-0131799
(32)【優先日】2022-10-13
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2022-0137739
(32)【優先日】2022-10-24
(33)【優先権主張国・地域又は機関】KR
(31)【優先権主張番号】10-2022-0166511
(32)【優先日】2022-12-02
(33)【優先権主張国・地域又は機関】KR
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】519389328
【氏名又は名称】クリプト ラボ インク
【氏名又は名称原語表記】CRYPTO LAB INC.
【住所又は居所原語表記】27-404, 1, Gwanak-ro, Gwanak-gu, Seoul, 08826, Republic of Korea
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(72)【発明者】
【氏名】チョン ジョン ヒ
(72)【発明者】
【氏名】ペ ヨンジン
(72)【発明者】
【氏名】キム ジェヒョン
(57)【要約】
暗号文処理方法が開示される。本暗号文処理方法は、エラーを含む近似メッセージに対する同型暗号文に対する演算を行うステップと、演算によって獲得された演算結果暗号文内の近似メッセージ比重が閾値を超過すると、演算結果暗号文の平文空間を拡張するステップとを含み、平文空間を拡張するステップは、演算結果暗号文に対し、予め設定されたリブート演算を適用して第1の中間暗号文を生成するステップと、演算結果暗号文と第1の中間暗号文との間の減算演算結果に対し、予め設定されたリブート演算を適用して第2の中間暗号文を生成するステップと、第1の中間暗号文に第2の中間暗号文の減算演算を行い、平文空間の拡張された同型暗号文を生成するステップとを含む。
【特許請求の範囲】
【請求項1】
エラーを含む近似メッセージに対する同型暗号文に対する演算を行うステップと、
演算によって獲得された演算結果暗号文内の近似メッセージ比重が閾値を超過すると、上記演算結果暗号文の平文空間を拡張するステップと
を含み、
前記平文空間を拡張するステップは、
前記演算結果暗号文に対し、予め設定されたリブート演算を適用して第1の中間暗号文を生成するステップと、
前記演算結果暗号文と前記第1の中間暗号文との間の減算演算結果に対し、前記予め設定されたリブート演算を適用して第2の中間暗号文を生成するステップと、
前記第1の中間暗号文に前記第2の中間暗号文の減算演算を行い、平文空間の拡張された同型暗号文を生成するステップと
を含む同型暗号文の処理方法。
【請求項2】
前記第1の中間暗号文を生成するステップは、
前記演算結果暗号文の予め設定された範囲を有するようにスケーリングファクタを反映し、スケーリングファクタの反映された演算結果暗号文に対して予め設定されたリブート演算を適用し、前記予め設定されたリブート演算の適用された結果に前記スケーリングファクタを反映し、前記第1の中間暗号文を生成する請求項1に記載の同型暗号文の処理方法。
【請求項3】
前記予め設定された範囲は、
[-1、1]である請求項2に記載の同型暗号文の処理方法。
【請求項4】
前記予め設定された範囲は、
【数1】
であり、ここでkは平文空間を拡張するステップの繰り返し回数、nは精度である請求項2に記載の同型暗号文の処理方法。
【請求項5】
前記予め設定されたリブート演算は、
同型暗号文のモジュラスを拡張するステップと、
前記モジュラスの拡張された同型暗号文を多項式の形に線形変換するステップと、
多項式の形に変換された同型暗号文を予め設定された範囲内の入力値が整数点に近似するように設定された高次方程式を用いて、近似モジュラス演算を行うステップと、
前記近似モジュラス演算の行われた結果を同型暗号文の形に線形変換するステップと
を含む請求項1に記載の同型暗号文の処理方法。
【請求項6】
前記予め設定されたリブート演算は、
前記同型暗号文を多項式の形に線形変換するステップと、
前記多項式の形に線形変換された同型暗号文のモジュラスを拡張するステップと、
前記モジュラスの拡張された結果に近似モジュラス演算を行うステップと、
前記近似モジュラス演算の行われた結果を同型暗号文の形に線形変換するステップと
を含む請求項1に記載の同型暗号文の処理方法。
【請求項7】
エラーを含む近似メッセージに対する同型暗号文を保存するメモリと、
前記同型暗号文に対する演算を行うプロセッサとを含み、
前記プロセッサは、
前記同型暗号文に対し、予め設定されたリブート演算を適用して第1の中間暗号文を生成し、前記演算結果暗号文と前記第1の中間暗号文との間の減算演算結果に対し、前記予め設定されたリブート演算を適用して第2の中間暗号文を生成し、前記第1の中間暗号文に前記第2の中間暗号文の減算演算を行い、平文空間の拡張された同型暗号文を生成する演算装置。
【請求項8】
前記プロセッサは、
前記演算結果暗号文の予め設定された範囲を有するようにスケーリングファクタを反映し、スケーリングファクタの反映された演算結果暗号文に対して予め設定されたリブート演算を適用し、前記予め設定されたリブート演算の適用された結果に前記スケーリングファクタを反映し、前記第1の中間暗号文を生成する請求項7に記載の演算装置。
【請求項9】
前記予め設定された範囲は、
[-1、1]である請求項8に記載の演算装置。
【請求項10】
前記予め設定された範囲は、
【数2】
であり、ここでkは平文空間を拡張するステップの繰り返し回数、nは精度である請求項8に記載の演算装置。
【請求項11】
前記プロセッサは、
同型暗号文のモジュラスを拡張し、前記モジュラスの拡張された同型暗号文を多項式の形に線形変換し、多項式の形に変換された同型暗号文を予め設定された範囲内の入力値が整数点に近似するように設定された高次方程式を用いて、近似モジュラス演算を行い、前記近似モジュラス演算の行われた結果を同型暗号文の形に線形変換し、前記予め設定されたリブート演算を行う請求項7に記載の演算装置。
【請求項12】
前記プロセッサは、
前記同型暗号文を多項式の形に線形変換し、前記多項式の形に線形変換された同型暗号文のモジュラスを拡張し、前記モジュラスの拡張された結果に近似モジュラス演算を行い、前記近似モジュラス演算の行われた結果を同型暗号文の形に線形変換し、前記予め設定されたリブート演算を行う請求項7に記載の演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、同型暗号文に対するリブート方法を効率よく行うための装置および方法に関する。
【背景技術】
【0002】
通信技術が発達し、電子装置の普及が活発化するにつれ、電子装置の間の通信セキュリティを保つための取り組みが引き続き行われている。それにより、多くの通信環境では、暗号化/復号化技術が使われている。
【0003】
暗号化技術によって暗号化されたメッセージが相手に送られると、相手はメッセージを用いるためには、復号化を行う必要がある。この場合、相手は暗号化されたデータを復号化する過程で無駄なリソースおよび時間が発生することになる。
【0004】
なお、相手が演算のために一時的にメッセージを復号化した状態で、第三者によるハッキングが行われる場合、そのメッセージが第三者に簡単に流出しかねないという問題もあった。
【0005】
このような問題を解決するために、同型暗号化方法が研究されている。同型暗号化(homomorphic encryption)によると、暗号化された情報を復号化せずに暗号文そのもので演算を行ったとしても、平文に対して演算を行った後、暗号化した値と同じ結果を得ることができる。よって、暗号文を復号化していない状態で様々な演算を行うことができる。
【0006】
しかし、同型乗算のような同型演算を行うと、同型暗号文内の平文空間が減少することになり、平文空間が一定サイズ以下になると、それ以上の演算ができなくなる。この点において、近年は、同型暗号文の平文空間を拡張できるリブート方法が用いられている。
【0007】
しかし、従来のリブート方法は、スケーリングファクタの反映過程において、エラーとして同時に増幅し、計算の精度が変更しかねない問題があったことから、計算の精度の高いリブート方法が求められている。
【発明の概要】
【発明が解決しようとする課題】
【0008】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、同型暗号文に対するリブート演算を効率よく行うための装置および方法を提供することにある。
【課題を解決するための手段】
【0009】
本発明は、以上のような目的を達成するためのものとして、本発明の一実施例に係る同型暗号文の処理方法は、エラーを含む近似メッセージに対する同型暗号文に対する演算を行うステップと、演算によって獲得された演算結果暗号文内の近似メッセージ比重が閾値を超過すると、上記演算結果暗号文の平文空間を拡張するステップとを含み、前記平文空間を拡張するステップは、前記演算結果暗号文に対し、予め設定されたリブート演算を適用して第1の中間暗号文を生成するステップと、前記演算結果暗号文と前記第1の中間暗号文との間の減算演算結果に対し、前記予め設定されたリブート演算を適用して第2の中間暗号文を生成するステップと、前記第1の中間暗号文に前記第2の中間暗号文の減算演算を行い、平文空間の拡張された同型暗号文を生成するステップとを含む。
【0010】
この場合、前記第1の中間暗号文を生成するステップは、前記演算結果暗号文の予め設定された範囲を有するようにスケーリングファクタを反映し、スケーリングファクタの反映された演算結果暗号文に対して予め設定されたリブート演算を適用し、前記予め設定されたリブート演算の適用された結果に前記スケーリングファクタを反映し、前記第1の中間暗号文を生成してよい。
【0011】
この場合、前記予め設定された範囲は、[-1、1]であってよい。
【0012】
一方、前記予め設定された範囲は、
【数1】
であり、ここでkは平文空間を拡張するステップの繰り返し回数、nは精度であってよい。
【0013】
一方、前記予め設定されたリブート演算は、同型暗号文のモジュラスを拡張するステップと、前記モジュラスの拡張された同型暗号文を多項式の形に線形変換するステップと、多項式の形に変換された同型暗号文を予め設定された範囲内の入力値が整数点に近似するように設定された高次方程式を用いて、近似モジュラス演算を行うステップと、前記近似モジュラス演算の行われた結果を同型暗号文の形に線形変換するステップとを含んでよい。
【0014】
一方、前記予め設定されたリブート演算は、前記同型暗号文を多項式の形に線形変換するステップと、前記多項式の形に線形変換された同型暗号文のモジュラスを拡張するステップと、前記モジュラスの拡張された結果に近似モジュラス演算を行うステップと、前記近似モジュラス演算の行われた結果を同型暗号文の形に線形変換するステップとを含んでよい。
【0015】
一方、本発明の一実施例に係る演算装置は、エラーを含む近似メッセージに対する同型暗号文を保存するメモリと、前記同型暗号文に対する演算を行うプロセッサとを含み、前記プロセッサは、前記同型暗号文に対し、予め設定されたリブート演算を適用して第1の中間暗号文を生成し、前記演算結果暗号文と前記第1の中間暗号文との間の減算演算結果に対し、前記予め設定されたリブート演算を適用して第2の中間暗号文を生成し、前記第1の中間暗号文に前記第2の中間暗号文の減算演算を行い、平文空間の拡張された同型暗号文を生成する。
【0016】
この場合、前記プロセッサは、前記演算結果暗号文の予め設定された範囲を有するようにスケーリングファクタを反映し、スケーリングファクタの反映された演算結果暗号文に対して予め設定されたリブート演算を適用し、前記予め設定されたリブート演算の適用された結果に前記スケーリングファクタを反映し、前記第1の中間暗号文を生成してよい。
【0017】
この場合、前記予め設定された範囲は、[-1、1]であってよい。
【0018】
一方、前記予め設定された範囲は、
【数2】
であり、ここでkは平文空間を拡張するステップの繰り返し回数、nは精度であってよい。
【0019】
一方、前記プロセッサは、同型暗号文のモジュラスを拡張し、前記モジュラスの拡張された同型暗号文を多項式の形に線形変換し、多項式の形に変換された同型暗号文を予め設定された範囲内の入力値が整数点に近似するように設定された高次方程式を用いて、近似モジュラス演算を行い、前記近似モジュラス演算の行われた結果を同型暗号文の形に線形変換し、前記予め設定されたリブート演算を行ってよい。
【0020】
一方、前記プロセッサは、前記同型暗号文を多項式の形に線形変換し、前記多項式の形に線形変換された同型暗号文のモジュラスを拡張し、前記モジュラスの拡張された結果に近似モジュラス演算を行い、前記近似モジュラス演算の行われた結果を同型暗号文の形に線形変換し、前記予め設定されたリブート演算を行ってよい。
【発明の効果】
【0021】
以上説明したように、本発明によれば、従来より高い精度を保持した状態でリブート動作を行うことができるようになる。
【図面の簡単な説明】
【0022】
【
図1】本発明の一実施例に係るネットワークシステムの構造を説明するための図である。
【
図2】本発明の一実施例に係る演算装置の構成を示すブロック図である。
【
図3】本発明のリブート動作を説明するための図である。
【
図4】本発明のリブート動作を説明するための図である。
【
図5】本発明に係る同型暗号文の処理方法を説明するためのフローチャートである。
【
図6】本発明のリブート動作を説明するためのフローチャートである。
【
図7】本発明の平文空間を拡張する動作を説明するためのフローチャートである。
【
図8】本発明の第1の実施例に係るリブート動作のアルゴリズムを示す図である。
【
図9】本発明の第2の実施例に係るリブート動作のアルゴリズムを示す図である。
【
図10】リブート動作による精度の変化を説明するための図である。
【
図11】リブート動作による精度の変化を説明するための図である。
【発明を実施するための形態】
【0023】
以下では、添付図面を参照し、本発明について詳細に説明する。本発明において、処理される情報(データ)伝送過程は、必要に応じて、暗号化/復号化が適用されてよく、本発明及び特許請求範囲で情報(データ)伝送過程を説明する表現は、格別に言及されなくても、いずれも暗号化/復号化する場合も含むものとして解釈されるべきである。本発明において、「AからBに伝送(伝達)」又は「AがBから受信」のような表現は、中間に他の媒介体が含まれて伝送(伝達)又は受信されることも含み、必ずしもAからBまで直接伝送(伝達)又は受信されるものだけを表現するわけではない。
【0024】
本発明の説明において、各ステップの順番は、先行段階が論理的及び時間的に必ず後続段階より前に行われなければならない場合でなければ、各段階の順番は非制限的に理解されるべきである。即ち、上記のような例外的な場合を除いては、後続段階として説明された過程が先行段階として説明された過程より前に行われるとしても、開示の本質には影響がなく、権利範囲も段階の順番によらず定義されるべきである。そして、本明細書において、「A又はB」との記載は、AとBとのいずれか一方を選択的に指すだけでなく、AとBとのいずれもを含むことも意味するものとして定義される。なお、本発明で「含む」との用語は、含むものとして並べ立てられた要素の他に、更に別の構成要素を更に含むことも包括する意味を有する。
【0025】
本発明においては、本発明の説明に必要な必須の構成要素のみを説明し、本発明の本質と関係のない構成要素については言及しないこととする。そして、言及される構成要素のみを含む排他的な意味として解釈されてはならず、別の構成要素も含むことができる非排他的な意味として解釈されるべきである。
【0026】
そして、本発明において、「値」とは、スカラー値だけでなく、ベクトルも含む概念として定義される。そして、本発明において「算出する」、「計算する」などの表現は、当該算出または計算の結果物を生成するという表現に置き換えられてよい。なお、断りがなければ、後述の暗号文に対する演算は同型演算を意味する。例えば、同型暗号文に対する足し算は、2つの同型暗号文に対する同型加算を意味する。
【0027】
後述する本発明の各段階の数学的な演算及び算出は、当該演算又は算出を行うために、公知となっているコーディング方法及び/又は本発明に好適に考案されたコーディングによってコンピュータ演算で実現されてよい。
【0028】
以下で説明する具体的な数式は、可能な限り、複数の代案のうち、例示的に説明されるものであり、本発明の権利範囲が本発明に言及された数式に制限されるものとして解釈されてはならない。
【0029】
説明の便宜上、本明細書では、以下のように表記を定めることにする。
a←D:分布(D)に応じて、元素(a)を選択する
s1、s2∈R:S1、S2:S1、S2のそれぞれは、R集合に属する元素である
mod(q):q元素でモジュール(modular)演算
【数3】
:内部値を四捨五入する
以下では、添付図面を用いて、本発明の多様な実施例について具体的に説明する。
【0030】
図1は、本発明の一実施例に係るネットワークシステムの構造を説明するための図である。
【0031】
図1を参照すると、ネットワークシステムは、複数の電子装置100-1~100-n、第1のサーバ装置200、第2のサーバ装置300を含んでよく、各構成は、ネットワーク10を介して相互接続されてよい。
【0032】
ネットワーク10は、多様な形態の有・無線通信ネットワーク、放送通信ネットワーク、光通信ネットワーク、クラウドネットワークなどで実現されてよく、各装置は、別途の媒介体なしに、Wi-Fi、ブルートゥース、NFC(Near Field Communication)などのような方式で接続されてよい。
【0033】
図1においては、電子装置が、複数100-1~100-nであるとして示しているが、必ずしも複数の電子装置が使用されなければならないわけではなく、1つの装置が使用されてよい。一例として、電子装置100-1~100-nは、スマートフォン、タブレット、ゲームプレイヤ、パソコン、ラップトップ、ホームサーバ、キオスク端末などのような多様な装置で実現されてよく、その他に、IoT機能付きの家電製品で実現されてもよい。
【0034】
ユーザは、自らが使用する電子装置100-1~100-nを介して多様な情報を入力してよい。入力された情報は、電子装置100-1~100-nそのものに保存されてよいが、保存容量及びセキュリティなどを理由に、外部装置に伝送されて保存されてよい。
図1において、第1のサーバ装置200は、このような情報を保存する役割を担い、第2のサーバ装置300は、第1のサーバ装置200に保存された情報の一部又は全部を用いる役割を担ってよい。
【0035】
各電子装置100-1~100-nは、入力された情報を同型暗号化し、同型暗号文を第1のサーバ装置200に伝送してよい。
【0036】
各電子装置100-1~100-nは、同型暗号化を行う過程で算出される暗号化ノイズ、即ち、エラーを暗号文に含めてよい。具体的には、各電子装置100-1~100-nから生成する同型暗号文は、以後、秘密鍵を用いて復号化した際、メッセージ及びエラー値を含む結果値が復元される形で生成されてよい。
【0037】
一例として、電子装置100-1~100-nから生成する同型暗号文は、秘密鍵を用いて復号化した際、次のような性質を満たす形態で生成されてよい。
[数式1]
【数4】
ここで、<、>は、内在的演算(usual inner product)、ctは暗号文、skは秘密鍵、Mは平文メッセージ、eは暗号化エラー値、mod qは暗号文のモデュラス(Modulus)を意味する。qは、スケーリングファクタ(scaling factor)(Δ)がメッセージに掛け算された結果値Mより大きい値に選択されなければならない。エラー値eの絶対値がMに比べて十分に小さい値である場合、暗号文の復号化値M+eは、有効数字演算で本来のメッセージを同じ精度に代替できる値である。復号化されたデータのうち、エラーは最下位ビット(LSB)側に配置され、Mは、最下位から2番目のビット側に配置されてよい。
【0038】
メッセージの大きさが小さすぎるか大きすぎる場合、スケーリングファクタを用いて、その大きさを調節することもできる。スケーリングファクタを使用するようになると、整数のメッセージだけでなく、実数のメッセージまで暗号化できるようになるため、活用性が大幅に増大することができる。なお、スケーリングファクタを用いて、メッセージの大きさを調節することで、演算が行われてからの暗号文でメッセージの存在する領域、即ち、有効領域の大きさも調節されてよい。
【0039】
実施例によって、暗号文のモジュラスqは、多様な形態に設定されて使用されてよい。一例として、暗号文のモジュラスは、スケーリングファクタΔのべき乗
【数5】
の形態に設定されてよい。Δが2なら、
【数6】
のような値に設定されてよい。
【0040】
そして、本発明に係る同型暗号文は、固定小数点を使用することを仮定して説明するが、浮動小数点を使用する場合にも適用されてよい。
【0041】
第1のサーバ装置200は、受信された同型暗号文を復号化せずに、暗号文の状態で保存してよい。
【0042】
第2のサーバ装置300は、同型暗号文に対する特定の処理結果を第1のサーバ装置200にリクエストしてよい。第1のサーバ装置200は、第2のサーバ装置300のリクエストに応じて特定演算を行った後、その結果を第2のサーバ装置300に伝送してよい。
【0043】
一例として、2つの電子装置100-1、100-2の伝送した暗号文ct1、ct2が、第1のサーバ装置200に保存された場合、第2のサーバ装置300は、両電子装置100-1、100-2から提供された情報を合算した値を、第1のサーバ装置200にリクエストしてよい。第1のサーバ装置200は、リクエストに応じて、2つの暗号文を合算する演算を行った後、その結果値(ct1+ct2)を第2のサーバ装置300に伝送してよい。
【0044】
同型暗号文の性質上、第1のサーバ装置200は復号化を行っていない状態で演算を行ってよく、その結果値も暗号文の形態になってよい。本発明では、演算によって獲得された結果値を演算結果暗号文という。
【0045】
第1のサーバ装置200は、演算結果暗号文を第2のサーバ装置300に伝送してよい。第2のサーバ装置300は、受信された演算結果暗号文を復号化し、各同型暗号文に含まれたデータの演算結果値を獲得してよい。
【0046】
第1のサーバ装置200は、ユーザのリクエストに応じて演算を複数回行ってよい。この場合、毎回演算ごとに獲得される演算結果暗号文内の近似メッセージ比重が異なってくる。第1のサーバ装置200は、近似メッセージ比重が閾値を超過すると、リブート(Bootstrapping)動作を行ってよい。このように、第1のサーバ装置200は、演算動作を行うことができることから、演算装置と称してよい。
【0047】
具体的に、上述の数式1において、qがMより小さい場合、M+e(mod q)はM+eと異なる値を有するため、復号化ができなくなる。よって、q値は、常にMより大きく維持される必要がある。しかし、演算が進むにつれて、q値は次第に減少するようになる。よって、q値は、常にMより大きくなるように変化させる動作が必要であり、このような動作をリブート動作という。このようなリブート動作が行われることによって暗号文は、再度演算できるような状態になり得る。リブートに関連する具体的な動作は、
図3ないし
図4を参照して後述する。
【0048】
一方、
図1では、第1の電子装置および第2の電子装置で暗号化を行い、第2のサーバ装置が復号化を行う場合を示しているが、必ずしもそれに限定されるわけではない。
【0049】
図2は、本発明の一実施例に係る電子装置の構成を示すブロック図である。
【0050】
具体的に、
図1のシステムにおいて、第1の電子装置、第2の電子装置などのように、同型暗号文を行う装置、第1のサーバ装置などのように、同型暗号文を演算する装置、第2のサーバ装置などのように、同型暗号文を復号する装置などを演算装置と称してよい。このような演算装置は、PC(Personal computer)、ノートパソコン、スマートフォン、タブレット、サーバなど多様な装置であってよい。
【0051】
図2を参照すると、演算装置400は、通信装置410と、メモリ420、ディスプレイ430と、操作入力装置440およびプロセッサ450を含んでよい。
【0052】
通信装置410は、演算装置400を外部装置(図示せず)と接続するために形成され、ローカル・エリア・ネットワーク(LAN:Local Area Network)及びインターネット網を介して、外部装置に接続される形態だけでなく、USB(Universal Serial Bus)ポート又は無線通信(例えば、WiFi 802.11a/b/g/n、NFC、Bluetooth)ポートを介して接続される形態も可能である。このような通信装置410は、送受信部(transceiver)と称してよい。
【0053】
通信装置410は、公開鍵を外部装置から受信してよく、演算装置400自ら生成した公開鍵を外部装置に伝送してよい。
【0054】
そして、通信装置410は、外部装置からメッセージを受信してよく、生成した同型暗号文を外部装置に送信してよい。
【0055】
なお、通信装置410は、暗号文の生成に必要な各種パラメータを外部装置から受信してよい。一方、実現時は、各種パラメータは、後述する操作入力装置440を介してユーザから直接入力されてよい。
【0056】
なお、通信装置410は、外部装置から同型暗号文に対する演算をリクエストされてよく、それにより、計算された結果を外部装置に伝送してよい。
【0057】
メモリ420は、演算装置400を駆動するためのO/Sや、各種ソフトウェア、データなどを保存するための構成要素である。メモリ420は、RAMやROM、フラッシュメモリ、HDD、外付けメモリ、メモリカードなどのような多様な形態で実現されてよく、何れかに限定されるものではない。
【0058】
メモリ420は、暗号化するメッセージを保存する。ここで、メッセージとは、ユーザが引用する各種信用情報、個人情報などであってよく、演算装置400で使用される位置情報、インターネット使用時間情報など、使用履歴などに関連する情報であってよい。
【0059】
そして、メモリ420は、公開鍵を保存してよく、演算装置400が直接公開鍵を生成した装置である場合、秘密鍵だけでなく、公開鍵及び秘密鍵の生成に必要な各種パラメータを保存してよい。
【0060】
そして、メモリ420は、後述する過程で生成された同型暗号文を保存してよい。そして、メモリ420は、外部装置から伝送した同型暗号文を保存してよい。なお、メモリ420は、後述する演算過程における結果物である演算結果暗号文を保存してよい。
【0061】
ディスプレイ430は、演算装置400のサポートする機能を選択されるためのユーザインターフェースウィンドウを表示する。具体的に、ディスプレイ430は、演算装置400の提供する各種機能を選択されるためのユーザインターフェースウィンドウを表示してよい。このようなディスプレイ430は、LCD(liquid crystal display)、OLED(Organic Light Emitting Diodes)などのようなモニタであってよく、後述する操作入力装置440の機能を同時に実行することができるタッチスクリーンで実現されてよい。
【0062】
ディスプレイ430は、秘密鍵及び公開鍵の生成に必要なパラメータの入力をリクエストするメッセージを表示してよい。そして、ディスプレイ430は、暗号化対象がメッセージを選択するメッセージを表示してよい。一方、実現の際は、暗号化対象は、ユーザが直接選択してよく、自動的に選択されてよい。即ち、暗号化が必要な個人情報などは、ユーザが直接メッセージを選択しなくても、自動的に設定されてよい。
【0063】
操作入力装置440は、ユーザから演算装置400の機能選択及び当該機能に対する制御命令を入力されてよい。具体的に、操作入力装置440は、ユーザから秘密鍵及び公開鍵の生成に必要なパラメータを入力されてよい。なお、操作入力装置440は、ユーザから暗号化されるメッセージを設定されてよい。
【0064】
プロセッサ450は、演算装置400内の各構成を制御する。このようなプロセッサ450は、CPU(central processing unit)、ASIC(application-specific integrated circuit)のような単一装置で構成されてよく、CPU、GPU(Graphics Processing Unit)などの複数の装置で構成されてよい。
【0065】
プロセッサ450は、伝送しようとするメッセージが入力されると、メモリ420に保存する。そして、プロセッサ450は、メモリ420に保存された各種設定値及びプログラムを用いて、メッセージを同型暗号化する。この場合、公開鍵が使用されてよい。
【0066】
プロセッサ450は、暗号化を行うのに必要な公開鍵を自ら生成して使用してよく、外部装置から受信して使用してよい。一例として、復号化を行う第2のサーバ装置300が公開鍵を別の装置に配布してよい。
【0067】
自ら鍵を生成する場合、プロセッサ450は、Ring-LWE技法を用いて公開鍵を生成してよい。具体的に説明すると、プロセッサ450は、まず、各種パラメータ及びリングを設定し、メモリ420に保存してよい。パラメータの例としては、平文メッセージビットの長さ、公開鍵及び秘密鍵の大きさなどがあってよい。
【0068】
リングは、以下のような数式で表現されてよい。
[数式2]
【数7】
ここで、Rはリング、Zqは係数、f(x)はn次多項式である。
【0069】
リング(Ring)とは、予め設定された係数を有する多項式の集合であって、元素の間で足し算と掛け算とが定義されており、足し算と掛け算とに対しては閉じている集合を意味する。このようなリングは、環と称してよい。
【0070】
一例として、リングは、係数が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でも表されてよい。
[数式3]
【数8】
【0071】
秘密鍵(sk)は、以下のように表現されてよい。
【0072】
一方、上述の数式3のリングは、平文空間で複素数を有する。一方、同型暗号文に対する演算速度を向上するために、上述のリングの集合のうち、平文空間が実数である集合のみを利用してよい。
【0073】
このようなリングが設定されると、プロセッサ450はリングから秘密鍵(sk)を算出してよい。
【0074】
[数式4]
【数9】
ここで、s(x)は、小さい係数でランダムに生成した多項式を意味する。
【0075】
そして、プロセッサ450は、リングから第1のランダム多項式(a(x))を算出する。第1のランダム多項式は、以下のように表現されてよい。
【0076】
【0077】
なお、プロセッサ450は、エラーを算出してよい。具体的に、プロッサ450は、離散ガウシアン分布又はそれと統計的に距離が近い分布からエラーを抽出してよい。このようなエラーは、以下のように表現されてよい。
【0078】
【0079】
エラーまで算出されると、プロセッサ450は、第1のランダム多項式及び秘密鍵にエラーをモジュラ演算して第2のランダム多項式を算出してよい。第2のランダム多項式は、以下のように表現されてよい。
【0080】
【0081】
最終的に、公開鍵(pk)は、第1のランダム多項式及び第2のランダム多項式を含む形態で、以下のように設定される。
【0082】
【0083】
上述の鍵生成方法は一例に過ぎないため、必ずしもそれに限定されるわけではなく、その他に別の方法で公開鍵及び秘密鍵を生成してよいことはいうまでもない。
【0084】
一方、プロセッサ450は、公開鍵が生成されると、別の装置に伝送されるように通信装置410を制御してよい。
【0085】
そして、プロセッサ450は、メッセージに対する同型暗号文を生成してよい。具体的に、プロセッサ450は、メッセージに対して、先に生成された公開鍵を適用して同型暗号文を生成してよい。このとき、プロセッサ450は、暗号文の長さをスケーリングファクタの大きさに対応するように生成してよい。
【0086】
そして、プロセッサ450は、同型暗号文が生成されると、メモリ420に保存するか、ユーザのリクエスト又は予め設定されたデフォルトコマンドに応じて、同型暗号文を他の装置に伝送するように通信装置410を制御してよい。
【0087】
一方、本発明の一実施形態によると、パッキング(Packing)が行われてよい。同型暗号化でパッキングを利用するようになると、複数のメッセージを1つの暗号文で暗号化することが可能になる。この場合、電子装置100で各暗号文の間の演算を行うと、結果的に複数のメッセージに対して演算が並列的に処理されるため、演算の負担が大幅に軽減する。
【0088】
具体的には、プロセッサ450は、メッセージが複数のメッセージベクトルからなる場合、複数のメッセージベクトルを並列的に暗号化できる形態の多項式に変換した後、その多項式にスケーリングファクタを乗算し、公開鍵を用いて同型暗号化してよい。それにより、複数のメッセージベクトルをパッキングした暗号文を生成してよい。
【0089】
そして、プロセッサ450は、同型暗号文に対する復号が必要な場合、同型暗号文に秘密鍵を適用して多項式の形態の復号文を生成し、多項式の形態の復号文をデコードしてメッセージを生成してよい。このとき、生成したメッセージは、上述の数式1で言及したように、エラーを含んでよい。
【0090】
そして、プロセッサ450は、暗号文に対する演算を行ってよい。具体的に、プロセッサ450は、同型暗号文に対して暗号化された状態を維持した状態で、足し算、又は掛け算などの演算を行ってよい。具体的に、プロセッサ450は、演算に使用される同型暗号文のそれぞれを第1の関数処理し、第1の関数処理された同型暗号文の間に足し算または掛け算などの演算を行い、演算が行われた同型暗号文を第1の関数に逆関数である第2の関数処理してよい。このような第1の関数処理および第2の関数処理は、後述のリブート過程における線形変換技術が利用されてよい。
【0091】
一方、演算装置400は、演算が完了すると、演算結果データから有効領域のデータを検出してよい。具体的に、演算装置400は、演算結果データをラウンディング処理を行って有効領域のデータを検出してよい。ラウンディング処理とは、暗号化された状態でメッセージの四捨五入(round-off)を行うことを意味し、他には、リスケーリング(rescaling)と称してよい。具体的には、演算装置400は、暗号文のそれぞれの成分にスケーリングファクタの逆数である
【数14】
を掛け算して四捨五入し、ノイズ領域を除去する。ノイズ領域は、スケーリングファクタの大きさに対応するように決定されてよい。結果的に、ノイズ領域の除かれた有効領域のメッセージを検出してよい。暗号化状態で行われるため、更なるエラーが発生するが、大きさは十分小さいため無視することができる。
【0092】
なお、演算装置400は、演算結果暗号文内の近似メッセージ比重が閾値を超過すると、暗号文に対するリブート動作を行ってよい。このとき、演算装置400は、通常の方式のリブート動作を行うか、本発明に係るメタブートストラップ法のリブート動作を行ってよい。具体的に、演算装置400は、同型暗号文の演算速度または/および精度を考慮し、リブート方式を決定してよい。例えば、演算装置400が速いリブートが必要な場合は、通常の方式でリブートを行ってよく、高い精度が必要か、同型暗号文の間の値の差が大きいと予測される場合は、メタブートストラップ法でリブートを行うと決定してよい。
【0093】
通常のリブート方式を利用する場合、演算装置400は予め設定されたリブート演算を行ってリブート動作を行ってよい。具体的に、演算装置400は、同型暗号文のモジュラスを拡張し、モジュラスの拡張された同型暗号文を多項式の形に線形変換し、多項式の形に変換された同型暗号文を予め設定された範囲内の入力値が整数点に近似するように設定された高次方程式を用いて、近似モジュラス演算し、近似モジュラス演算された結果を同型暗号文の形に線形変換し、上述のリブート演算を行ってよい。このとき、演算装置400は、上述のモジュラス拡張動作と線形変換動作との順番を入れ替えて行ってよい。
【0094】
一方、メタブートストラップ法を利用する場合に、演算装置400は同型暗号文に対して予め設定されたリブート演算を適用して第1の中間暗号文を生成し、演算結果暗号文と第1の中間暗号文との間の減算演算結果に対し、予め設定されたリブート演算を適用して第2の中間暗号文を生成し、第1の中間暗号文に第2の中間暗号文の減算演算を行い、平文空間の拡張された同型暗号文を生成してよい。本発明に係るメタブートストラップ法に対しては、
図3を参照して詳しく説明する。
【0095】
以上のように、本発明の一実施例に係る演算装置400は、同型暗号文に対してリブート動作を行うため、より効率的な同型演算が可能である。なお、本発明の一実施例に係るメタブートストラップ法を利用することで、ブートストラップ過程で発生し得る精度が低下することを防止することができる。
【0096】
図3は、リブート動作を説明するための図である。具体的に、
図3では、2つの同型暗号文10、20に対する演算およびリブート過程を示す。このようなリブートという用語は、ブートストラップまたは平文空間拡張などと表現されてよい。
【0097】
各同型暗号文10、20は、近似メッセージ領域11、21をそれぞれ含んでよい。近似メッセージ領域11、21には、メッセージおよびエラー(m1+e1、m2+e2)が併せて盛り込まれている。
【0098】
演算装置400は、2つの同型暗号文10、20を入力値とし、特定演算を行ってよい。
【0099】
演算結果暗号文30は、各近似メッセージ間の演算結果(m3+e3)の盛り込まれた近似メッセージ領域31を含んでよい。演算結果が入力値より大きくなるにつれ、近似メッセージ領域も大きくなり、それによって、残りの平文空間32が減少するようになる。このような演算が複数回行われると、結局、残りの平文空間32がなくなるか限界値より小さくなり、演算ができなくなる。このような状態と判断されると、演算装置400は、リブート動作を行うことができる。
【0100】
リブートの行われた暗号文40は、近似メッセージ領域41は一定であり、平文空間42が拡張することが分かる。
【0101】
このように、リブート方式は、平文空間を拡張することにおいて、同型暗号文に対して継続して演算処理を行うことができるようにする。ただ、従来のリブート方式では、その過程中に精度の損失(または、エラーの増幅)が発生するおそれがあった。それについては、
図10を参照して詳しく説明する。
【0102】
数字を表現する方式では、固定小数点方式と浮動小数点方式とがある。有効数字を補填する側面では、浮動小数点方式が有利になるが、暗号文内のデータ漏れの可能性などを防止するために、多くの同型暗号文が固定小数点方式を採用している。
【0103】
ところが、固定小数点方式を利用し、使用するデータの範囲が広い場合は、以下のような問題が発生する。以下では、説明を容易にするために、同型暗号文に対して30-bitの精度をサポートし、2つのスロット(slot[0]、slot[1])のそれぞれに
【数15】
、1の値が入っていると仮定する。
【0104】
もし、浮動小数点方式(または、理想的な方法)において、精度30を満たす場合なら、スロット[0]1010は、小数点以上20桁、小数点以下10桁を合わせて30桁を保障するものであり)、スロット[1]1020は小数点以下30桁を保障するものである。
【0105】
しかし、固定小数点方式において30-bit精度とは、最も高い数の桁から30桁を数えて、それが一括して保存されるものである。よって、スロット[0]は、上述の浮動小数点方式と同様の小数点以上20桁、小数点以下10桁を合わせた30桁が保障される。しかし、スロット[1]は、スロット[0]と同様の数の桁を有する必要があるため、小数点以上20桁、小数点以下10桁を有する。このように、スロット[0]に対し、固定小数点方式では、小数点以下10桁のみが保障されるため、当該スロットに対する実質的な精度は10bitになる。
【0106】
エラーの増幅の観点からいうと、与えられたデータ
【数16】
とすると、ブートストラップ
【数17】
にリブートするため、エラーが
【数18】
分増幅するとすることができる。結果的に、スロット[1]は、精度が10桁に低下するようになる。
【0107】
言い換えると、通常扱っているデータスロットの絶対値の最大値が2^M、最小値が2^Nにバウンドされるとすると、リブートの際に、リブートの精度と浮動小数点における精度は、(M-N) bitの分だけ差が生じるようになる。
【0108】
このような内容を反映し、通常のリブート動作について説明する。通常のリブートは、1)近似アルゴリズムの適用する範囲への同型暗号文の範囲を変化する動作、2)近似アルゴリズムを適用する動作、3)範囲復元動作が順次に行われる。例えば、[-1, 1]の近似範囲を有する近似アルゴリズムを用いて、CT3 = m3+e3に対するリブートを行うと、範囲調整のために次数(または、スケーリングファクタ)を反映し
【数19】
、近似アルゴリズムを適用し
【数20】
、次数の逆数を反映する動作を行うようになる
【数21】
。
【0109】
このように、通常のリブート動作を行う場合、近似アルゴリズムの適用のためのスケーリング過程においてエラーが大きくなるという問題が発生する。
【0110】
よって、本発明は、このような従来のリブート過程における問題を解決するために、ブートストラップ結果が近似アルゴリズムの許容する誤差範囲内のエラーのみを有するようにすることを目的とする。
【0111】
このような目的を達成するためには、i)ブートストラップ結果に含まれたエラーのうち、近似アルゴリズムが許容する誤差範囲以上のエラー確認、ii)確認されたエラーを除去する動作が必要である。
【0112】
以下では、
図4を参照し、上述の目的を達成するための基本的な一つの方式について説明するが、実現時には、上述の方式を多様に変形することが可能である。
【0113】
図4は、本発明のリブート動作を説明するための図である。
【0114】
本発明に係る新しいリブート動作は、従来のリブート動作を利用する。利用中に従来のリブート動作を修正するか、従来のリブート動作を変形して利用することも可能である。まずは、説明を容易にするために、本発明の以前使用される通常のリブート動作を予め設定されたリブート動作と称し、本発明に係る新しいリブート動作をメタブートストラップ(Meta Bootstrapping)と称する。(以下、
【数22】
、nは精度)。
【0115】
図4を参照すると、メタブートストラップを行う場合、第1の同型暗号文50に対する予め設定されたリブート動作を行う。ここで、予め設定されたリブート動作は、上述のように、一般的に知られている従来のようなリブート動作であってよく、本発明で後述する従来のリブート動作を一部変更した方式であってよい。このようなリブート動作が行われると、第1の中間暗号文(または、リブートされた同型暗号文)60が生成されてよい。例えば、第1の同型暗号文が
【数23】
なら(
【数24】
はメッセージ、
【数25】
はエラー)、第1の中間暗号文は
【数26】
(ここで、
【数27】
はブートストラップエラー)であってよい。
【0116】
そして、リブート後に含まれたエラーのうち、「近似アルゴリズムの許容する誤差範囲以上のエラー」を確認するために、すなわち、メッセージ以外のエラー値を確認するために、予め設定されたブートストラップ(または、リブート)前後の両同型暗号文に対する減算同型演算を行う。それにより、第2の中間暗号文70が生成されてよい。例えば、第2の中間暗号文は
【数28】
であってよい。
【0117】
そして、第2の中間暗号文に対し、予め設定されたリブート動作を行う。このような予め設定されたリブート動作は、通常知られた従来のようなリブート動作であってよく、本発明で後述する従来のリブート動作を一部変更したものであってよい。そして、ここで、リブート過程は、最初の同型暗号文
【数29】
に対して適用したリブート方式と同様のものであってよく、異なる方式であってよい。それにより、第3の中間暗号文80を生成してよい。例えば、第3の中間暗号文
【数30】
であってよい。
【0118】
このような第3の中間暗号文は、近似アルゴリズムを通過したエラーであるため、上述の「近似アルゴリズムが許容する誤差範囲以上のエラー」とみなすことができる。よって、最終的に、第1の中間暗号文から第3の中間暗号文を引くと、近似アルゴリズムが許容する誤差範囲以下のエラーのみを有する同型暗号文を生成できるようになる。すなわち、
【数31】
になる。
【0119】
このように、メタブートストラップ過程を通じて、リブートされた同型暗号文は、近似アルゴリズムが許容する誤差範囲内の誤差のみを有するようになる。
【0120】
なお、本発明に係るメタブートストラップ過程は、上述の精度だけでなく、以下のような点においても長所がある。
【0121】
具体的に、
【数32】
において、リングの次数であるn=N/2が与えられた際、暗号文の安全性(security)の理由から、使用できるmodulusの総量には制限がある。
【0122】
その総量を増やすためには、リングの次数を高めなければならない。もし、リブートの各過程の精度を高める場合、必然的に各過程で消耗するモジュラスの量が増加する。リブートの後に使用できるモジュラスの量(あるいは、掛け算の可能回数)は、全モジュラスにおいてリブートで消耗するモジュラスの量分だけ引いたものになるため、リブートにおいて消耗するモジュラスが増えるほど、リブートの後使えるモジュラスの量は減るようになり、リブートの効率が低下する。モジュラスの制限を高めるためにnを増やす場合、任意の演算がnに比例して遅くなるため、更に別の非効率をもたらす。
【0123】
このような点において、本開示に係るメタリブートを使用すると、低い精度のリブートを複数回繰り返すようになるため、リブートで消耗するモジュラスの量は依然として低く維持される。よって、以下のような2つの長所がある。
【0124】
最初に、低いnにおいて、従来の方法では達成不可能な精度を達成することができる。
【0125】
次に、精度を固定する場合は、次数を低くすることができるという意味であるため、高い精度のリブートを効率よく設計することができる。
【0126】
図5は、本発明に係る同型暗号文の処理方法を説明するためのフローチャートである。
【0127】
図5を参照すると、まず、エラーを含む近似メッセージに対する同型暗号文に対する演算を行う(S510)。一例として、演算は、乗算、除算、加算、減算などのような基本演算に設定されてよいが、必ずしもそれに限定されるものではない。具体的に、暗号化されたメッセージが複素数である場合、コンジュゲート(conjugate)演算が行われてよく、その他に統計やソーティングなどの演算も行われてよい。
【0128】
そして、演算によって獲得された演算結果暗号文内の近似メッセージ比重が閾値を超過するかを判断する(S520)。
図5では、演算の後で近似メッセージ比重が閾値を超過するかを判断すると示しているが、必ずしもそれに限定されるものではない。すなわち、演算前に判断することも可能である。
【0129】
そして、近似メッセージ比重が閾値を超過すると、演算結果暗号文の平文空間を拡張する。すなわち、本発明に係るメタブートストラップを行ってよい。本発明のメタブートストラップの詳しい動作は、
図6を参照して以下で説明する。
【0130】
図6は、本発明のリブート動作を説明するためのフローチャートである。
【0131】
まず、演算結果暗号文に対し、予め設定されたリブート演算を適用して第1の中間暗号文を生成する(S610)。具体的に、演算結果暗号文の予め設定された範囲を有するようにスケーリングファクタを反映し、スケーリングファクタの反映された演算結果暗号文に対して予め設定されたリブート演算を適用し、予め設定されたリブート演算の適用された結果にスケーリングファクタを反映し、第1の中間暗号文を生成してよい。ここで、予め設定された範囲は、[-1、1]か、
【数33】
(ここで、kは平文空間を拡張する段階の繰り返し回数として、1以上の整数)であってよい。予め設定されたリブート演算の具体的な動作は、
図7を参照して後述する。
【0132】
そして、演算結果暗号文と第1の中間暗号文との間の減算演算結果に対し、予め設定されたリブート演算を適用して第2の中間暗号文を生成する(S620)。具体的に、演算結果暗号文と第1の中間暗号文との減算結果は、ブートストラップ前後のエラー変化差を示し、当該暗号文に対するリブート結果は、当該エラー中の近似アルゴリズムの誤差範囲以上のエラー値を示す。
【0133】
そして、第1の中間暗号文に第2の中間暗号文の減算演算を行い、平文空間が拡張された同型暗号文を生成する(S630)。具体的に、第1の中間暗号文に当該第2の中間暗号文を引く減算同型演算を行うようになると、第1の中間暗号文にあるエラーの中、近似アルゴリズムの誤差範囲以上のエラー分だけの大きさが除去されると、すなわち、最終の暗号文はメッセージと近似アルゴリズムの誤差範囲内のエラー値を有するようになる。
【0134】
一方、以上では、1回の動作でリブート動作を行うものとして示して説明している。しかし、実現の際は、上述の動作は実現方式によって複数回行われてよい。
【0135】
図7は、本発明の平文空間を拡張する動作を説明するためのフローチャートである。
【0136】
まず、同型暗号文のモジュラスを拡張する。具体的に、平文拡張のためにモジュラスを拡張することができる(S710)。
【0137】
そして、モジュラスの拡張された同型暗号文を多項式の形に線形変換する(S720)。具体的に、近似モジュラス演算は、多項式を用いて演算が行われる。よって、暗号文を多項式の形に変換する線形変換を行ってよい。このような線形変換は、SlotToCoeffと称されてよい。具体的に、同型暗号文の多項式は、複素数で構成されるため、多項式の各係数をスロットに入っている形に変換するために、予め定義された行列を用いて線形変換を行ってよい。ここで、予め定義された行列は、DFT(discrete Fourier Transform)行列であってよい。一方、本願は、メタブートストラップ過程で予め設定されたリブート動作を2回行うが、一番目のリブート動作と二番目のリブート過程において、相互異なる方式で線形変換を行ってよい。例えば、一番目のリブート動作は、元のメッセージに対して行われるものであるため、高い精度を有する方式で線形変換を行い、二番目のリブート動作は、暗号文内のエラーに対して行うものであるため、先に行われた線形変換よりは低い精度を有する方式の線形変換を用いて行うことも可能である。
【0138】
多項式の形に変換された同型暗号文を予め設定された範囲内の入力値が整数点に近似するように設定された高次方程式を用いて、近似モジュラス演算を行う(S730)。具体的に、予め設定された範囲内の入力値が整数点に近似するように設定された高次方程式を用いて、線形変換された同型暗号文を近似モジュラス演算を行ってよい。
【0139】
そして、近似モジュラス演算された結果を同型暗号文の形に線形変換を行う(S740)。具体的に、先の同型暗号文の線形変形の際に用いた行列に対応する逆行列を用いて、近似モジュラス演算された同型暗号文を多項式の形に変換し、変換された多項式を暗号文の形に変換してよい。
【0140】
一方、
図7においては、モジュラス拡張後、多項式に線形変換する動作を行うものとして示して説明しているが、実現時には、線形変換動作を先に行い、モジュラス拡張動作を行うこともできる。この場合、線形変換の動作時に用いるDFT行列の処理過程中に、モジュラス拡張のための値を反映して演算することで、リブート過程における演算回数の差し引きを減らすことができる。
【0141】
なお、
図7では、多項式への変換動作を行うものとして示して説明しているが、実現時には、多項式の形として暗号文を有する場合があってよい。このような場合に、上述の多項式に線形変換する動作は省略されてよい。すなわち、
図7の線形変換動作720は、省略された形態で実現されてよい。
【0142】
図8は、本発明の第1の実施例に係るリブート動作のアルゴリズムを示す図である。第1の実施例に係るリブート動作アルゴリズムは、[-1、1]の入力範囲を有し、n-bit精度を有する場合を仮定する。そして、示された表において、xは同型暗号文、pはqより大きいモジュラスを意味する。
【0143】
図8を参照すると、まず、同型暗号文に精度を反映して入力範囲を変換する
【数34】
。そして、入力範囲が変更された同型暗号文に対する予め設定されたリブートアルゴリズムを適用し(BTS(tmp))、当該結果に予め反映した入力範囲を拡張する
【数35】
。
【0144】
ここまでのみ行う場合、一般的なリブート過程と同様であるため、当該過程のそれぞれの具体的なアルゴリズムに対する説明は省略する。
【0145】
そして、リブート実行前の同型暗号文と第1次のリブートされた結果暗号文との間の差を算出し(tmp-op)、算出された結果に対して第2次のリブートを行う(BTS(temp2))。
【0146】
最後に、一番目のリブート結果に第2次のリブート結果(具体的に、リブート結果とリブート前のエラーとの差に対するリブート結果)を反映し、最終的な同型暗号文を生成してよい。
【0147】
図9は、本発明の第2の実施例に係るリブート動作のアルゴリズムを示す図である。第2の実施例に係るリブート動作アルゴリズムは、
【数36】
を有し、kはリブート動作アルゴリズムが繰り返し回数として1以上の整数、nは精度を有する場合を仮定する。
【0148】
図9を参照すると、まず、同型暗号文に精度を反映して入力範囲を変換する
【数37】
。そして、入力範囲が変更された同型暗号文に対する予め設定されたリブートアルゴリズムを適用し
【数38】
、当該結果に予め反映した入力範囲を拡張する
【数39】
。
【0149】
そして、リブート実行前の同型暗号文と第1次のリブート結果暗号文との間の差を算出し(temp-op)、算出された結果に対して第2次のリブートを行う(BTS(temp2))。
【0150】
そして、最後に、一番目のリブート結果に第2次のリブート結果(具体的に、リブート結果とリブート前のエラーの差に対するリブート結果)を反映し、最終的な同型暗号文を生成してよい。
【0151】
以下では、固定小数点方式の同型暗号文を、本発明に係るメタブートストラップを適用した場合について説明する。まず、x=(slot[0]、slot[1])、xのレベルは4と仮定する。
【0152】
【0153】
【0154】
【0155】
【0156】
【0157】
このように、最終結果物である同型暗号文は、e’をエラーとして含むが、e’はリブートエラーであるため、2^(-30)より小さいか同じである。すなわち、スロット[0]とスロット[1]が両方精度30桁以上を有することが分かる。それを図に表現すると、
図11のようになる。
【0158】
図11を参照すると、固定小数点方式を利用する場合も、30-bit精度を達成していることが分かる。実際、スロット[0]は30ビット精度ではなく、50ビット精度を達成していることが分かる。
【0159】
このように、本発明に係るメタブートストラップ法を用いて、固定小数点方式の同型暗号文に対しても、精度の損失なしに平文空間の拡張が可能となる。
【0160】
一方、上述の多様な実施例に係る暗号文処理方法は、各段階を行うためのプログラムコード形態で実現され、記録媒体に保存されて配布されてよい。この場合、記録媒体の搭載された装置は、上述の暗号化または暗号化処理などの動作を行ってよい。
【0161】
このような記録媒体は、ROM、RAM、メモリチップ、メモリカード、外付けハード、ハード、CD、DVD、磁気ディスクまたは磁気テープなどのような多様なコンピュータ読み取り可能な媒体であってよい。
【0162】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明は以上の実施形態に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的趣旨の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【国際調査報告】