(57)【要約】【課題】  本発明は従来のモジュロ演算に基づく完全準同型暗号化の処理方法で制御しがたい暗号化テキスト乗算の騒音及び暗号化テキスト加算の結果が桁上げの時に暗号化テキスト加算の結果と等しい場合に暗号化加算の結果に復号化中に誤りが出ることによる暗号化の結果が正しく復号化されることができない。【解決手段】  本発明は下記のステップを含むモジュロ演算に基づく完全準同型暗号化の処理方法を開示する。暗号化中の任意数値のデータ型のクリアテキストを取得し、暗号化の需要に応じてそれを対応する桁上げビット・クリアテキストに転換し、取得した桁上げビット・クリアテキストにおける各数に対する暗号化演算を行い、暗号化演算で取得した暗号化テキストを組み合わせて対応する暗号化テキストの組合せを取得し、モジュロ暗号化に基づく暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードにより取得した暗号化テキストは従来のモジュロ演算に基づく完全準同型暗組合せにより暗号化テキストの加算、減算、乗算及び除算を行い、モジュロ除算により取得した暗号化テキスト演算の結果に対する復号化を行って復号化されたクリアテキストを取得する。【選択図】図１
2019517684.tif 000002
【特許請求の範囲】
【請求項１】
下記のステップを含むことを特徴とするモジュロ演算に基づく完全準同型暗号化の処理方法。
（１）暗号化中の任意数値のデータ型のクリアテキストを取得し、暗号化の需要に応じてそれを対応する桁上げビット・クリアテキストに転換する。
（２）ステップ（1）で取得した桁上げビット・クリアテキストにおける各数に対する暗号化演算を行い、暗号化演算で取得した暗号化テキストを組み合わせて対応する暗号化テキストの組合せを取得する。
（３）モジュロ暗号化に基づく暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードによりステップ（2）で取得した暗号化テキスト組合せに対する暗号化テキスト演算を行う。
（４）モジュロ除算によりステップ（3）取得した暗号化テキスト演算の結果に対する復号化を行って復号化されたクリアテキストを取得する。
【請求項２】
ステップ（2）で下式で暗号化演算を行うことを特徴とする請求項1に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
c=（m+s×r+p×q）mod x0
その中、
c：暗号化テキスト
m：クリアテキストにおける桁上げビット
s：暗号化で利用される進数系
r：乱数
p：暗号化シックレートキー
x0：中間変数＝暗号化シックレートキーpと他の暗号化シックレートキーqとの積
前記のシックレートキーは開示しない。
【請求項３】
ステップ（4）で下式を利用することを特徴とする請求項2に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
（c mod p）mod s
【請求項４】
ステップ（3）で、暗号化テキストに対する加算を行い、直接に暗号化テキスト組合せの2つに対する対位法加算を行うことを特徴とする請求項3に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
【請求項５】
ステップ（3）で暗号化テキスト減算について減数の暗号化テキスト組合せの逆コードを取得してからこの逆コードにより対応する補完コードを取得し、最後にこの補完コードと被減数との暗号化テキスト組合せのオリジナルコードについて対位法加算を行うことを特徴とする請求項3に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
【請求項６】
下記のことを特徴とする請求項3に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。ステップ（3）で暗号化テキスト乗算について先ず暗号化テキスト組合せc1とc2における元素の個数nによりn×（2n-1）のマトリックスを構成し、このマトリックスの第一行の右から左までの元素が各々c1における最右の元素とc2における最右の元素との積及びc1における最右の逆第二の元素とc2における最右の元素との積である。これで類推して、c1における左第一の元素とc2における最右の元素との積であり、このマトリックスの第二行の右から左までの元素が各々0の1つ、c1における最右の元素とc2における最右の逆第二の元素との積、c1における最右の逆第二の元素とc2における最右の逆第二の元素との積である。これで類推して、c1における左第一の元素とc2における最右の逆第二の元素との積である。…このマトリックスの第n行の右から左までの元素が各々0の（n-1）個、c1における最右の元素とc2における左第一の元素との積、c1における最右の逆第二の元素とc2における左第一の元素との積である。これで類推して、c1における左第一の元素とc2における左第一の元素との積である。次に、構成したマトリックスの列ごとについて加算を行って新たな行ベクトルを取得し、暗号化テキスト乗算の結果にする。
【請求項７】
ステップ（3）で暗号化テキストの除算対して下記サブステップを含むことを特徴とする請求項3に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
（3-4-1）積算長さが32ビット、64ビットまたは80ビットであり、符号ビット、整数ビット及び小数ビットを含み、この保存形式により2進数系クリアテキストを拡張する空の除算結果の保存形式を構成する。
（3-4-2）ステップ（2）のアルゴリズムにより拡張された2進数系クリアテキストについて暗号化演算を行い、暗号化演算の結果を組合せて対応する暗号化テキストを取得して被除数及び除数にする。
（3-4-3）ステップ（2）で取得した1の暗号化テキストと除数としての暗号化テキストとの乗算を行う。
（3-4-4）小数ビット・カウンターcountの初期値が保存形式と等しい長さ-Lを設置する。その中、Lは保存形式における整数ビットの長さである。
（3-4-5）被除数の暗号化テキストが除数の暗号化テキストの以上にあるかについて判断する。Yesの場合にステップ（3-4-6）、Noの場合にステップ（3-4-7）に移す。
（3-4-6）被除数の暗号化テキストとステップ（3-4-3）における除数の暗号化テキストの補完コードとの加算を行い、それによる余りを新たな被除数にし、整数ビットで1の暗号化テキストで加算を行って暗号化テキストの商を取得し、ステップ（3-4-5）に戻る。
（3-4-7）余りの暗号化テキストの全部がゼロであるか、または小数ビット・カウンターcountが保存形式の総長さに以上にあるかについて判断を行う。Noの場合、ステップ（3-4-8）に移し、Yesの場合、暗号化テキストの除算が完了し、ステップ（3-4-13）に移して暗号化テキストに関する除算結果を取得する。
（3-4-8）余りの暗号化テキストの最右に0の暗号化テキストを添加し新たな余りの暗号化テキストを取得し、ステップ（3-4-9）に移す。
（3-4-9）ステップ（3-4-8）で取得した新たな余りの暗号化テキストが除数の暗号化テキストの以上にあるかについて判断を行う。Yesの場合にステップ（3-4-10）ステップ、Noの場合に（3-4-11）に移す。
（3-4-10）新たな余りの暗号化テキストと除数の暗号化テキスト補完コードとの加算を行って新たな余りの暗号化テキストを取得する同時に、第count個小数ビットの値を1の対応する暗号化テキストの値に設置する。
（3-4-11）第count個小数ビットの値を0の対応する暗号化テキストの値に設置してからステップ（3-4-12）に移す。
（3-4-12）小数ビット・カウンターcountに1を加算してステップ（3-4-7）に戻る。
（3-4-13）取得した暗号化テキストの値により商の整数分及び小数分を取得し、ステップ（3-4-1）における保存形式により保存を行う。
【請求項８】
下記のことを特徴とする請求項7に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
商の整数分＝xL×20+ xL-1×21+…+ x1×2L-1
その中、
x：整数分における暗号化テキストの値
商の小数分＝y1×2-1+ y2×2-2+…+ y保存形式の総長さ-L×2保存形式の総長さ-L
その中、
y：小数分における暗号化テキストの値
【請求項９】
下記のことを特徴とする請求項7に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。即ち、具体的に、ステップ（3-4-5）は被除数の暗号化テキストが除数の暗号化テキストの以上にあるか左から右まで遍歴の形式で被除数における各ビットが少なくとも除数における対応するビットに等しいかについて判断し、その中の1ビットが除数における対応ビットの以下にある場合、被除数の暗号化テキストが除数の暗号化テキストの以上にないことを示す。
【請求項１０】
下記のことを特徴とする請求項4から7までのいずれかに記載のモジュロ演算に基づく完全準同型暗号化の処理方法。即ち、暗号化テキストの加算で、先ず暗号化テキストの各ビットについて復号化公式（暗号化テキスト mod p）mod sにより対応するクリアテキストを求め、取得したクリアテキストについてビットにより加算を行ってから各ビットの加算値が進数系に等しいかについて判断し、Yesの場合、桁上げが出たことを示し、この場合に桁上げ値に戻り、それに暗号化テキストビットの加算の結果に戻り、この暗号化テキストビットの前のビットの加算の過程に1を加算し、Noの場合、桁上げが出ていないことを示し、この場合に桁上げ値及び暗号化テキストビットの加算の結果に戻り、この暗号化テキストビットの前のビットに0を加算する。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報安全分野、更に具体的に、モジュロ演算に基づく完全準同型暗号化の処理方法に関する。
【背景技術】
【０００２】
完全準同型暗号化は先進な暗号化アルゴリズムとして40年に近く成長してきたものである。1978年、R. Rivestらは「完全準同型暗号化」という概念を指摘し、2009年、C.Gentryは理論的に理想的なグリッドに基づく完全準同型暗号化案を設計し、2010年に「somewhat」準同型暗号化案を指摘し、2011年、Brakerskiらはエラーのある学習（Learning with errors、「LWE」と略す）及びリングにあるエラーのある学習（Ring learning with errors、「RLWE」と略す）を指摘し、理想的なグリッドに頼まない完全準同型暗号化案を構成したものである。
【０００３】
然しながら、従来のモジュロ演算に基づく完全準同型暗号化の処理方法に無視できない問題がある。先ず、暗号化中に暗号化テキスト乗算の騒音が制御しがたいという問題があるので、暗号化テキスト加算の結果が正しく復号化されることができなく、その次に、クリアテキスト加算の結果が進数系に等しい場合に暗号化テキスト加算の結果に復号化中に必然的に誤りが出るので、暗号化の結果が正しく復号化されることができない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の技術の上記の欠陥または改善上の需要に鑑み、本発明はモジュロ演算に基づく完全準同型暗号化の処理方法を提供し、従来のモジュロ演算に基づく完全準同型暗号化の処理方法で制御しがたい暗号化テキスト乗算の騒音及び暗号化テキスト加算の結果が桁上げの時に暗号化テキスト加算の結果と等しい場合に暗号化加算の結果に復号化中に誤りが出ることによる暗号化の結果が正しく復号化されることができないという課題を解決することを目的にする。
【課題を解決するための手段】
【０００５】
上記の目的に達成するために、本発明は下記のステップを含むモジュロ演算に基づく完全準同型暗号化の処理方法を提供する。
【０００６】
（１）暗号化中の任意数値のデータ型のクリアテキストを取得し、暗号化の需要に応じてそれを対応する桁上げビット・クリアテキストに転換する。
【０００７】
（２）ステップ（1）で取得した桁上げビット・クリアテキストにおける各数に対する暗号化演算を行い、暗号化演算で取得した暗号化テキストを組み合わせて対応する暗号化テキストの組合せを取得する。
【０００８】
（３）モジュロ暗号化に基づく暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードによりステップ（2）で取得した暗号化テキスト組合せに対する暗号化テキスト演算を行う。
【０００９】
（４）モジュロ除算によりステップ（3）取得した暗号化テキスト演算の結果に対する復号化を行って復号化されたクリアテキストを取得する。
【００１０】
望ましくは、ステップ（2）で下式で暗号化演算を行う。
【００１１】
c=（m+s×r+p×q）mod x0
【００１２】
その中、
c：暗号化テキスト
m：クリアテキストにおける桁上げビット
s：暗号化で利用される進数系
r：乱数
p：暗号化シックレートキー
x0：中間変数＝暗号化シックレートキーpと他の暗号化シックレートキーqとの積
前記のシックレートキーは開示しない。
【００１３】
望ましくは、ステップ（4）で（c mod p）mod sを利用する。
【００１４】
望ましくは、ステップ（3）で暗号化テキストに対する加算を行い、直接に暗号化テキスト組合せの2つに対する対位法加算を行う。
【００１５】
望ましくは、ステップ（3）で暗号化テキスト減算について減数の暗号化テキスト組合せの逆コードを取得してからこの逆コードにより対応する補完コードを取得し、最後にこの補完コードと被減数との暗号化テキスト組合せのオリジナルコードについて対位法加算を行う。
【００１６】
望ましくは、ステップ（3）で暗号化テキスト乗算について先ず暗号化テキスト組合せc1とc2における元素の個数nによりn×（2n-1）のマトリックスを構成し、このマトリックスの第一行の右から左までの元素が各々c1における最右の元素とc2における最右の元素との積及びc1における最右の逆第二の元素とc2における最右の元素との積である。これで類推して、c1における左第一の元素とc2における最右の元素との積である。このマトリックスの第二行の右から左までの元素が各々0の1つ、c1における最右の元素とc2における最右の逆第二の元素との積、c1における最右の逆第二の元素とc2における最右の逆第二の元素との積である。これで類推して、c1における左第一の元素とc2における最右の逆第二の元素との積である。このマトリックスの第n行の右から左までの元素が各々0の（n-1）個、c1における最右の元素とc2における左第一の元素との積、c1における最右の逆第二の元素とc2における左第一の元素との積である。これで類推して、c1における左第一の元素とc2における左第一の元素との積である。次に、構成したマトリックスの列ごとについて加算を行って新たな行ベクトルを取得し、暗号化テキスト乗算の結果にする。
【００１７】
望ましくは、ステップ（3）で暗号化テキストの除算対して下記サブステップを含む。
【００１８】
（3-4-1）積算長さが32ビット、64ビットまたは80ビットであり、符号ビット、整数ビット及び小数ビットを含み、この保存形式により2進数系クリアテキストを拡張する空の除算結果の保存形式を構成する。
【００１９】
（3-4-2）ステップ（2）のアルゴリズムにより拡張された2進数系クリアテキストについて暗号化演算を行い、暗号化演算の結果を組合せて対応する暗号化テキストを取得して被除数及び除数にする。
【００２０】
（3-4-3）ステップ（2）で取得した1の暗号化テキストと除数としての暗号化テキストとの乗算を行う。
【００２１】
（3-4-4）小数ビット・カウンターcountの初期値が保存形式と等しい長さ-Lを設置する。その中、Lは保存形式における整数ビットの長さである。
【００２２】
（3-4-5）被除数の暗号化テキストが除数の暗号化テキストの以上にあるかについて判断する。Yesの場合にステップ（3-4-6）、Noの場合にステップ（3-4-7）に移す。
【００２３】
（3-4-6）被除数の暗号化テキストとステップ（3-4-3）における除数の暗号化テキストの補完コードとの加算を行い、それによる余りを新たな被除数にし、整数ビットで1の暗号化テキストで加算を行って暗号化テキストの商を取得し、ステップ（3-4-5）に戻る。
【００２４】
（3-4-7）余りの暗号化テキストの全部がゼロであるか、または小数ビット・カウンターcountが保存形式の総長さに以上にあるかについて判断を行う。Noの場合、ステップ（3-4-8）に移し、Yesの場合、暗号化テキストの除算が完了し、ステップ（3-4-13）に移して暗号化テキストに関する除算結果を取得する。
【００２５】
（3-4-8）余りの暗号化テキストの最右に0の暗号化テキストを添加し、新たな余りの暗号化テキストを取得し、ステップ（3-4-9）に移す。
【００２６】
（3-4-9）ステップ（3-4-8）で取得した新たな余りの暗号化テキストが除数の暗号化テキストの以上にあるかについて判断を行う。Yesの場合にステップ（3-4-10）ステップ、Noの場合に（3-4-11）に移す。
【００２７】
（3-4-10）新たな余りの暗号化テキストと除数の暗号化テキスト補完コードとの加算を行って新たな余りの暗号化テキストを取得する同時に、第count個小数ビットの値を1の対応する暗号化テキストの値に設置する。
【００２８】
（3-4-11）第count個小数ビットの値を0の対応する暗号化テキストの値に設置してからステップ（3-4-12）に移す。
【００２９】
（3-4-12）小数ビット・カウンターcountに1を加算してステップ（3-4-7）に戻る。
【００３０】
（3-4-13）取得した暗号化テキストの値により商の整数分及び小数分を取得し、ステップ（3-4-1）における保存形式により保存を行う。
望ましくは、商の整数分＝xL×20+ xL-1×21+…+ x1×2L-1
その中、
x：整数分における暗号化テキストの値
【００３１】
商の小数分＝y1×2-1+ y2×2-2+…+ y保存形式の総長さ-L×2保存形式の総長さ-L
その中、
y：小数分における暗号化テキストの値
【００３２】
望ましくは、具体的に、ステップ（3-4-5）は被除数の暗号化テキストが除数の暗号化テキストの以上にあるか左から右まで遍歴の形式で被除数における各ビットが少なくとも除数における対応するビットに等しいかについて判断し、その中の1ビットが除数における対応ビットの以下にある場合、被除数の暗号化テキストが除数の暗号化テキストの以上にないことを示す。
【００３３】
望ましくは、暗号化テキストの加算で、先ず暗号化テキストの各ビットについて復号化公式（暗号化テキスト mod p）mod sにより対応するクリアテキストを求め、取得したクリアテキストについてビットにより加算を行ってから各ビットの加算値が進数系に等しいかについて判断し、Yesの場合、桁上げが出たことを示し、この場合に桁上げ値に戻り、それに暗号化テキストビットの加算の結果に戻り、この暗号化テキストビットの前のビットの加算の過程に1を加算し、Noの場合、桁上げが出ていないことを示し、この場合に桁上げ値及び暗号化テキストビットの加算の結果に戻り、この暗号化テキストビットの前のビットに0を加算する。
【発明の効果】
【００３４】
全体的に、従来の技術と比べて見ると、本発明による上記の技術案は下記の効果がある。
【００３５】
（１）本発明は従来の方法で制御しがたい暗号化テキスト乗算の騒音による暗号化テキスト加算の結果が正しく復号化されることができないという課題を解決できる。本発明は暗号化中の進数系メカニズム及び暗号化テキストの計算結果のリフレッシュを利用するので、完全準同型暗号化中に出る騒音の課題を解決できる。
【００３６】
（２）本発明は従来の方法で暗号化テキスト加算の結果が進数系に等しい場合に暗号化テキスト加算の結果に復号化中に誤りが出て暗号化の結果が正しく復号化されることができないという課題を解決できる。本発明は暗号化テキスト加算の結果が進数系に等しいかについて判断して桁上げ操作の要否を決める暗号化中の進数系メカニズムを利用するので、暗号化テキストの加算に誤りが出るという課題を解決できる。
【００３７】
（３）本発明はモジュロで暗号化された暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードにより任意のデータ暗号化テキストの間の加算、減算、乗算及び除算に達成できるので、本発明の応用分野が拡張されていて、応用分野における暗号化テキスト計算中のデータ安全性も向上した。
【図面の簡単な説明】
【００３８】
【図１】本発明モジュロ演算に基づく完全準同型暗号化の処理方法のフローチャート
【図２】本発明方法で暗号化テキスト除算過程を実行するフローチャート
【発明を実施するための形態】
【００３９】
次に、図及び実施例を利用して本発明の目的、技術案及び長所について更に詳しく説明する。もちろん、ここで、実施例は本発明について説明するためのものだけであり、本発明を限定するためのものではない。なお、本発明の下記の各実施例に関する技術特徴は互いに衝突を構成しない限り相互に組み合わせることができる。
【００４０】
桁上げビット：進数系に応じるビットの数量のことである。例えば、2進数系は1ビット、8進数系は3ビット、16進数系は4ビット、32進数系は5ビット、64進数系は6ビット、128進数系は7ビットである。
【００４１】
本発明の方法はモジュロ暗号化に基づく暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードにより全てのデータ区分の暗号化、復号化及び暗号化テキスト計算に達成したものである。この方法は電気回路関数構成による暗号化テキストのリフレッシュにより算術演算、関係演算及びロジック演算の暗号化テキスト計算に達成した。その中、算術演算は「加算」、「減算」、「乗算」及び「除算」（+、-、×、/）、関係演算は「以下」、「以下または等しい」、「以上」、「以上または等しい」、「等しい」及び「等しくない」（<、≦、>、≧、＝、≠）、ロジック演算は「と」、「または」及び「ではない」（and、 or、 not）などの操作を含む。
【００４２】
モジュロ演算に基づく完全準同型暗号化の処理方法はデータ表示、シックレートキー生成、暗号化アルゴリズム、復号化アルゴリズム及び暗号化テキスト演算（Ciphertext Operation、「CO」と略す）を含む。
【００４３】
データ表示：クリアテキストmの区分（Type）をT、Tの集合を{整数、実数、文字、年月日、ブール}など、既知のクリアテキストをmsに示す。その中、sはデータ進数系（System）を示し、即ち、2進数系、10進数系、16進数系、521進数系など、（T、ms）と示す。例えば、s=2は2進数系を示し、普通、2進数系がBで表れ、クリアテキストmが進数系mB を示し、（T、mB）と記載され、s=16は16進数系を示し、普通、16進数系がHで表れ、クリアテキストmは16進数系ビットmH を示し、普通、（T、mH）と記載され、s=512は512進数系を示し、クリアテキストmは51進数系ビットm512 を示し、（T、m512）と記載される。
【００４４】
シックレートキー生成（KeyGen）：大奇数pを選んでx0=q0×p+s×rを計算する。x0は奇数ではなければ新たに計算しなければいけない。ランダムに数のτ個を生成してxi=qi×p+s×rを計算する。その中、0≦i≦τ、qi≪q0、rは乱数である。非対称アルゴリズム用公開鍵はpk=（x0、x1、…、xi、…xτ）、プライベート鍵はp、対称アルゴリズム用シックレートキーは（x0、p）。はっきりして暗号化、復号化及び暗号化テキスト計算のアルゴリズム説明を現わすために、ワーキングキーWkey（pk、p）を導入する。
【００４５】
暗号化アルゴリズム（Enc）：KeyGenによるワーキングキーWkeyにより任意数のmの暗号化を行う。mを進数系mBに転換し、Bと表し、B=（b1、b2、…、bi、…、bn）、bi∈｛0、1｝、1≦i≦n、c=Enc（Wkey、B）となり、cは暗号化アルゴリズムfによるc=（c1、c2、…、ci、…、cn）であり、
2019517684.tif 000003
となる。その中、rは乱数である。
【００４６】
復号化アルゴリズム（Dec）：KeyGenによるワーキングキーWkeyにより入力された暗号化テキストデータcに対して、 b’=Dec（Wkey、ci）、b’は復号化アルゴリズムf’によりb’=（b1’、b2’、…、bi’、…、bn’）を取得したものである。その中、b’= f’（Wkey、ci）=（ci mod p）mod s、1≦i≦nであり、s進数系b’をクリアテキストmに転換する。
【００４７】
暗号化テキスト演算（CO）：KeyGenによるワーキングキーWkey、により入力された暗号化テキストデータの2つのc1、c2に対して、c’=CO（Wkey、c1 O c2）、c’は構成の暗号化テキスト演算関数f”計算によりc’=（c1’、c2’、…、ci’、…、cn’）
【００４８】
ci’= f”（Wkey、c1i’O c2i’）を取得したものである。
【００４９】
その中：1≦i≦n 、O∈｛+、-、×、/……｝
【００５０】
暗号化テキスト演算関数f”を構成して暗号化テキストの計算に達成し、その暗号化テキストの計算過程が暗号化アルゴリズムfにより下記の判断ルールを導出するものである。
【００５１】
s=2進数系を例にすると、
【００５２】
c1= m1+2×r1+p×r1 mod x0、
c2= m2+2×r2+p×r2 mod x0、
c=c1+c2=（m1+m2）+2×r1+p×r1+2×r2+p×r2
=（m1+m2）+2×（r1+r2）+p×（r1+r2）
c=c1×c2=（m1+2×r1+p×r1）（m2+2×r2+p×r2）
=m1×m2+m1×2×r2+m1×p×r2+2×r1×m2+2×r1×2×r2+2×r1×p×r2+p×r1×m2+p×r1×2×r2+p×r1×p×r2
=m1×m2+2×（m1×r2+m2×r1+2×r1×r2）+p×（m1×r2+4×r1×r2+r1×m2+r1×p×r2）
とすると、暗号化テキストのc mod p処理を行ってから、暗号化テキスト計算の加算及び乗算の騒音式は次の通りとなる。
【００５３】
c=（c1+c2）mod p=（m1+m2）+2（r1+r2）                         （1）
c=（c1×c2）mod p= m1×m2+2×（m1×r2+m2×r1+2×r1×r2）         （2）
クリアテキスト（m1=0、m2=0）、（m1=0、m2=1）、（m1=1、m2=0）、（m1=1、m2=1）の場合、加算の暗号化テキスト計算の判断ルールは次の通りとなる。
【００５４】
c=0+2（r1+r2）、（c mod p）mod 2=0、正確な復号化
c=1+2（r1+r2）、（c mod p）mod 2=1、正確な復号化
c=1+2（r1+r2）、（c mod p）mod 2=1、正確な復号化
=2+2（r1+r2）、（c mod p）mod 2=0、誤った復号化
乗算の暗号化テキスト計算の判断ルールは次の通りとなる。
【００５５】
c=0+4r1r2、（c mod p）mod 2=0、正確な復号化
c=0+2（r1+2r1r2）、（c mod p）mod 2=0、正確な復号化
c=0+2（r2+2r1r2）、（c mod p）mod 2=0、正確な復号化
c=1+2（r1+r2+2r1r2）、（c mod p）mod 2=1、正確な復号化
【００５６】
上記によると、騒音式（1）によると、クリアテキスト（m1=1、m2=1）の場合、暗号化テキスト加算による暗号化テキストは結果が誤ったものである。言い換えれば、復号化の際に当たり誤りが出るに違いがない。騒音式（2）によると、騒音が暗号化テキストの2つの積により指数で向上し、モジュルPされた結果が（−p/s、p/s]の範囲にない上、復号化にも誤りが出るに違いがいない。この規律を掌握してから、電気回路の2つを構成する関数は次の通りとなる。
【００５７】
１．電気回路関数f1
【００５８】
機能説明：暗号化テキスト計算の場合の騒音の課題を解決するための2進数系  暗号化テキスト計算。
【００５９】
入力パラメータ：ワーキングキーWkey（x0、p）、暗号化テキストc1、c2、オペレーターシンボルop。
【００６０】
出力パラメータ：c：戻る計算の暗号化テキスト、flag：戻る桁上げフラグ、1：桁上げ、0：桁上げ無し。
【００６１】
暗号化テキストは計算ステップが次の通りである。
【００６２】
ステップ1：初期化c=0、flag=0。
【００６３】
ステップ2：op＝addの場合にステップ3に移し、そうではない場合に暗号化テキストの乗算c=c1×c2を行い、ステップ4に移す。
【００６４】
ステップ3：暗号化テキストの2つ（（c1 mod p）mod 2） and （（c2 mod p）mod 2）真であるについて判断する。真である場合、暗号化テキストの加算c=c1+c2を行い、flag=1となる。
【００６５】
ステップ4：リフレッシュ暗号化テキストc及び桁上げフラグflagに戻る。
【００６６】
２．電気回路関数f2
【００６７】
機能説明：2進数系暗号化テキストのサイズについて判断を行い、暗号化テキスト除算の場合に続いて減算を行うことができるかという課題を解決する。
【００６８】
入力パラメータ：ワーキングキーWkey（x0、p）、暗号化テキストc1、c2。
【００６９】
出力パラメータ： c1≧c2である場合、戻る結果値flagが真であるが、そうではない場合、flagが仮である。
【００７０】
暗号化テキストは計算ステップが次の通りである。
【００７１】
ステップ1：flag=仮と初期化を行う。
【００７２】
ステップ2：暗号化テキスト（（c1 mod p）mod 2）≧（（c2 mod p）mod 2）真であるについて判断する。真である場合、flag=真となる。
【００７３】
ステップ3：flagの値に戻る。
【００７４】
図1の通りに、本発明のモジュロ演算に基づく完全準同型暗号化の処理方法は下記のステップを含む。
【００７５】
（１）暗号化中の任意数値のデータ型のクリアテキストを取得し、暗号化の需要に応じてそれを対応する桁上げビット・クリアテキストに転換する。
【００７６】
例1.クリアテキストの2つが各々m1=5、m2=3である場合、各々その2進数系暗号化を行い、取得した2進数系クリアテキストが各々101及び011である、
【００７７】
例2.クリアテキストの2つが各々m1=7、m2=3である場合、各々その2進数系暗号化を行い、取得した2進数系クリアテキストが各々111及び011である。
【００７８】
例3.クリアテキストの2つが各々m1=7、m2=2である場合、各々その2進数系暗号化を行い、取得した2進数系クリアテキストが各々111及び010である。
【００７９】
（２）ステップ（1）で取得した桁上げビット・クリアテキストにおける各数に対する暗号化演算を行い、暗号化演算で取得した暗号化テキストを組み合わせて対応する暗号化テキストの組合せを取得する。下式により暗号化演算を行う。
【００８０】
c=（m+s×r+p×q）mod x0
【００８１】
その中、
c：暗号化テキスト
m：クリアテキストにおける桁上げビット
s：暗号化で利用される進数系（例えば、2進数系の場合、s=2、      16進数系の場合、s=16）
r：乱数
p：暗号化シックレートキー
x0：中間変数＝暗号化シックレートキーpと他の暗号化シックレートキーq（その中、p及びqは奇数である）との積前記のシックレートキーは開示しない。
【００８２】
例えば、ワーキングキーp=111、q=11、x0=p×q=1221にすると、r=1と令し、クリアテキスト5の2進数系クリアテキスト101及びクリアテキスト3の2進数系クリアテキスト011における数0及び1にとって、このステップの上式で計算すると、下記の結果を取得できる。
【００８３】
数0の暗号化された暗号化テキスト＝113
数1の暗号化された暗号化テキスト＝114
【００８４】
例1：クリアテキスト5の2進数系クリアテキストが101である場合、暗号化された暗号化テキスト組合せがc1=（114、113、114）となり、クリアテキスト3の2進数系クリアテキスト011の暗号化された暗号化テキストがc2=（113、114、114）となる。
【００８５】
例2：クリアテキスト7の2進数系クリアテキストが111である場合、暗号化された暗号化テキスト組合せがc1=（114、114、114）となり、クリアテキスト3の2進数系クリアテキスト011の暗号化された暗号化テキストがc2=（113、114、114）となる。
【００８６】
例3：クリアテキスト7の2進数系クリアテキストが111である場合、暗号化された暗号化テキスト組合せがc1=（114、114、114）となり、クリアテキスト2の2進数系クリアテキスト010の暗号化された暗号化テキストがc2=（113、114、113）となる。
【００８７】
（３）モジュロ暗号化に基づく暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードによりステップ（2）で取得した暗号化テキスト組合せに対する暗号化テキスト演算を行う。図2の通りに、このステップは下記のサブステップを含む。
【００８８】
(3-1）暗号化テキストに対する加算を行い、直接に暗号化テキスト組合せの2つに対する対位法加算を行う。
【００８９】
上記の例にとって、下記の通りとなる。
【００９０】
例1：c1+c2=（114、113、114）+（113、114、114）、
例2：c1+c2=（114、114、114）+（113、114、114）、
例3：c1+c2=（114、114、114）+（113、114、113）、
【００９１】
暗号化テキストの加算で、暗号化テキストの各ビットについて復号化式（暗号化テキスト mod p）mod sにより対応するクリアテキストを求め、取得したクリアテキストについてビットにより加算を行ってから各ビットの加算値が進数系に等しいかについて判断し、Yesの場合、桁上げが出たことを示す。この場合に桁上げ値（1）に戻る上、暗号化テキストビット加算の結果（即ち、暗号化テキスト加算に達成した結果のリフレッシュ）に戻る。この暗号化テキストビットの前のビットの加算の過程に1を加算し、Noの場合、桁上げが出ていないことを示し、この場合に戻る桁上げ値（0）及び暗号化テキストビット加算の結果、この暗号化テキストビットの前のビットに0を加算する。
【００９２】
下記の暗号化テキスト減算、乗算及び除算に加算桁上げが出るが、その処理方式が上記の桁上げの過程と完全に同じであるので、下記で省略する。
【００９３】
例1：c1+c2=（114、228、228、228）
例2：c1+c2=（114、228、229、228）
例3：c1+c2=（114、228、228、227）
【００９４】
復号化アルゴリズムm=（c mod p）mod 2で検証すると、暗号化テキストの計算は正確である。
【００９５】
例1：復号化暗号化テキストc1+c2の計算結果：
（114、228、228、228）=（1000）=8
例2：復号化暗号化テキストc1+c2の計算結果：
（114、228、229、228）=（1010）=10
例3：復号化暗号化テキストc1+c2の計算結果：
（114、228、228、227）=（1001）=9
【００９６】
（3-2）暗号化テキスト減算について減数の暗号化テキスト組合せの逆コードを取得してからこの逆コードにより対応する補完コードを取得し、最後にこの補完コードと被減数との暗号化テキスト組合せのオリジナルコードについて対位法加算を行う。上記の例にとって、下記の通りとなる。
【００９７】
先ず、暗号化テキスト組合せc2の逆コード（＝進数系の数量-桁上げビット-1）を取得する。
【００９８】
c2にとって、そのクリアテキストオリジナルコードは011、第一ビット0に対応する逆コードYes2-0-1=1、第2ビット1に対応する逆コードが2-1-1=0、第3ビットが2-1-1=0であるので、その逆コードが100、対応する暗号化テキスト逆コードが暗号化テキストオリジナルコードの各ビットに1を加算する数である。
【００９９】
例1：c2逆コード=（114、115、115）、
例2：c2逆コード=（114、115、115）、
例3：c2逆コード=（114、115、114）、
【０１００】
次に、逆コードの最後ビットに1を加算して暗号化テキスト組合せc2の補完コードを取得する。
【０１０１】
例1：c2補完コード=（114、115、116）、
例2：c2補完コード=（114、115、116）、
例3：c2補完コード=（114、116、115）、
【０１０２】
最後に、c1のオリジナルコードとc2の補完コードとの加算を行って下記の結果を取得する。
【０１０３】
例1：c1-c2=c1オリジナルコード+c2補完コード=（114、113、114）+（114、115、116）=（228、229、230）
例2：c1-c2=c1オリジナルコード+c2補完コード=（114、114、114）+（114、115、116）=（229、230、230）
例3：c1-c2=c1オリジナルコード+c2補完コード=（114、114、114）+（114、116、115）=（229、230、229）
【０１０４】
注意：上記の暗号化テキストの計算中に桁上げが出ることがあるので、次に復号化アルゴリズムm=（c mod p）mod 2で検証すると、暗号化テキストの計算は正確である。
【０１０５】
例1：復号化暗号化テキストc1-c2の計算結果：（228、229、230）=（010）=2
例2：復号化暗号化テキストc1-c2の計算結果：（229、230、230）=（100）=4
例3：復号化暗号化テキストc1-c2の計算結果：（229、230、229）=（101）=5
【０１０６】
（3-3）暗号化テキスト乗算について先ず暗号化テキスト組合せc1とc2における元素の個数nにより（本実施例でn=3）n×（2n-1）のマトリックスを構成し、このマトリックスの第一行の右から左までの元素が各々c1における最右の元素とc2における最右の元素との積及びc1における最右の逆第二の元素とc2における最右の元素との積である。…c1における左第一の元素とc2における最右の元素との積であり、このマトリックスの第二行の右から左までの元素が各々0の1つ、c1における最右の元素とc2における最右の逆第二の元素との積、c1における最右の逆第二の元素とc2における最右の逆第二の元素との積、…c1における左第一の元素とc2における最右の逆第二の元素との積、…このマトリックスの第n行の右から左までの元素が各々0の（n-1）個、c1における最右の元素とc2における左第一の元素との積、c1における最右の逆第二の元素とc2における左第一の元素との積、…c1における左第一の元素とc2における左第一の元素との積である。
【０１０７】
次に、構成したマトリックスの列ごとについて加算を行って新たな行ベクトルを取得し、暗号化テキスト乗算の結果にする。
【０１０８】
例1：上記の例にとって、先ずc1（114、113、114）とc2（113、114、114）との乗算を行い、上記のルールにより下記の通りに3行5列のマトリックスを構成する。
【０１０９】
12996    12882    12996
12996    12882    12996        0
12882    12769    12882         0       0
【０１１０】
次に、このマトリックスの各列の加算を行って下記の行ベクトルを取得する。
【０１１１】
（12882    25765    38770    25878    12996）
【０１１２】
最後に、この行ベクトルを暗号化テキスト乗算の結果にする。即ち、c1×c2=（12882、25765、38770、25878、12996）。
【０１１３】
例2：上記の例にとって、先ずc1（114、114、114）とc2（113、114、114）との乗算を行い、上記のルールにより下記の通りに3行5列のマトリックスを構成する。
【０１１４】
12996    12996    12996
12996    12996    12996        0
12882    12882    12882        0        0
【０１１５】
次に、このマトリックスの各列の加算を行って下記の行ベクトルを取得する。
【０１１６】
（12883    25879    38875    25992    12996）
【０１１７】
最後に、この行ベクトルを暗号化テキスト乗算の結果にする。即ち、c1×c2=（12883、25879、38875、25992、12996）。
【０１１８】
例3：上記の例にとって、先ず、c1（114、114、114）とc2（113、114、113）との乗算を行い、上記のルールにより下記の通りに3行5列のマトリックスを構成する。
【０１１９】
12882    12882    12882
12996    12996    12996        0
12882    12882    12882        0        0
【０１２０】
次に、このマトリックスの各列の加算を行って下記の行ベクトルを取得する。
（12882    25878    38760    25878    12882）
【０１２１】
最後に、この行ベクトルを暗号化テキスト乗算の結果にする。即ち、c1×c2=（12882、25878、38760、25878、12882）。
【０１２２】
注意：上記の暗号化テキストの計算中に桁上げが出ることがあるので、次に復号化アルゴリズムm=（c mod p）mod 2で検証すると、暗号化テキストの計算は正確である。
【０１２３】
例1：復号化暗号化テキストc1×c2の計算結果：
（12882、25765、38770、25878、12996）=（01111）=15
【０１２４】
例2：復号化暗号化テキストc1×c2の計算結果：
（12883、25879、38875、25992、12996）=（10101）=21
【０１２５】
例3：復号化暗号化テキストc1×c2の計算結果：
（12882、25878、38760、25878、12882）=（01110）=14
【０１２６】
（3-4）暗号化テキストの除算対して下記サブステップを含む。
【０１２７】
（3-4-1）空の除算結果の保存形式を構成する。この保存形式は総長さが標準IEEE754に満たし、32ビット、64ビットまたは80ビットであり、符号ビット、整数ビット及び小数ビットを含み、この保存形式により2進数系クリアテキストを拡張する。
【０１２８】
注意：保存形式で、第一ビットは符号ビットであり、値を0または1にし、各々暗号化テキストの正負数の表示に用いられ、整数ビットの長さも標準IEEE754に満たし、「L」と表れる。よって、残った小数ビットは長さが（保存形式の総長さ-L）下記の通りとなる。
2019517684.tif 000004
【０１２９】
この保存形式の使用は各々除算の商の整数分及び小数分を計算することを目的にする。
【０１３０】
その中、
商の整数分＝xL×20+ xL-1×21+…+ x1×2L-1
【０１３１】
その中、
x：整数分における暗号化テキストの値
商の小数分＝y1×2-1+ y2×2-2+…+ y保存形式の総長さ-L×2保存形式の総長さ-L
【０１３２】
その中、
y：小数分における暗号化テキストの値
【０１３３】
簡単な表現及び便利な説明のために、保存形式長さ8ビットを例にして説明する。左から右までの第1ビットが符号ビット、第2〜4ビットが整数ビット、第5〜8ビットが小数ビットである。ステップ（1）で取得した2進数系クリアテキストを拡張し、拡張されたクリアテキストの長さが8ビットであり、拡張ビットに数字0で充填する。
【０１３４】
例1：ステップ（1）における2進数系クリアテキスト101が00000101、2進数系クリアテキスト011が00000011と拡張される。
【０１３５】
例2：ステップ（1）における2進数系クリアテキスト111が00000111、2進数系クリアテキスト011が00000011と拡張される。
【０１３６】
例3：ステップ（1）における2進数系クリアテキスト111が00000111、2進数系クリアテキスト010が00000010と拡張される。
【０１３７】
（3-4-2）ステップ（2）のアルゴリズムにより拡張された2進数系クリアテキストについて暗号化演算を行い、暗号化演算の結果を組合せて対応する暗号化テキストを取得して被除数及び除数にする。
【０１３８】
例1：上記の拡張されたクリアテキスト00000101及び00000011はこの過程の演算により各々（113、113、113、113、113、114、113、114）（00000101）及び（113、113、113、113、113、113、114、114）（00000011）に転換された。
【０１３９】
例2：上記の拡張されたクリアテキスト00000111及び00000011はこの過程の演算により各々（113、113、113、113、113、114、114、114）（00000111）及び（113、113、113、113、113、113、114、114）（00000011）に転換された。
【０１４０】
例3：上記の拡張されたクリアテキスト00000111及び00000010はこの過程の演算により各々（113、113、113、113、113、114、114、114）（00000111）及び（113、113、113、113、113、113、114、113）（00000010）に転換された。
【０１４１】
（3-4-3）ステップ（2）で取得した1の暗号化テキストと除数としての暗号化テキストとの乗算を行う。
【０１４２】
例1：暗号化テキスト114と（113、113、113、113、113、113、114、114）（00000011）との乗算を行うと、暗号化テキスト組合せの（12882、12882、12882、12882、 12882、12882、12996、12996）（00000011）を取得し、その積について暗号化テキスト補完コードを求め、暗号化テキスト補完コードを求めるステップ上記のステップ（3-2）と完全に同じであり、積について補完コードを求めてから取得した暗号化テキスト組合せが（12883、12883、12883、12883、12883、12883、12997、12998）（11111101）である。例2の暗号化テキスト補完コードは例1と同じである。
【０１４３】
例3：暗号化テキスト114と（113、113、113、113、113、113、114、113）（00000010）を乗算して暗号化テキスト組合せ（12882、12882、12882、12882、 12882、12882、12996、12882）（00000010）を取得し、その積について暗号化テキスト補完コードを求め、暗号化テキスト補完コードを求めるステップ上記のステップ（3-2）と完全に同じであり、積について補完コードを求めてから暗号化テキスト組合せの（12883、12883、12883、12883、12883、12883、12998、12884）（11111110）を取得する。
【０１４４】
（3-4-4）小数ビット・カウンターcountの初期値＝（保存形式の長さ-L）と設置する。
【０１４５】
（3-4-5）被除数の暗号化テキストが除数の暗号化テキストの以上にあるかについて判断する。Yesの場合、（3-4-6）ステップ、Noの場合、（3-4-7）ステップに移す。
【０１４６】
具体的に、被除数の暗号化テキストが除数の暗号化テキストの以上にあるか左から右まで遍歴の形式で被除数における各ビットが少なくとも除数における対応するビットに等しいかについて判断し、その中の1ビットが除数における対応ビットの以下にある場合、被除数の暗号化テキストが除数の暗号化テキストの以上にないことを示す。
【０１４７】
（3-4-6）被除数の暗号化テキストとステップ（3-4-3）における除数の暗号化テキストの補完コードとの加算を行い、それによる余りを新たな被除数にし、整数ビットで1の暗号化テキストで加算を行って暗号化テキストの商を取得し、ステップ（3-4-5）に戻る。
【０１４８】
例1：第1回循環の計算で取得した余りの暗号化テキスト=被除数の暗号化テキスト+除数の暗号化テキスト補完コード=（113、113、113、113、113、114、113、114）（00000101）+（12883、12883、12883、12883、12883、12883、12997、12998）（11111101）=（12997、12997、12997、12997、12997、12997、13111、13112）（00000010）。注意：この過程の加算に桁上げが出ることがあるので、余りの暗号化テキストを取得してから（3-4-5）ステップに移す。
【０１４９】
例2：第1回循環の計算で取得した余りの暗号化テキスト=被除数の暗号化テキスト+除数の暗号化テキスト補完コード=（113、113、113、113、113、114、114、114）（00000111）+（12883、12883、12883、12883、12883、12883、12997、12998）（11111101）=（12997、12997、12997、12997、12997、12998、13112、13112）（00000100）注意：この過程の加算に桁上げが出ることがあるので、余りの暗号化テキストを取得してから（3-4-5）ステップに移す。
【０１５０】
第2回の循環計算で取得した余りの暗号化テキスト=（12997、12997、12997、12997、12997、12998、13112、13112）（00000100）+（12883、12883、12883、12883、12883、12883、12997、12998）（11111101）=（25881、25881、25881、25881、25881、25881、26109、26110）（00000001）
【０１５１】
例3：第1回循環の計算で取得した余りの暗号化テキスト=被除数の暗号化テキスト+除数の暗号化テキスト補完コード=（113、113、113、113、113、114、114、114）（00000111）+（12883、12883、12883、12883、12883、12883、12998、12884）（11111110）=（12997、12997、12997、12997、12997、12998、13112、12998）（00000101）注意：この過程の加算に桁上げが出ることがあるので、余りの暗号化テキストを取得してから（3-4-5）ステップに移す。
【０１５２】
第2回の循環計算で取得した余りの暗号化テキスト=（12997、12997、12997、12997、12997、12998、13112、12998）（00000101）+（12883、12883、12883、12883、12883、12883、12998、12884）（11111110）=（25881、25881、25881、25881、25881、25881、26110、25882）（00000011）
【０１５３】
第3回の循環計算で取得した余りの暗号化テキスト=（25881、25881、25881、25881、25881、25881、26110、25882）（00000011）+（12883、12883、12883、12883、12883、12883、12998、12884）（11111110）=（38765、38765、38763、38765、38765、38765、39108、38766）（00000001）
【０１５４】
（3-4-7）余りの暗号化テキストの全部がゼロであるか、または小数ビット・カウンターcountが保存形式の総長さに以上にあるかについて判断を行う。Noの場合、ステップ（3-4-8）に移し、Yesの場合、暗号化テキストの除算が完了し、ステップ（3-4-13）に移して暗号化テキストに関する除算結果を取得する。
【０１５５】
（3-4-8）余りの暗号化テキストの最右に0の暗号化テキストを添加し新たな余りの暗号化テキストを取得し、ステップ（3-4-9）に移す。
【０１５６】
例1：第1回の循環で取得した新たな余りの暗号化テキストは（12997、12997、12997、12997、12997、13111、13112、113）（00000100）である。
【０１５７】
例2：第1回の循環で取得した新たな余りの暗号化テキストは（25881、25881、25881、25881、25881、26109、26110、113）（000000010）である。
【０１５８】
第2回の循環で取得した新たな余りの暗号化テキストは（25881、25881、25881、25881、26109、26110、113、113）（0000000100）である。
【０１５９】
例3：第1回の循環で取得した新たな余りの暗号化テキストは（38765、38763、38765、38765、38765、39108、38766、113）（00000010）である。
【０１６０】
（3-4-9）ステップ（3-4-8）で取得した新たな余りの暗号化テキストが除数の暗号化テキストの以上にあるかについて判断を行う。Yesの場合にステップ（3-4-10）ステップ、Noの場合に（3-4-11）に移す。
【０１６１】
（3-4-10）新たな余りの暗号化テキストと除数の暗号化テキスト補完コードとの加算を行って新たな余りの暗号化テキストを取得する同時に、第count個小数ビットの値を1の対応する暗号化テキストの値に設置する。例えば、1の暗号化テキストは114であり、次にステップ（3-4-12）に移す。
【０１６２】
例1：更に新たな余りの暗号化テキスト=新たな余りの暗号化テキスト+除数の暗号化テキスト補完コード=（12997、12997、12997、12997、12997、13111、13112、113）（00000100）+（12883、12883、12883、12883、12883、12883、12997、12998）（11111101）=（25881、25881、25881、25881、25881、25994、26109、13111）（00000001）
【０１６３】
例2：更に新たな余りの暗号化テキスト=新たな余りの暗号化テキスト+除数の暗号化テキスト補完コード=（25881、25881、25881、25881、26109、26110、113、113）（0000000100）+（12883、12883、12883、12883、12883、12883、12997、12998）（11111101）=（38765、38765、38765、38765、38993、38993、13110、13111）（00000001）
【０１６４】
例3：更に新たな余りの暗号化テキスト=新たな余りの暗号化テキスト+除数の暗号化テキスト補完コード=（38765、38763、38765、38765、38765、39108、38766、113）（00000010）+（12883、12883、12883、12883、12883、12883、12998、12884）（11111110）=（51649、51649、51649、51649、51649、51992、51764、12997）（00000000）
【０１６５】
（3-4-11）第count個小数ビットの値を0と対応する暗号化テキストの値に設置する。例えば、0の暗号化テキストは113であり、次にステップ（3-4-12）に移す。
【０１６６】
（3-4-12）小数ビット・カウンターcountに1を加算してステップ（3-4-7）に戻る。
【０１６７】
（3-4-13）取得した暗号化テキストの値により商の整数分及び小数分を取得し、ステップ（3-4-1）における保存形式により保存を行う。
【０１６８】
例1：整数分について（3-4-6）ステップを実行し、次の暗号化テキスト114を記録する。この例は整除不可の数であるので、小数ビットがいっぱいになるまで記録する。即ち、小数ビット・カウンターcountが保存形式の総長さの以上になり、暗号化テキストの除算が完了するようにする。即ち、小数分について循環中に（3-4-10）、（3-4-11）、（3-4-10）及び（3-4-11）というステップの4つを実行し、各々小数ビットの第5ビットから第8ビットまで記録した暗号化テキストが114、113、114及び113である。即ち、商の暗号化テキストの値が（113、113、113、114、114、113、114、113）である。
【０１６９】
例2：整数分の循環について（3-4-6）ステップを2回に実行する。第1回に整数ビットの第4ビットに次の暗号化テキストの値114、第2回に整数ビットの第4ビットで暗号化文値114を記録する。よって、整数ビットの暗号化テキストの値は113、114、228である。この例は整除不可の数であるので、小数ビットがいっぱいになるまで記録する。即ち、小数ビット・カウンターcountが保存形式の総長さの以上になり、暗号化テキストの除算が完了するようにする。即ち、小数分について循環中に（3-4-10）、（3-4-11）、（3-4-10）及び（3-4-11）というステップの4つを実行し、各々小数ビットの第5ビットから第8ビットまで記録した暗号化テキストの値が113、114、113及び114である。即ち、商の暗号化テキストの値の（113、113、114、228、113、114、113、114）である。
【０１７０】
例3：整数分の循環について（3-4-6）ステップを3回に実行する。第1回に整数ビットの第4ビットに次の暗号化テキストの値114、第2回に整数ビットの第4ビットで暗号化文値114を記録する。よって、整数ビットの暗号化テキストの値は113、114、228である。第3回に整数ビットの第4ビットで暗号化文値114を記録する。よって、整数ビットの暗号化テキストの値が113、114342である。この例が整除可の数であるので、余りの暗号化テキストの全部がゼロであり、暗号化テキストの除算が完了するようにする。即ち、小数分について循環中に（3-4-10）ステップを実行し、小数ビットの第5ビットで記録した暗号化テキストの値が114である。即ち、商の暗号化テキストの値が（113、113、114、342、114、113、113、113）である。
【０１７１】
上記の暗号化テキストの計算過程に取得した結果がクリアテキスト計算の結果と一致する。
【０１７２】
例1：
c1/c2=5/3=（113、113、113、113、113、114、113、114）（00000101）/（113、113、113、113、113、113、114、114）（00000011）=（113、113、113、114、114、113、114、113）。
【０１７３】
例2：
c1/c2=7/3=（113、113、113、113、113、114、114、114）（00000111）/（113、113、113、113、113、113、114、114）（00000011）=（113、113、114、228、113、114、113、114）。
【０１７４】
例3：
c1/c2=7/2=（113、113、113、113、113、114、114、114）（00000111）/（113、113、113、113、113、113、114、114）（00000010）=（113、113、114、342、114、113、113、113）。
【０１７５】
注意：上記の暗号化テキストの計算中に桁上げが出ることがあるので、次に復号化アルゴリズムm=（c mod p）mod 2で検証すると、暗号化テキストの計算は正確である。
【０１７６】
例1：復号化暗号化テキストc1/c2計算結果：（113、113、113、114、114、113、114、113）=（00011010）=1.625
【０１７７】
説明：この例の浮動小数点数の小数ビットが4ビットだけであるので、結果が1.625であるが、小数ビッを7ビットで表すと、結果が1.664063となる。これによると、小数ビットの精度は保留小数ビットの長さに関する。
【０１７８】
例2：復号化暗号化テキストc1/c2の計算結果：（113、113、114、228、113、114、113、114）=（00100101）=2.3125
【０１７９】
説明：この例の浮動小数点数の小数ビットが4ビットだけであるので、結果が2.3125であるが、小数ビットを8ビットで表すと、結果が2.332031となる。これによると、小数ビットの精度は保留小数ビットの長さに関する。
【０１８０】
例3：復号化暗号化テキストc1/c2の計算結果：（113、113、114、342、114、113、113、113）=（00111000）=3.5
【０１８１】
上記の暗号化テキスト計算の結果によると、クリアテキストの2つが暗号化されてから暗号化テキストの加算、減算、乗算及び除算を行った暗号化テキスト計算の結果が復号化されてからクリアテキストの計算結果と同じである。
【０１８２】
（４）モジュロ除算によりステップ（3）取得した暗号化テキスト演算の結果に対する復号化を行って復号化されたクリアテキストを取得する。具体的に、式の（c mod p）mod sを利用するものである。
【０１８３】
上記のステップで言及した全ての例にとって、加算、減算、乗算及び除算の暗号化演算の末で後継ぎの復号化の過程及び結果について詳細に説明を行ったので、このステップで単独してそれについて重複する説明をしない。
【０１８４】
本分野の技術者が容易に理解できるように、上記は本発明の望ましい実施例に過ぎなく、本発明を制限するものではなく、本発明の精神及び原則の範囲で行ういかなる改訂、同等切替及び改善が本発明の保護範囲に含まれるものである。
【図１】
2019517684.tif 000005
【図２】
2019517684.tif 000006
【国際調査報告】
2019517684.tif 000007
2019517684.tif 000008
2019517684.tif 000009
2019517684.tif 000010