JP6682041B2 - モジュロ演算に基づく完全準同型暗号化の処理方法 - Google Patents

モジュロ演算に基づく完全準同型暗号化の処理方法 Download PDF

Info

Publication number
JP6682041B2
JP6682041B2 JP2019514179A JP2019514179A JP6682041B2 JP 6682041 B2 JP6682041 B2 JP 6682041B2 JP 2019514179 A JP2019514179 A JP 2019514179A JP 2019514179 A JP2019514179 A JP 2019514179A JP 6682041 B2 JP6682041 B2 JP 6682041B2
Authority
JP
Japan
Prior art keywords
ciphertext
bit
text
encryption
rightmost
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019514179A
Other languages
English (en)
Other versions
JP2019517684A (ja
Inventor
胡和平
廖云峰
Original Assignee
深▲せん▼市全同態科技有限公司
胡和平
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 深▲せん▼市全同態科技有限公司, 胡和平 filed Critical 深▲せん▼市全同態科技有限公司
Publication of JP2019517684A publication Critical patent/JP2019517684A/ja
Application granted granted Critical
Publication of JP6682041B2 publication Critical patent/JP6682041B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)

Description

本発明は情報安全分野、更に具体的に、モジュロ演算に基づく完全準同型暗号化の処理方法に関する。
完全準同型暗号化は先進な暗号化アルゴリズムとして40年に近く成長してきたものである。1978年、R. Rivestらは「完全準同型暗号化」という概念を指摘し、2009年、C.Gentryは理論的に理想的なグリッドに基づく完全準同型暗号化案を設計し、2010年に「somewhat」準同型暗号化案を指摘し、2011年、Brakerskiらはエラーのある学習(Learning with errors、「LWE」と略す)及びリングにあるエラーのある学習(Ring learning with errors、「RLWE」と略す)を指摘し、理想的なグリッドに頼まない完全準同型暗号化案を構成したものである。
然しながら、従来のモジュロ演算に基づく完全準同型暗号化の処理方法に無視できない問題がある。先ず、暗号化中に暗号化テキスト乗算の騒音が制御しがたいという問題があるので、暗号化テキスト加算の結果が正しく復号化されることができなく、その次に、クリアテキスト加算の結果が進数系に等しい場合に暗号化テキスト加算の結果に復号化中に必然的に誤りが出るので、暗号化の結果が正しく復号化されることができない。
従来の技術の上記の欠陥または改善上の需要に鑑み、本発明はモジュロ演算に基づく完全準同型暗号化の処理方法を提供し、従来のモジュロ演算に基づく完全準同型暗号化の処理方法で制御しがたい暗号化テキスト乗算の騒音及び暗号化テキスト加算の結果が桁上げの時に暗号化テキスト加算の結果と等しい場合に暗号化加算の結果に復号化中に誤りが出ることによる暗号化の結果が正しく復号化されることができないという課題を解決することを目的にする。
上記の目的に達成するために、本発明は下記のステップを含むモジュロ演算に基づく完全準同型暗号化の処理方法を提供する。
(1)暗号化中の任意数値のデータ型のクリアテキストを取得し、暗号化の需要に応じてそれを対応する桁上げビット・クリアテキストに転換する。
(2)ステップ(1)で取得した桁上げビット・クリアテキストにおける各数に対する暗号化演算を行い、暗号化演算で取得した暗号化テキストを組み合わせて対応する暗号化テキストの組合せを取得する。
(3)モジュロ暗号化に基づく暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードによりステップ(2)で取得した暗号化テキスト組合せに対する暗号化テキスト演算を行う。
(4)モジュロ除算によりステップ(3)取得した暗号化テキスト演算の結果に対する復号化を行って復号化されたクリアテキストを取得する。
望ましくは、ステップ(2)で下式で暗号化演算を行う。
c=(m+s×r+p×r)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を加算する。
全体的に、従来の技術と比べて見ると、本発明による上記の技術案は下記の効果がある。
(1)本発明は従来の方法で制御しがたい暗号化テキスト乗算の騒音による暗号化テキスト加算の結果が正しく復号化されることができないという課題を解決できる。本発明は暗号化中の進数系メカニズム及び暗号化テキストの計算結果のリフレッシュを利用するので、完全準同型暗号化中に出る騒音の課題を解決できる。
(2)本発明は従来の方法で暗号化テキスト加算の結果が進数系に等しい場合に暗号化テキスト加算の結果に復号化中に誤りが出て暗号化の結果が正しく復号化されることができないという課題を解決できる。本発明は暗号化テキスト加算の結果が進数系に等しいかについて判断して桁上げ操作の要否を決める暗号化中の進数系メカニズムを利用するので、暗号化テキストの加算に誤りが出るという課題を解決できる。
(3)本発明はモジュロで暗号化された暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードにより任意のデータ暗号化テキストの間の加算、減算、乗算及び除算に達成できるので、本発明の応用分野が拡張されていて、応用分野における暗号化テキスト計算中のデータ安全性も向上した。
本発明モジュロ演算に基づく完全準同型暗号化の処理方法のフローチャート 本発明方法で暗号化テキスト除算過程を実行するフローチャート
次に、図及び実施例を利用して本発明の目的、技術案及び長所について更に詳しく説明する。もちろん、ここで、実施例は本発明について説明するためのものだけであり、本発明を限定するためのものではない。なお、本発明の下記の各実施例に関する技術特徴は互いに衝突を構成しない限り相互に組み合わせることができる。
桁上げビット:進数系に応じるビットの数量のことである。例えば、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)であり、
Figure 0006682041
となる。その中、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つを構成する関数は次の通りとなる。
1.電気回路関数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に戻る。
2.電気回路関数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)暗号化中の任意数値のデータ型のクリアテキストを取得し、暗号化の需要に応じてそれを対応する桁上げビット・クリアテキストに転換する。
例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である。
(2)ステップ(1)で取得した桁上げビット・クリアテキストにおける各数に対する暗号化演算を行い、暗号化演算で取得した暗号化テキストを組み合わせて対応する暗号化テキストの組合せを取得する。下式により暗号化演算を行う。
c=(m+s×r+p×r)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)となる。
(3)モジュロ暗号化に基づく暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードによりステップ(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)下記の通りとなる。
Figure 0006682041
この保存形式の使用は各々除算の商の整数分及び小数分を計算することを目的にする。
その中、
商の整数分=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つが暗号化されてから暗号化テキストの加算、減算、乗算及び除算を行った暗号化テキスト計算の結果が復号化されてからクリアテキストの計算結果と同じである。
(4)モジュロ除算によりステップ(3)取得した暗号化テキスト演算の結果に対する復号化を行って復号化されたクリアテキストを取得する。具体的に、式の(c mod p)mod sを利用するものである。
上記のステップで言及した全ての例にとって、加算、減算、乗算及び除算の暗号化演算の末で後継ぎの復号化の過程及び結果について詳細に説明を行ったので、このステップで単独してそれについて重複する説明をしない。
本分野の技術者が容易に理解できるように、上記は本発明の望ましい実施例に過ぎなく、本発明を制限するものではなく、本発明の精神及び原則の範囲で行ういかなる改訂、同等切替及び改善が本発明の保護範囲に含まれるものである。

Claims (10)

  1. 下記のステップを含むことを特徴とするモジュロ演算に基づく完全準同型暗号化の処理方法。
    (1)暗号化中の任意数値のデータ型のクリアテキストを取得し、暗号化の需要に応じてそれを対応する桁上げビット・クリアテキストに転換する。
    (2)ステップ(1)で取得した桁上げビット・クリアテキストにおける各数に対する暗号化演算を行い、暗号化演算で取得した暗号化テキストを組み合わせて対応する暗号化テキストの組合せを取得する。
    (3)モジュロ暗号化に基づく暗号化テキストオリジナルコード、暗号化テキスト逆コード及び暗号化テキスト補完コードによりステップ(2)で取得した暗号化テキスト組合せに対する暗号化テキスト演算を行う。
    (4)モジュロ除算によりステップ(3)取得した暗号化テキスト演算の結果に対する復号化を行って復号化されたクリアテキストを取得する。
  2. ステップ(2)で下式で暗号化演算を行うことを特徴とする請求項1に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
    c=(m+s×r+p×r)mod x0
    その中、
    c:暗号化テキスト
    m:クリアテキストにおける桁上げビット
    s:暗号化で利用される進数系
    r:乱数
    p:暗号化シクレトキー
    x0:中間変数=暗号化シクレトキーpと他の暗号化シクレトキーqとの積
    前記の暗号化クレトキーは開示しない。
  3. ステップ(4)で下式を利用することを特徴とする請求項2に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
    (c mod p)mod s
  4. ステップ(3)で、暗号化テキストに対する加算を行い、直接に暗号化テキスト組合せの2つに対する対位法加算を行うことを特徴とする請求項3に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
  5. ステップ(3)で暗号化テキスト減算について減数の暗号化テキスト組合せの逆コードを取得してからこの逆コードにより対応する補完コードを取得し、最後にこの補完コードと被減数との暗号化テキスト組合せのオリジナルコードについて対位法加算を行うことを特徴とする請求項3に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
  6. 下記のことを特徴とする請求項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における左第一の元素との積である。次に、構成したマトリックスの列ごとについて加算を行って新たな行ベクトルを取得し、暗号化テキスト乗算の結果にする。
  7. ステップ(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)における保存形式により保存を行う。
  8. 下記のことを特徴とする請求項7に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。
    商の整数分=xL×20+ xL-1×21+…+ x1×2L-1
    その中、
    x:整数分における暗号化テキストの値
    商の小数分=y1×2-1+ y2×2-2+…+ y保存形式の総長さ-L×2保存形式の総長さ-L
    その中、
    y:小数分における暗号化テキストの値
  9. 下記のことを特徴とする請求項7に記載のモジュロ演算に基づく完全準同型暗号化の処理方法。即ち、具体的に、ステップ(3-4-5)は被除数の暗号化テキストが除数の暗号化テキストの以上にあるか左から右まで遍歴の形式で被除数における各ビットが少なくとも除数における対応するビットに等しいかについて判断し、その中の1ビットが除数における対応ビットの以下にある場合、被除数の暗号化テキストが除数の暗号化テキストの以上にないことを示す。
  10. 下記のことを特徴とする請求項4から7までのいずれかに記載のモジュロ演算に基づく完全準同型暗号化の処理方法。即ち、暗号化テキストの加算で、先ず暗号化テキストの各ビットについて復号化公式(暗号化テキスト mod p)mod sにより対応するクリアテキストを求め、取得したクリアテキストについてビットにより加算を行ってから各ビットの加算値が進数系に等しいかについて判断し、Yesの場合、桁上げが出たことを示し、この場合に桁上げ値に戻り、それに暗号化テキストビットの加算の結果に戻り、この暗号化テキストビットの前のビットの加算の過程に1を加算し、Noの場合、桁上げが出ていないことを示し、この場合に桁上げ値及び暗号化テキストビットの加算の結果に戻り、この暗号化テキストビットの前のビットに0を加算する。
JP2019514179A 2016-12-13 2017-11-23 モジュロ演算に基づく完全準同型暗号化の処理方法 Active JP6682041B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201611145127.8A CN106452723B (zh) 2016-12-13 2016-12-13 一种基于模运算的全同态加密处理方法
CN201611145127.8 2016-12-13
PCT/CN2017/112482 WO2018107949A1 (zh) 2016-12-13 2017-11-23 一种基于模运算的全同态加密处理方法

Publications (2)

Publication Number Publication Date
JP2019517684A JP2019517684A (ja) 2019-06-24
JP6682041B2 true JP6682041B2 (ja) 2020-04-15

Family

ID=58217890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019514179A Active JP6682041B2 (ja) 2016-12-13 2017-11-23 モジュロ演算に基づく完全準同型暗号化の処理方法

Country Status (5)

Country Link
US (1) US10868666B2 (ja)
EP (1) EP3531611A4 (ja)
JP (1) JP6682041B2 (ja)
CN (1) CN106452723B (ja)
WO (1) WO2018107949A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106452723B (zh) * 2016-12-13 2017-05-31 深圳市全同态科技有限公司 一种基于模运算的全同态加密处理方法
CN106953722B (zh) * 2017-05-09 2017-11-07 深圳市全同态科技有限公司 一种全同态加密的密文查询方法和系统
CN107294697B (zh) * 2017-07-21 2019-08-13 西安电子科技大学 基于明文相似矩阵的对称全同态加密方法
CN107977193A (zh) * 2017-12-12 2018-05-01 金陵科技学院 一种基于 b/s 架构下的高精度计算方法
CN110335586B (zh) * 2018-03-31 2021-07-02 深圳市掌网科技股份有限公司 一种信息转换方法及系统
CN110019075B (zh) * 2018-08-09 2021-08-10 苏州科达科技股份有限公司 日志加密方法与解密方法及装置
CN109190414B (zh) * 2018-08-09 2021-06-15 宁波大学 一种用于乘法器的全同态混淆方法
CN109190395B (zh) * 2018-08-21 2020-09-04 浙江大数据交易中心有限公司 一种基于数据变换的全同态加密方法及系统
CN109412786B (zh) * 2018-11-14 2022-09-06 沈阳航空航天大学 一种基于同态加密的整数密文算术运算方法
CN109921907B (zh) * 2019-02-12 2023-11-07 国网安徽省电力有限公司电力科学研究院 一种身份认证识别算法和基于该算法的系统
CN113098675B (zh) * 2019-12-23 2023-04-18 郑珂威 基于多项式完全同态的二进制数据加密系统及方法
US12099997B1 (en) 2020-01-31 2024-09-24 Steven Mark Hoffberg Tokenized fungible liabilities
KR20210147645A (ko) 2020-05-29 2021-12-07 삼성전자주식회사 동형 암호화 장치 및 그것의 암호문 연산 방법
CN112231718B (zh) * 2020-07-13 2024-03-12 广发银行股份有限公司 数据加密处理方法、装置、计算机设备和存储介质
KR20220009643A (ko) 2020-07-16 2022-01-25 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 클라이언트 및 서버, 및 이의 동작 방법
CN111885079B (zh) * 2020-07-31 2022-04-12 支付宝(杭州)信息技术有限公司 保护数据隐私的多方联合处理数据的方法及装置
CN112543091B (zh) * 2020-10-26 2022-10-14 中国人民武装警察部队工程大学 密文长度固定的多密钥全同态加密方法
CN112367157B (zh) * 2020-10-31 2023-05-12 深圳供电局有限公司 一种物联网环境加密方法及装置
EP4050471A1 (en) * 2021-02-26 2022-08-31 Zama SAS Encrypted scalar multiplication
CN113032848B (zh) * 2021-05-20 2021-08-10 华控清交信息科技(北京)有限公司 一种数据处理方法和用于数据处理的芯片
CN113343262B (zh) * 2021-06-22 2022-10-11 海光信息技术股份有限公司 同态加密装置、同态加密芯片及同态加密方法
CN113794548A (zh) * 2021-09-13 2021-12-14 深圳前海微众银行股份有限公司 同态加密方法、设备、介质及计算机程序产品
JP7187074B1 (ja) * 2021-10-26 2022-12-12 株式会社アクセル 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP7187076B1 (ja) 2021-11-26 2022-12-12 株式会社アクセル 暗号処理装置、暗号処理方法、及び暗号処理プログラム
CN113965314B (zh) * 2021-12-22 2022-03-11 深圳市洞见智慧科技有限公司 同态加密处理方法及相关设备
US11856083B2 (en) * 2022-01-06 2023-12-26 International Business Machines Corporation Analysis and debugging of fully-homomorphic encryption
US20230344617A1 (en) * 2022-04-20 2023-10-26 Crypto Lab Inc. Apparatus for bootstrap processing homomorphic encrypted message and method thereof
CN115314600B (zh) * 2022-10-12 2023-01-24 山东沃尔美肥业有限公司 一种化肥生产监控数据管理方法
CN115801224B (zh) * 2023-01-16 2023-04-28 北京隐算科技有限公司 一种云计算环境中支持浮点数运算的全同态加密方法
WO2024210231A1 (ko) * 2023-04-03 2024-10-10 엘지전자 주식회사 통신 시스템에서 동형 암호 기반의 통신 방법 및 이를 위한 장치
CN116743349B (zh) * 2023-08-14 2023-10-13 数据空间研究院 一种Paillier密文求和方法、系统、装置和存储介质

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69840959D1 (de) * 1997-12-17 2009-08-20 Nippon Telegraph & Telephone Verschlüsselungs- und Entschlüsselungsvorrichtungen für Kryptosysteme mit öffentlichem Schlüssel und Aufzeichnungsmedium mit darauf gespeicherten zugehörigen Verarbeitungsprogrammen.
US6785388B1 (en) * 1998-09-16 2004-08-31 Murata Kikai Kabushiki Kaisha Encryption method, decryption method, encryption/decryption method, cryptographic communications system, and computer usable medium
US7532720B2 (en) * 2003-10-15 2009-05-12 Microsoft Corporation Utilizing SIMD instructions within montgomery multiplication
US20050157872A1 (en) * 2003-11-12 2005-07-21 Takatoshi Ono RSA public key generation apparatus, RSA decryption apparatus, and RSA signature apparatus
US7769168B2 (en) * 2005-03-31 2010-08-03 Microsoft Corporation Locally interative encryption generating compliant ciphertext for general syntax specifications
US20060251248A1 (en) * 2005-05-03 2006-11-09 Jesse Lipson Public key cryptographic methods and systems with preprocessing
JP5297918B2 (ja) * 2009-07-03 2013-09-25 日本電信電話株式会社 暗号化数値二進変換システム及び方法とプログラム
US9442980B1 (en) * 2010-04-21 2016-09-13 Stan Trepetin Mathematical method for performing homomorphic operations
US9946810B1 (en) * 2010-04-21 2018-04-17 Stan Trepetin Mathematical method for performing homomorphic operations
US8812877B2 (en) * 2011-11-11 2014-08-19 Nec Corporation Database encryption system, method, and program
WO2014016795A2 (en) * 2012-07-26 2014-01-30 Nds Limited Method and system for homomorphicly randomizing an input
CN103259643B (zh) * 2012-08-14 2016-06-15 苏州大学 一种矩阵全同态加密方法
JP6083234B2 (ja) * 2012-12-27 2017-02-22 富士通株式会社 暗号処理装置
CN105099653A (zh) * 2014-05-20 2015-11-25 华为技术有限公司 分布式数据处理方法、装置及系统
CN105323209A (zh) * 2014-06-05 2016-02-10 江苏博智软件科技有限公司 全同态加密和多重数字水印技术的云数据安全保护方法
JP2016012111A (ja) * 2014-06-30 2016-01-21 富士通株式会社 暗号処理方法、暗号処理装置、および暗号処理プログラム
CN104283669B (zh) * 2014-08-25 2017-07-18 东南大学 全同态加密中重加密深度优化方法
JP2016131335A (ja) * 2015-01-14 2016-07-21 富士通株式会社 情報処理方法、情報処理プログラムおよび情報処理装置
US10061715B2 (en) * 2015-06-02 2018-08-28 Hong Kong Baptist University Structure-preserving subgraph queries
US10581812B2 (en) * 2015-12-01 2020-03-03 Duality Technologies, Inc. Device, system and method for fast and secure proxy re-encryption
US10129029B2 (en) * 2016-06-16 2018-11-13 International Business Machines Corporation Proofs of plaintext knowledge and group signatures incorporating same
US9973342B2 (en) * 2016-06-16 2018-05-15 International Business Machines Corporation Authentication via group signatures
US10833841B2 (en) * 2016-07-13 2020-11-10 Sap Se Leakage-free order-preserving encryption
CN106452723B (zh) * 2016-12-13 2017-05-31 深圳市全同态科技有限公司 一种基于模运算的全同态加密处理方法

Also Published As

Publication number Publication date
US10868666B2 (en) 2020-12-15
CN106452723B (zh) 2017-05-31
EP3531611A1 (en) 2019-08-28
EP3531611A4 (en) 2019-11-27
WO2018107949A1 (zh) 2018-06-21
JP2019517684A (ja) 2019-06-24
CN106452723A (zh) 2017-02-22
US20180359079A1 (en) 2018-12-13

Similar Documents

Publication Publication Date Title
JP6682041B2 (ja) モジュロ演算に基づく完全準同型暗号化の処理方法
JP6783877B2 (ja) 完全準同型暗号化の暗号化テキストのクエリメソッド及びシステム
US11159305B2 (en) Homomorphic data decryption method and apparatus for implementing privacy protection
Carlet Boolean functions for cryptography and coding theory
CN101911009B (zh) 用于以签名方案进行非对称加密的对策方法和设备
Shoufan et al. A novel cryptoprocessor architecture for the McEliece public-key cryptosystem
RU2124814C1 (ru) Способ шифрования блоков цифровых данных
Shantha et al. Analysis and implementation of ECC algorithm in lightweight device
EP3352411B1 (en) Method of generating cryptographic key pairs
CN103929305A (zh) Sm2签名算法的实现方法
Childs Cryptology and Error Correction
Nagpaul Topics in applied abstract algebra
CN108418687B (zh) 一种适合sm2算法的快速模约减方法和介质
Babenko et al. Euclidean division method for the homomorphic scheme ckks
Musukwa Counting extended irreducible binary Goppa codes of degree 2p and length 2^ n+ 1
Opalikhina Applied aspects of number theory
Beletsky Synthesis of Сryptoresistant Generators of Pseudorandom Numbers Based on Generalized Galois and Fibonacci Matrixes
Raharinirina Use of signed permutations in cryptography
Cleveland Number Theory
US20140286487A1 (en) Method for generating a one-way function
Yadav et al. Three novel theorems for applied cryptography
Elfadel Cryptography by means of linear algebra and number theory
Kumar et al. On Security and Performance in ECC Noncommutative Cryptography and Signcryption
Zakasovskaya et al. Construction of asymmetric cryptosystems using finite non-commutative algebraic groups
JPS6350883A (ja) 分割整数剰余計算機

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200324

R150 Certificate of patent or registration of utility model

Ref document number: 6682041

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250