(57)【要約】【課題】  本発明は下記のステップを含む完全準同型暗号化の暗号化テキストのクエリメソッドを開示する。【解決手段】  任意データ型のクリアテキストを取得し、当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行い、クエリ条件としてのクリアテキストを受信し、当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として記憶を行い、取得したクエリされる対象及びクエリする対象について進数系暗号化テキスト対位法加算を行い、加算結果を暗号化テキストクエのリ結果としてクリアテキストに復号化し、取得したクリアテキストとクエリ条件としてのクリアテキストとの比較を行い、二者が同じであると、暗号化テキスに関するトクエリ結果が正確であること、反対に、暗号化テキスに関するトクエリ結果が違うことを示す。本発明は従来の対称暗号アルゴリズムに基づく暗号化テキストのクエリメソッドで同じシックレートキーを使用して暗号化された暗号化テキストが始終に同じであり、復号化不要でクエリされる内容の真偽を判断でき、機密情報の漏えいという技術上の課題があるという課題を解決できる。【選択図】図１
2019523909.tif 000002
【特許請求の範囲】
【請求項１】
下記のステップを含むことを特徴とする完全準同型暗号化の暗号化テキストのクエリメソッド。
（１）任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行う。
（２）クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行う。
（３）ステップ（１）で取得したクエリされる対象及びステップ（２）で取得したクエリする対象に関する進数系暗号化テキストの対位法加算を行い、暗号化テキストに関するクエリ結果を取得するようにする。
（４）ステップ（３）で取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、復号化によるクリアテキストとステップ（２）でクエリ条件そしてのクリアテキストとの比較を行い、二者が同じであると、暗号化テキスに関するトクエリ結果が正確であること、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示す。
【請求項２】
下記のステップを含むことを特徴とする完全準同型暗号化の暗号化テキストのクエリメソッド。
（１）任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行う。
（２）クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行う。
（３）ステップ（１）で取得したクエリされる対象とステップ（２）で取得したクエリする対象に対する進数系暗号化テキストの対位法減算を行い、それによる差の値を暗号化テキストに関するクエリ結果にする。
（４）ステップ（3）で取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、当該クリアテキストがゼロであるかを判断し、Yesの場合、暗号化テキスに関するトクエリ結果が正しいこと、即ち、クエリする対象がクエリされる対象にあることを示し、Noの場合、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示す。
【請求項３】
ステップ（１）に具体的に下記のサブステップを含むことを特徴とする請求項１または２に記載の暗号化テキストのクエリメソッド。
（1-1）任意データ型のクリアテキストを取得し、それを進数系のクリアテキストに転換する。
（1-2）ステップ（1-1）で取得した進数系のクリアテキストの中の各進数系の値に対する暗号化を行い、暗号化の結果を暗号化テキストの組合せを構成し、当該暗号化テキストの組合せをクエリされる対象として暗号化テキストの記憶を行う。
【請求項４】
ステップ（２）に具体的に下記のサブステップを含むことを特徴とする請求項３に記載の暗号化テキストのクエリメソッド。
（2-1）クエリ条件としてのクリアテキストを取得し、それを進数系のクリアテキストに転換する。
（2-2）ステップ（2-1）で取得した進数系のクリアテキストにおける各進数系の値に対する暗号化を行い、暗号化の結果を暗号化テキストの組合せを構成し、当該暗号化テキストの組合せをクエリする対象として暗号化テキストの記憶を行う。
【請求項５】
具体的に、進数系のクリアテキストに転換するステップとして、当該文字区分のクリアテキストを文字コード、当該文字コードを進数系のクリアテキストに転換することを特徴とする請求項４に記載の暗号化テキストのクエリメソッド。
【請求項６】
暗号化計算について対称暗号化のアルゴリズムを利用する場合、具体的に下式を利用することを特徴とする請求項1または2に記載の暗号化テキストのクエリメソッド。
c=(m+s×r+p×q) mod x0
その中、
c：暗号化テキスト
m：進数系のクリアテキストにおける進数系の値
s：暗号化で利用する進数系
r：乱数
p：暗号化シックレートキー
x0：中間変数＝暗号化シックレートキーp×もう一つの暗号化シックレートキーq
p、q：奇数
上記の如何なるシックレートキーも開示されないものである。
【請求項７】
暗号化計算で非対称暗号化のアルゴリズムを利用する場合に具体的に下式を利用することを特徴とする請求項1または2に記載の暗号化テキストのクエリメソッド。
2019523909.tif 000006
その中、
c：暗号化テキスト
m：進数系のクリアテキストにおける進数系
s：暗号化で利用する進数系
r、τ：乱数
xi ：ランダムに生成したiの個数、xi=qi×p+s×r
p：非対称アルゴリズムで利用されるシックレートキー、大奇数であり、qi≪q0，0≦i≦τ
pk=（x0，x1，…，xi，…，xτ）：非対称暗号化アルゴリズムで利用される公開鍵。
【請求項８】
シックレートキーpは生成方式がLWE、格子、またはGCDに基づき、スパース・サブセット合計に近似する方法であることを特徴とする請求項７に記載の暗号化テキストのクエリメソッド。
【請求項９】
具体的に、ステップ（３）は順序にクエリされる対象からクエリする対象と同じ数量のある暗号化テキストを取り出し、クエリされる対象における暗号化テキスト数がクエリする対象の暗号化テキスト数の以下となるまで進数系暗号化テキストに従って当該暗号化テキストとクエリする対象との対位法加算を行い、それによる複数の加算結果を暗号化テキストに関するクエリ結果にすることであることを特徴とする請求項７に記載の暗号化テキストのクエリメソッド。
【請求項１０】
具体的に、ステップ（４）は対応する進数系のクリアテキストを取得するように、それによる複数の暗号化テキストに関するクエリ結果に対する復号化を行い、当該進数系のクリアテキストを進数系のクリアテキストに転換してから進数系のクリアテキストを対応する文字コードに転換し、それぞれそれによる文字コードをクエリ条件としてのクリアテキストとの比較を行い、比較の結果が同じである場合、対応するクエリ結果が真であることを示すが、反対に、対応するクエリ結果が偽であることを示すことであることを特徴とする請求項９に記載の暗号化テキストのクエリメソッド。
【請求項１１】
暗号化テキストの対位法加算に対して、それによる暗号化テキストに関するクエリ結果は復号化の操作式が次の通りである。
（（c mod p）mod y）/2
その中、y≧s×2-1、且つy≦p/2
暗号化テキストに対して、対位法減算それによる暗号化テキストに関するクエリ結果は復号化の操作式が次の通りである。
（c mod p）mod s
上記のことを特徴とする請求項１０に記載の暗号化テキストのクエリメソッド。
【請求項１２】
文字コードはコードASCIIまたはコードUnicodeであることを特徴とする請求項１１に記載の暗号化テキストのクエリメソッド。
【請求項１３】
下記のモジュールを含むことを特徴とする完全準同型暗号化の暗号化テキストクエリ・システム。
第一モジュール：用于任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行うことに用いられる。
第二モジュール：クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行うことに用いられる。
第三モジュール：第一モジュールが取得したクエリされる対象及び第二モジュールが取得したクエリする対象に対する進数系暗号化テキスト対位法加算を行い、暗号化テキストに関するクエリ結果を取得するようにすることに用いられる。
第四モジュール：第三モジュールが取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、復号化によるクリアテキストと第二モジュールにおけるクエリ条件としてのクリアテキストとの比較を行い、二者が同じであると、暗号化テキスに関するトクエリ結果が正確であること、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示す。
【請求項１４】
下記のモジュールを含むことを特徴とする完全準同型暗号化の暗号化テキストクエリ・システム。
第一モジュール：任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行うことに用いられる。
第二モジュール：クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行うことに用いられる。
第三モジュール：第一モジュールが取得したクエリされる対象と第二モジュールが取得したクエリする対象に対する進数系暗号化テキスト対位法減算を行い、それによる差の値を暗号化テキストに関するクエリ結果にすることに用いられる。
第四モジュール：第三モジュールが取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、当該クリアテキストがゼロであるかを判断し、Yesの場合、暗号化テキスに関するトクエリ結果が正しいこと、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示す。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報安全分野、更に具体的に、完全準同型暗号化の暗号化テキストのクエリメソッド及びシステムに関する。
【背景技術】
【０００２】
現在、暗号化テキストクエリは広く全文検索の技術分野でキーワードクエリの検索結果を取得することに用いられている。
【０００３】
現在、広く用いられている暗号化テキストのクエリメソッドは主に対称暗号アルゴリズム及び非対称暗号アルゴリズムに用いられている。対称暗号アルゴリズムで、シックレートキーが同じである場合、ブロック暗号アルゴリズムは同じ内容の暗号化された暗号化テキストが始終に同じであり、復号化不要でクエリされる内容の真偽を判断できるので、秘密情報の漏洩という課題があり、非対称暗号アルゴリズムにとって、クリアテキストデータが暗号化されると、その暗号化テキスト内容をクエリする場合、暗号化テキストの復号化を行ってクリアテキストの比較をしなければクエリ結果を取得できない。このようなクエリ過程にデータ漏洩のおそれがあるので、秘密情報の漏洩という課題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は完全準同型暗号化の暗号化テキストのクエリメソッド及びシステムを提供し、従来の対称暗号アルゴリズムに基づく暗号化テキストのクエリメソッド同じシックレートキーで暗号化された暗号化テキストが始終に同じであり、復号化不要でクエリされる内容の真偽を判断できるので、秘密情報の漏洩があるという技術上の課題及び非対称暗号アルゴリズムに基づく暗号化テキストのクエリメソッドクエリの過程にデータ漏洩のおそれがあるので、秘密情報の漏洩があるという技術上の課題を解決することを目的にする。
【課題を解決するための手段】
【０００５】
上記の目的に達成するために、本発明では下記のステップを含む完全準同型暗号化の暗号化テキストのクエリメソッドを提供する。
【０００６】
（１）任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行う。
【０００７】
（２）クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行う。
【０００８】
（３）ステップ（１）で取得したクエリされる対象及びステップ（２）で取得したクエリする対象に関する進数系暗号化テキストの対位法加算を行い、暗号化テキストに関するクエリ結果を取得するようにする。
【０００９】
（４）ステップ（３）で取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、復号化によるクリアテキストとステップ（２）でクエリ条件そしてのクリアテキストとの比較を行い、二者が同じであると、暗号化テキスに関するトクエリ結果が正確であること、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示す。
【００１０】
本発明では下記のステップを含む完全準同型暗号化の暗号化テキストのクエリメソッドも提供する。
【００１１】
（１）任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行う。
【００１２】
（２）クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行う。
【００１３】
（３）ステップ（１）で取得したクエリされる対象とステップ（２）で取得したクエリする対象に対する進数系暗号化テキストの対位法減算を行い、取得した差の値を暗号化テキスに関するトクエリ結果にする。
【００１４】
（４）ステップ（３）で取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、当該クリアテキストがゼロであるかを判断し、Yesの場合、暗号化テキスに関するトクエリ結果が正しいこと、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示す。
【００１５】
望ましくは、ステップ（１）に具体的に下記のサブステップを含む。
【００１６】
（1-1）任意データ型のクリアテキストを取得し、それを進数系のクリアテキストに転換する。
【００１７】
（1-2）ステップ（1-1）で取得した進数系のクリアテキストの中の各進数系の値に対する暗号化を行い、暗号化の結果を暗号化テキストの組合せを構成し、当該暗号化テキストの組合せをクエリされる対象として暗号化テキストの記憶を行う。
【００１８】
望ましくは、ステップ（２）に具体的に下記のサブステップを含む。
【００１９】
（2-1）クエリ条件としてのクリアテキストを取得し、それを進数系のクリアテキストに転換する。
【００２０】
（2-2）ステップ（2-1）で取得した進数系のクリアテキストにおける各進数系の値に対する暗号化を行い、暗号化の結果を暗号化テキストの組合せを構成し、当該暗号化テキストの組合せをクエリする対象として暗号化テキストの記憶を行う。
【００２１】
望ましくは、具体的に、進数系のクリアテキストに転換するステップとして、当該文字区分のクリアテキストを文字コード、当該文字コードを進数系のクリアテキストに転換する。
【００２２】
望ましくは、暗号化計算について対称暗号化のアルゴリズムを利用する場合、具体的に下式を利用する。
【００２３】
c=(m+s×r+p×q) mod x0
【００２４】
その中、
c：暗号化テキスト
m：進数系のクリアテキストにおける進数系の値
s：暗号化で利用する進数系
r：乱数
p：暗号化シックレートキー
x0：中間変数＝暗号化シックレートキーp×もう一つの暗号化シックレートキーqp
q：奇数
上記の如何なるシックレートキーも開示されないものである。
【００２５】
望ましくは、暗号化計算で非対称暗号化のアルゴリズムを利用する場合に具体的に下式を利用する。
【００２６】
2019523909.tif 000003
【００２７】
その中、
c：暗号化テキスト
m：進数系のクリアテキストにおける進数系の値
s：暗号化で利用する進数系
r及びτ：乱数
xi：ランダムに生成したiの個数、xi=qi×p+s×r
p：非対称アルゴリズムで利用されるシックレートキー、大奇数であり、且つqi≪q0，0≦i≦τ、非対称暗号化アルゴリズムで利用される公開鍵がpk=（x0，x1，…，xi，…，xτ）である。
【００２８】
望ましくは、シックレートキーpは生成方式がLWE、格子、またはGCDに基づき、スパース・サブセット合計に近似する方法である。
【００２９】
望ましくは、具体的に、ステップ（３）は順序にクエリされる対象からクエリする対象と同じ数量のある暗号化テキストを取り出し、クエリされる対象における暗号化テキスト数がクエリする対象の暗号化テキスト数の以下となるまで進数系暗号化テキストに従って当該暗号化テキストとクエリする対象との対位法加算を行い、それによる複数の加算結果を暗号化テキストに関するクエリ結果にする。
【００３０】
望ましくは、具体的に、ステップ（４）は対応する進数系のクリアテキストを取得するように、それによる複数の暗号化テキストに関するクエリ結果に対する復号化を行い、当該進数系のクリアテキストを進数系のクリアテキストに転換してから進数系のクリアテキストを対応する文字コードに転換し、それぞれそれによる文字コードをクエリ条件としてのクリアテキストとの比較を行い、比較の結果が同じである場合、対応するクエリ結果が真であることを示すが、反対に、対応するクエリ結果が偽であることを示す。
【００３１】
望ましくは、暗号化テキストの対位法加算に対して、それによる暗号化テキストに関するクエリ結果は復号化の操作式が次の通りである。
【００３２】
（（c mod p）mod y）/2
【００３３】
その中、y≧s×2-1，且つy≦p/2
【００３４】
暗号化テキストに対して、対位法減算それによる暗号化テキストに関するクエリ結果は復号化の操作式が次の通りである。
【００３５】
（c mod p）mod s。
【００３６】
望ましくは、文字コードはコードASCIIまたはコードUnicodeである。
【００３７】
本発明では下記のモジュールを含む完全準同型暗号化の暗号化テキストクエリ・システムを提供する。
【００３８】
第一モジュール：任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行うことに用いられる。
【００３９】
第二モジュール：クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行うことに用いられる。
【００４０】
第三モジュール：第一モジュールが取得したクエリされる対象及び第二モジュールが取得したクエリする対象に対する進数系暗号化テキスト対位法加算を行い、暗号化テキストに関するクエリ結果を取得するようにすることに用いられる。
【００４１】
第四モジュール：第三モジュールが取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、対位法加算の場合、復号化によるクリアテキストと第二モジュールにおけるクエリ条件としてのクリアテキストとの比較を行い、二者が同じであると、暗号化テキスに関するトクエリ結果が正確であること、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示し、対位法減算の場合、復号化の結果がゼロであり、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示すことに用いられる。
【００４２】
本発明では下記のモジュールを含むことを特徴とする完全準同型暗号化の暗号化テキストクエリ・システムを提供する。
【００４３】
第一モジュール：任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行うことに用いられる。
【００４４】
第二モジュール：クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行うことに用いられる。
【００４５】
第三モジュール：第一モジュールが取得したクエリされる対象と第二モジュールが取得したクエリする対象に対する進数系暗号化テキスト対位法減算を行い、取得した差の値を暗号化テキスに関するトクエリ結果にすることに用いられる。
【００４６】
第四モジュール：第三モジュールが取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、当該クリアテキストがゼロであるかを判断し、Yesの場合、暗号化テキスに関するトクエリ結果が正しいこと、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示すことに用いられる。
【発明の効果】
【００４７】
（１）本発明は従来の対称暗号アルゴリズムに基づく暗号化テキストのクエリメソッドにある秘密情報の漏洩という技術上の課題を解決できる。本発明によるクエリメソッドで同じシックレートキーを利用し、同じ内容暗号化による暗号化テキストの内容が違うので、情報漏洩という課題がない。
【００４８】
（２）本発明は従来の非対称暗号アルゴリズムに基づく暗号化テキストのクエリメソッドクエリの過程にデータ漏洩のおそれがあるという技術上の課題を解決できる。本発明によるクエリメソッドで進数系暗号化テキストに対する対位法加算を行うだけで暗号化テキスに関するトクエリ結果を取得でき、暗号化テキストがクエリの過程に始終に計算に参加するものであるので、データ漏洩という課題がない。
【００４９】
（３）本発明は暗号化テキストクエリの過程に進数系暗号化テキストの対位法加算を行うだけで暗号化テキストに関するクエリの結果を取得できるので、クエリ効率が高い。
【００５０】
（４）本発明はクエリの結果の正確性に対する判断が復号化過程だけで達成できるので、操作が簡単である。
【００５１】
（５）本発明は暗号化テキストクエリの過程が完全に暗号化テキストの状態で行われるのでクエリの過程に不いかなるデータ漏洩もなく、クエリ及び復号化の権限を持つユーザが暗号化テキストに関するクエリ結果に対する復号化操作を行うだけでクエリ結果のデータを調べることができるので、本発明の応用シーンが更に拡張し、そしてより一歩に暗号化テキストクエリ過程におけるデータの安全性を向上させるものである。
【図面の簡単な説明】
【００５２】
【図１】本発明による完全準同型暗号化の暗号化テキストのクエリメソッドのプロセスチャート。
【発明を実施するための形態】
【００５３】
本発明の目的、ソリューション及び長所を更にはっきりして理解できるように、次に図及び実施例を利用して本発明について更に詳細に説明する。いうまでもなく、ここで、具体的な実施例は本発明の説明のためのものだけであり、本発明を限定するものではない。また、下記の本発明各実施方式に関する技術上の特徴は衝突を構成しない限り相互に組み合わせることができる。
【００５４】
次に、先ず本発明で利用される用語について説明する。
【００５５】
進数系：進数系によるビットの数量のことである。例：2進数系は1ビット、8進数系は3ビット、16進数系は4ビット、32進数系は5ビット、64進数系は6ビット、128進数系は7ビットである。
【００５６】
進数系の値：現在の進数系状態にある値。例：2進数系の値は表現可能な領域が{0,1}、8進数系の値は表現可能な領域が{0,1,2,3,4,5,6,7}である。
【００５７】
本発明では完全準同型暗号化の暗号化テキストのクエリメソッドを利用する。先ず、完全準同型暗号化のアルゴリズムでクリアテキストデータをクエリされる対象として暗号化、記憶する。ユーザが暗号化テキストに記憶された内容をクエリする場合、クリアテキストのクエリ条件を入力するだけでシステムが完全準同型暗号化アルゴリズムでそのクリアテキスト条件を暗号化テキストに暗号化し、クエリする対象にし、クエリされる対象及びクエリする対象について進数系暗号化テキストの対位法加算を行って暗号化テキスに関するトクエリ結果を取得する。そのクエリ結果はまだ暗号化テキストであり、クエリ及び復号化のクエリ結果に関する権限を持つユーザしか暗号化テキストに関するクエリ結果を調べることができない。システムは暗号化テキストクエリの「含む」(like)、「等しい」(=)及び「等しくない」 (<>)の操作機能に達成するものである。
【００５８】
本発明による完全準同型暗号化の暗号化テキストのクエリメソッドはデータ表示、シックレートキー生成、暗号化アルゴリズム、復号化アルゴリズム及び暗号化テキストクエリ（Ciphertext Query、「CQ」と略す）を含む。
【００５９】
データ表示：クリアテキストmの区分（Type）をT、Tの集合を{整数、実数、文字、年月日、ブール}などに表記する。既知クリアテキストms、その中、sはデータ進数系（System）、即ち2進数系、10進数系、16進数系、521進数系などであり、（T，ms）と表記される。例：s=2は2進数系を示す。普通、2進数系はBで表記され、クリアテキストmは2進数系mBを示し、（T，mB）で表記され、s=16は16進数系を示し、16進数系がHで表記され、クリアテキストmは16進数系mH を示し、（T，mH）で表記され、s=512は512進数系、クリアテキストmは512進数系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を2進数系に転換し、BでmBを表記し、B=（b1，b2，…，bi，…，bn），bi∈{0，1}，1≦i≦n，c=Enc（Wkey，B）。cは暗号化アルゴリズムfによるc=（c1，c2，…，ci，…，cn），
2019523909.tif 000004
である。その中、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 × 2）/2，1≦i≦nであり、s進数系b’をクリアテキストmに転換する。
【００６５】
暗号化テキストクエリ（CQ）：KeyGenから生成した業務用シックレートキーWkeyであり、入力された暗号化テキストデータc1、c2に対するものである。その中、c1はクエリする対象、c2はクエリする対象であり、c’=CQ（Wkey，c1 O c2）となり、c’は暗号化テキストクエリ機能関数f”により進数系暗号化の暗号化テキストに従って対位法加算を行って取得した暗号化テキスに関するトクエリ結果c’=（c1’，c2’，…，ci’，…，cn’）である。
【００６６】
ci’= f”（Wkey，c1i’O c2i’ ）
【００６７】
その中、1≦i≦n ， O∈{like，=，<>}
【００６８】
暗号化テキストクエリ機能関数f”は暗号化テキストのクエリの達成に用いられ、暗号化テキストのクエリ過程としてクエリされる対象とクエリする対象について進数系暗号化の暗号化テキストに対する対位法加算を行い、加算の結果が暗号化テキストに関するクエリ結果となり、クエリ及び暗号化テキストに関するクエリ結果に関するデータに対する復号化に関する権限を持つユーザが暗号化テキストに関するクエリ結果に対する復号化を行い、クエリ条件が入力されたクリアテキストとの比較を行い、等しいである場合、「真」というクエリ結果を示し、暗号化テキストに関するクエリ結果に関するデータを調べることができるようになり、反対に、「偽」というクエリ結果を示し、暗号化テキストに関するクエリ結果に関するデータを調べることができない。
【００６９】
図1によると、本発明による完全準同型暗号化の暗号化テキストのクエリメソッドは下記のステップを含む。
【００７０】
（１）任意データ型のクリアテキストを取得し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行う。
【００７１】
暗号化計算について対称暗号化のアルゴリズムを利用する場合、具体的に下式を利用する。
【００７２】
c=(m+s×r+p×q) mod x0
【００７３】
その中、
c：暗号化テキスト
m：進数系のクリアテキストにおける進数系
s：暗号化で利用する進数系
r：乱数
p：暗号化シックレートキー
x0：中間変数＝暗号化シックレートキーp×もう一つの暗号化シックレートキーqp
q：奇数
上記の如何なるシックレートキーも開示されないものである。
【００７４】
暗号化計算で非対称暗号化のアルゴリズムを利用する場合に具体的に下式を利用する。
【００７５】
2019523909.tif 000005
【００７６】
その中、
c：暗号化テキスト
m：進数系のクリアテキストにおける進数系
s：暗号化で利用する進数系
r及びτ：乱数
xi ：ランダムに生成したiの個数、xi=qi×p+s×r
p：非対称アルゴリズムで利用されるシックレートキー、大奇数であり、且つqi≪q0，0≦i≦τである。
pk=（x0，x1，…，xi，…，xτ）：非対称暗号化アルゴリズムで利用される公開鍵。
【００７７】
シックレートキーpは生成方式がエラー付けの学習（Leaning with Error、「LWE」と略す）、格子（Lattice）、または近似最大公約数（Greatest Common Divisor「GCD」と略す）及びスパース・サブセット合計（Sparse Subset Sum Problem、「SSSP」と略す）に基づく方法である。
【００７８】
このステップに具体的に下記のサブステップを含む。
【００７９】
（1-1）任意データ型のクリアテキストを取得し、それを進数系のクリアテキストに転換する。
【００８０】
具体的に、進数系のクリアテキストに転換する過程として、当該文字区分のクリアテキストを文字コード（当該文字コードはASCIIコードでもUnicodeコードでもいい）、当該文字コードを進数系のクリアテキストに転換する。
【００８１】
例えば、文字区分のクリアテキストm=「abdabd」につて、当該文字区分のクリアテキストを情報交換用米国標準コード（American Standard Code for Information Interchange、「ASCIIコード」と略す）（即ち、a=97，b=98，d=100）に転換してから当該ASCIIコードを2進数系のクリアテキスト（即ち、a=97=(1100001)，b=98=(1100010)，d=100=(1100100)）に転換する。
【００８２】
（1-2）ステップ（1-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でも奇数である）
【００８６】
上記の如何なるシックレートキーも開示されないものである。
【００８７】
次に2進数系s=2を例として説明する。
【００８８】
例えば、業務用シックレートキーp=111，q=11，x0=p×q=1221である場合、r=1にすると、上記のステップ（1-1）で例とするクリアテキストaの2進数系のクリアテキスト1100001、クリアテキストbの2進数系のクリアテキスト1100010、及びクリアテキストdの2進数系のクリアテキスト1100100における進数系の値0及び1にとって、このステップの上式で計算してから下記の結果を取得できる。
【００８９】
数0の暗号化された暗号化テキスト＝113
数1の暗号化された暗号化テキスト＝114
【００９０】
よって、クリアテキストaの2進数系のクリアテキスト1100001が上式で計算されてから、暗号化テキストの記憶を行うクエリされる対象は下記の通りとなる。
Enc(a)=(114,114,113,113,113,113,114)
【００９１】
クリアテキストbの2進数系のクリアテキスト1100010は上式で計算されてからクエリされる対象として暗号化テキストの記憶を行う結果は下記の通りとなる。
Enc(b)=(114,114,113,113,113,114,113)
【００９２】
クリアテキストdの2進数系のクリアテキスト1100100が上式で計算されてからクエリされる対象として暗号化テキストの記憶を行う結果は下記の通りとなる。
Enc(d)=(114,114,113,113,114,113,113)
【００９３】
はっきりする表現を図るために、次に文字転換の進数系の値により暗号化テキストを構成して[]で表現する。例えば、上記の例におけるクリアテキストm=‘abdabd’について、このステップの以降にそれによるクエリされる対象の暗号化テキストが42件ある。
Enc(abdabd)=([114,114,113,113,113,113,114],[114,114,113,113,113,114,113],[114,114,113,113,114,113,113],[114,114,113,113,113,113,114],[114,114,113,113,113,114,113],[114,114,113,113,114,113,113])。
【００９４】
（２）クエリ条件としてのクリアテキストを受信し、対称暗号化アルゴリズムまたは非対称暗号化アルゴリズムにより当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリする対象として暗号化テキストの記憶を行う。
【００９５】
このステップの非対称暗号化または対称暗号化過程は上記のステップ（１）におけるものと完全に同じであるので、ここでは省略する。
【００９６】
このステップに具体的に下記のサブステップを含む。
【００９７】
（2-1）クエリ条件としてのクリアテキストを取得し、それを進数系のクリアテキストに転換する。
【００９８】
このステップは上記のステップ（1-1）の達成方式と完全に同じである。
【００９９】
例えば、文字区分のクリアテキストm’=‘da’について文字区分のクリアテキストをASCIIコード（即ちd=100，a=9）に転換してから、当該ASCIIコードを2進数系のクリアテキスト（即ち、d=100=(1100100)，a=97=(1100001)）に転換する。
【０１００】
（2-2）ステップ（2-1）で取得した進数系のクリアテキストにおける各進数系の値に対する暗号化を行い、暗号化の結果を暗号化テキストの組合せを構成し、当該暗号化テキストの組合せをクエリする対象として暗号化テキストの記憶を行う。
【０１０１】
このステップは上記のステップ（1-2）の達成方式と完全に同じである。
【０１０２】
上記の示例におけるクリアテキストm’=‘da’について、このステップの以降にそれによるクエリする対象は次の通りである。Enc(da)=([114,114,113,113,114,113,113],[114,114,113,113,113,113,114])
【０１０３】
（３）ステップ（１）で取得したクエリされる対象及びステップ（２）で取得したクエリする対象に関する進数系暗号化テキストの対位法加算を行い、暗号化テキストに関するクエリ結果を取得するようにする。
【０１０４】
具体的に、このステップは次の通りである。
【０１０５】
順序にクエリする対象からクエリする対象と同じ数量のある暗号化テキストを取り出し、クエリされる対象における暗号化テキスト数がクエリする対象の暗号化テキスト数の以下となるまで進数系暗号化テキストに従って当該暗号化テキストとクエリする対象との対位法加算を行い、それによる複数の加算結果を暗号化テキストに関するクエリ結果にする。
【０１０６】
その中、暗号化テキストに関するクエリ結果はサイクル回数＝クエリされる暗号化テキスト数-クエリの暗号化テキスト数+1
上記の例にとって、このステップはクエリされる対象の
Enc(abdabd)=([114,114,113,113,113,113,114],[114,114,113,113,113,114,113],[114,114,113,113,114,113,113],[114,114,113,113,113,113,114],[114,114,113,113,113,114,113],[114,114,113,113,114,113,113])からクエリする対象の
Enc(da)=([114,114,113,113,114,113,113],[114,114,113,113,113,113,114])と同じ暗号化テキスト数、即ち
[114,114,113,113,113,113,114],[114,114,113,113,113,114,113]を取り出し、それとクエリする対象との対位法加算を行ってからクエリする対象Enc(abdabd)における次の進数系の対応長さの暗号化テキスト数、即ち[114,113,113,113,113,114,114],[114,113,113,113,114,113,114]を取り出してから最後のクエリする対象で取り出された暗号化テキスト数が[114,114,113,113,113,114,113],[114,114,113,113,114,113,113]となるまで上記の操作を繰り返す。
【０１０７】
例えば、クエリに(like)機能を含むとはクエリ条件の暗号化テキストクエリする対象Enc(da)が暗号化テキストに記憶されたクエリする対象Enc(abdabd)に含まれるかということである。クエリ条件の2文字の転換による進数系の暗号化テキストが14件あるので、毎度にクエリする対象から進数系暗号化テキストにより暗号化テキストの14件を取ってクエリする対象の暗号化テキストの14との対位法加算を行って暗号化テキストに関するクエリ結果を取得でき、「暗号化テキストに関するクエリ結果数=クエリする対象の暗号化テキスト数-クエリする対象の暗号化テキスト数+1=42-14+1=29」である。即ち、この例の暗号化テキストに関するクエリ結果が計29組ある。次に暗号化テキストに関するクエリ結果の若干組によりその正確性について説明する。
【０１０８】
第1組の暗号化テキストに関するクエリ結果：
クエリされる対象：[114,114,113,113,113,113,114],[114,114,113,113,113,114,113]
クエリする対象：[114,114,113,113,114,113,113],[114,114,113,113,113,113,114]
暗号化テキストに関するクエリ結果：[228,228,226,226,227,226,227],[228,228,226,226,226,227,227]
【０１０９】
第2組の暗号化テキストに関するクエリ結果：
クエリされる対象：[114,113,113,113,113,114,114],[114,113,113,113,114,113,114]
クエリする対象：[114,114,113,113,114,113,113],[114,114,113,113,113,113,114]
暗号化テキストに関するクエリ結果：[228,227,226,226,227,227,227],[228,227,226,226,227,226,228]
【０１１０】
第3組の暗号化テキストに関するクエリ結果：
クエリされる対象：[113,113,113,113,114,114,114],[113,113,113,114,113,114,114]
クエリする対象：[114,114,113,113,114,113,113],[114,114,113,113,113,113,114]
暗号化テキストに関するクエリ結果：[227,227,226,226,228,227,227],[227,227,226,227,226,227,228]
……
【０１１１】
第15組の暗号化テキストに関するクエリ結果：
クエリされる対象：[114,114,113,113,114,113,113],[114,114,113,113,113,113,114]
クエリする対象：[114,114,113,113,114,113,113],[114,114,113,113,113,113,114]
暗号化テキストに関するクエリ結果：[228,228,226,226,228,226,226],[228,228,226,226,226,226,228]
……
【０１１２】
第29組の暗号化テキストに関するクエリ結果：
クエリされる対象：[114,114,113,113,113,114,113],[114,114,113,113,114,113,113]
クエリする対象：[114,114,113,113,114,113,113],[114,114,113,113,113,113,114]
暗号化テキストに関するクエリ結果：
[228,228,226,226,227,227,226],[228,228,226,226,227,226,227]；
【０１１３】
注意：交換可能な実施方式として、このステップにおける対位法加算は対位法減算に交換されてもよく、取得した差の値を暗号化テキスに関するトクエリ結果にすること。
【０１１４】
（４）ステップ（３）で取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、復号化によるクリアテキストとステップ（２）でクエリ条件そしてのクリアテキストとの比較を行い、二者が同じであると、暗号化テキスに関するトクエリ結果が正確であること、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示す。
【０１１５】
具体的に、このステップとして、下式によりステップ（３）で取得した複数の暗号化テキストに関するクエリ結果に対する復号化を行って、対応する進数系のクリアテキストを取得する。該進数系のクリアテキストを進数系のクリアテキストに転換してから進数系のクリアテキストを対応する文字コード（この例でASCIIコードである）に転換し、それぞれそれによる文字コードをクエリ条件としてのクリアテキストとの比較を行い、比較の結果が同じである場合、対応するクエリ結果が真であることを示し（即ちクエリする対象がクエリされる対象にある）、反対に、対応するクエリ結果が偽であることを示す（即ちクエリする対象がクエリされる対象にない）。
【０１１６】
（（c mod p）mod y）/2
【０１１７】
その中、y≧s×2-1，且つy≦p/2
【０１１８】
この例で、y=s×2=4となり、cは暗号化テキストに関するクエリ結果における暗号化テキストであり、その長さがクエリする対象における暗号化テキスト数と同じである。
【０１１９】
注意：上記のステップ（３）で当該暗号化テキストとクエリする対象について進数系暗号化テキストにより対位法減算を行う場合、このステップ（４）が下記の通りに交換されること。
【０１２０】
（４’）ステップ（３）で取得した暗号化テキストに関するクエリ結果をクリアテキストに復号化し、当該クリアテキストがゼロであるかを判断し、Yesの場合、暗号化テキスに関するトクエリ結果が正しいこと、即ち、クエリする対象がクエリされる対象にあることを示し、反対に、暗号化テキスに関するトクエリ結果が違うこと、即ち、クエリする対象がクエリされる対象にないことを示す。この場合、暗号化テキストに対して、対位法減算それによる暗号化テキストに関するクエリ結果は復号化の操作式が次の通りである。
【０１２１】
（c mod p）mod s。
【０１２２】
言うまでもなく、本発明は上式に限られるものではなく、当該式のどの簡単な変形でも簡単な変換でも本発明の領域にある。
【０１２３】
上記の示例で、第1組の暗号化テキストに関するクエリ結果に対して、cが[228,228,226,226,227,226,227],[228,228,226,226,226,227,227]における暗号化テキストである。
【０１２４】
その中、暗号化テキスト228にとって（下記に2進数系のクリアテキストを例にする）、復号化の結果=((228 mod 111) mod 4)/2=1となる。
【０１２５】
その中、暗号化テキスト226にとって、復号化の結果=((226 mod 111) mod 4)/2=0となる。
【０１２６】
その中、暗号化テキスト227にとって、復号化の結果=((227 mod 111) mod 4)/2=1となる（その結果が0.5であるが、丸めで1となる）。
【０１２７】
第1組の暗号化テキストに関するクエリ結果に対して、（1100101,1100011）となる。
【０１２８】
次に、それについて10進数系の転換を行うと、「101,99」となり、続いてそれについてASCII転換を行うと、対応するASCIIコードがecとなる。
【０１２９】
第1組の暗号化テキストに関するクエリ結果：
Dec([228,228,226,226,227,226,227],[228,228,226,226,226,227,227])
（４）の復号化式で暗号化テキストに関するクエリ結果に対する復号化を行って下記のクリアテキストを取得する。
m=([1100101],[1100011])=([101],[99])=‘ec’
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=‘ec’と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
【０１３０】
第2組の暗号化テキストに関するクエリ結果
Dec([228,227,226,226,227,227,227],[228,227,226,226,227,226,228])
（４）の復号化式復号化暗号化テキストに関するクエリ結果で下記のクリアテキストを取得する。
m=([1100111],[1100101])=([103],[101])=(ge)
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=‘ge’と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」となる。
【０１３１】
第3組の暗号化テキストに関するクエリ結果：
Dec([227,227,226,226,228,227,227],[227,227,226,227,226,227,228])
m=([1100111],[1101011])=([103],[107])=(gk)
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=‘gk’と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
……
【０１３２】
第15組の暗号化テキストに関するクエリ結果：
Dec([228,228,226,226,228,226,226],[228,228,226,226,226,226,228])
m=[1100100],[1100001]=([100],[97])=(da)
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=‘da’と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「真」である。
……
【０１３３】
第29組の暗号化テキストに関するクエリ結果
Dec([228,228,226,226,227,227,226],[228,228,226,226,227,226,227])
（４）の復号化式復号化暗号化テキストに関するクエリ結果で下記のクリアテキストを取得する。
m=([1100110],[1100101])=([102],[101])=(fe)
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=‘fe’と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
【０１３４】
上記の例によると、示されていない例はクエリ結果が共に「偽」である。
【０１３５】
「等しい」(=)クエリ機能で取得した暗号化テキストに関するクエリ結果は次の通りである。暗号化テキストに関するクエリ結果に対する復号化を行ってから復号化の結果としてのクリアテキストと（2-1）クエリ条件のクリアテキストとの比較を行い、結果が等しいである場合、クエリ結果が「真」、反対に、「偽」である。
【０１３６】
「等しい」機能の暗号化テキストに関するクエリ結果：
Dec([228,228,226,226,227,226,227],[228,228,226,226,226,227,227], [114,114,113,113,114,113,113],[114,114,113,113,113,113,114],[114,114,113,113,113,114,113],[114,114,113,113,114,113,113])
m=([1100101],[1100011],[1100100],[1100001],[1100010],[1100100])=(ecdabd)
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=‘ecdabd’と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
【０１３７】
「等しくない」(<>)クエリ機能で取得した暗号化テキストに関するクエリ結果が「等しい」機能による暗号化テキストに関するクエリの結果と同じであり、クエリ結果が「真」である。
【０１３８】
次に512進数系（即ちs=512）を例にして説明する。
【０１３９】
（１）任意データ型のクリアテキストを取得し、当該クリアテキストに対する暗号化処理を行い、暗号化処理の結果をクエリされる対象として暗号化テキストの記憶を行う。
【０１４０】
例えば、業務用シックレートキーp=11111，q=11，x0=p×q=122221である場合、r=1にすると、クリアテキストm=‘abdabd’に対して、その進数系のクリアテキスト文字aのASCIIコードの値が97、bが98、dが100に等しく、本発明の上式で計算されてから下記の結果を取得できる。
【０１４１】
文字aの暗号化された暗号化テキスト＝11720
文字bの暗号化された暗号化テキスト＝11721
文字dの暗号化された暗号化テキスト＝11723
【０１４２】
よって、クエリされる対象の暗号化テキストが6件ある。
Enc(abdabd)=(11720,11721,11723,11720,11721,11723)
【０１４３】
（２）クエリ条件を入力する。
【０１４４】
（2-1）クエリ条件のクリアテキストを進数系のクリアテキストに転換する。例えば、文字区分のクリアテキストm=‘da’に対して、その進数系のクリアテキスト文字dのASCIIコードの値が100、aが97である。
【０１４５】
（2-2）完全準同型暗号化アルゴリズムで（2-1）で取得したクリアテキスト進数系の各数に対する暗号化を行い、暗号化の結果の暗号化を行ってテキスト組合クエリする対象にして、暗号化計算が（1-2）における式と同じであり、即ち、クエリする対象の暗号化テキストが2件ある。
Enc(da)=(11723,11720)
【０１４６】
（３）クエリされる対象とクエリする対象について進数系暗号化テキストに対する対位法加算を行い、その加算の結果の暗号化テキストを組み合わせて暗号化テキストに関するクエリ結果を取得する。
【０１４７】
例えば、クエリに(like)機能を含むとはクエリ条件の暗号化テキストクエリする対象Enc(da)が暗号化テキストに記憶されたクエリされる対象Enc(abdabd)に含まれるかということである。クエリ条件の2文字が進数系の暗号化テキストの2件に転換されたので、毎度にクエリされる対象から進数系暗号化テキストにより暗号化テキストの2件を取ってクエリする対象の暗号化テキストの2件と対位法加算を行って暗号化テキストに関するクエリ結果の1組を取得でき、暗号化テキストに関するクエリ結果数=クエリする対象の暗号化テキスト数-クエリする対象の暗号化テキスト数+1=6-2+1=5となり、即ち、この例で暗号化テキストに関するクエリ結果の下記の計5組がある。
【０１４８】
第1組の暗号化テキストに関するクエリ結果：
クエリされる対象：(11720,11721)
クエリする対象：  (11723,11720)
暗号化テキストに関するクエリ結果：(23443,23441)
【０１４９】
第2組の暗号化テキストに関するクエリ結果：
クエリされる対象：(11721,11723)
クエリする対象：  (11723,11720)
暗号化テキストに関するクエリ結果：(23444,23443)
【０１５０】
第3組の暗号化テキストに関するクエリ結果：
クエリされる対象：(11723,11720)
クエリする対象：  (11723,11720)
暗号化テキストに関するクエリ結果：(23446,23440)
【０１５１】
第4組の暗号化テキストに関するクエリ結果：
クエリされる対象：(11720,11721)
クエリする対象：  (11723,11720)
暗号化テキストに関するクエリ結果：(23443,23441)
【０１５２】
第5組の暗号化テキストに関するクエリ結果：
クエリされる対象：(11721,11723)
クエリする対象：  (11723,11720)
暗号化テキストに関するクエリ結果：(23444,23443)
【０１５３】
クエリの「等しい」(=)機能とはクエリ条件の暗号化テキストクエリする対象Enc(da)が暗号化テキストに記憶されるクエリされる対象Enc(abdabd)に等しいかということである。クエリ条件が2文字であり、進数系暗号化テキストが2件あるが、暗号化テキストの記憶対象Enc(abcabc)が6件あり、進数系暗号化テキストにより対位法加算を行って暗号化テキストに関するクエリ結果の1組を取得できる。この例で、暗号化テキストに関するクエリ結果は次の通りである。
【０１５４】
クエリされる対象：(11720,11721,11723,11720,11721,11723)
クエリする対象： (11723,11720)
暗号化テキストに関するクエリ結果：(23443,23441,11723,11720,11721,11723)
【０１５５】
クエリ「等しくない」(<>)機能とはクエリ条件の暗号化テキストクエリする対象Enc(da)が暗号化テキストに記憶されるクエリされる対象Enc(abdabd)に等しくないかということである。この例で、暗号化テキストに関するクエリ結果が「等しい」機能のクエリ結果と同じである。「等しい」と「等しくない」の機能の違いについて次のステップ（４）で更に説明する。
【０１５６】
（４）クエリ及びクエリ結果に対する復号化に関する権限を持つユーザしか暗号化テキストに関するクエリ結果に対する復号化を行うことができない。即ち、復号化された暗号化テキストに関するクエリ結果としてのクリアテキストと（2-1）クエリ条件のクリアテキストとの比較を行い、等しいである場合、クエリ結果が「真」、反対に、「偽」である。例えば、
「含む」(like) クエリ機能で取得した暗号化テキストに関するクエリ結果は次の通りである。暗号化テキストに関するクエリ結果に対する復号化を行ってから復号化の結果クリアテキストと（2-1）クエリ条件のクリアテキストとの比較を行い、結果が等しいである場合、クエリ結果が「真」、反対に、「偽」である。
【０１５７】
第1組の暗号化テキストに関するクエリ結果：
Dec(23443,23441)
（４）の復号化式で暗号化テキストに関するクエリ結果に対する復号化を行って下記のクリアテキストを取得する。
m=(99,98)=‘cb’
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=「cb」と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
【０１５８】
第2組の暗号化テキストに関するクエリ結果：
Dec(23444,23443)
（４）の復号化式で暗号化テキストに関するクエリ結果に対する復号化を行って下記のクリアテキストを取得する。
m=(99,99)=‘cc’
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=「cc」と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
【０１５９】
第3組の暗号化テキストに関するクエリ結果：
Dec(23446,23440)
m=(100,97)=‘da’
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=‘da’と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「真」である。
【０１６０】
第4組の暗号化テキストに関するクエリ結果：
Dec(23443,23441)
（４）の復号化式で暗号化テキストに関するクエリ結果に対する復号化を行い、下記のクリアテキストを取得する。
m=(99,98)=「cb」
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=「cb」と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
【０１６１】
第5組の暗号化テキストに関するクエリ結果：
Dec(23444,23443)
（４）の復号化式で暗号化テキストに関するクエリ結果に対する復号化を行って下記のクリアテキストを取得する。
m=(99,99)=‘cc’
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=「cc」と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
【０１６２】
「等しい」(=)クエリ機能で取得した暗号化テキストに関するクエリ結果は次の通りである。暗号化テキストに関するクエリ結果に対する復号化を行ってから復号化の結果のクリアテキストと（2-1）クエリ条件のクリアテキストとの比較を行い、結果が等しいである場合、クエリ結果が「真」、反対に、「偽」である。
【０１６３】
「等しい」機能の暗号化テキストに関するクエリ結果：
Dec(23443,23441,11723,11720,11721,11723)
m=(99,98,100,97,98,100)=(cbdabd)
暗号化テキストに関するクエリ結果復号化によるクリアテキストm=「cbdabd」と（2-1）クエリ条件のクリアテキストm=‘da’との比較を行い、クエリ結果が「偽」である。
【０１６４】
「等しくない」(<>)クエリ機能で取得した暗号化テキストに関するクエリ結果が「等しい」機能の暗号化テキストに関するクエリの結果と同じであり、クエリ結果が「真」である。
【０１６５】
上記のステップに記載されたすべての例にとって、上記のステップ（4）で「含む」(like)、「等しい」(=)、「等しくない」(<>)の復号化過程及び結果について詳細に説明したので、このステップで省略する。
【０１６６】
本分野の技術者が容易に理解できるように、上記が本発明の望ましい実施例だけであり、本発明を制限するものではなく、本発明の実質及び原則によるどの改訂、同一交換または改善などの全ては本発明の保護範囲にある。
【図１】
2019523909.tif 000007
【国際調査報告】
2019523909.tif 000008
2019523909.tif 000009
2019523909.tif 000010
2019523909.tif 000011