(57)【要約】      （修正有）【課題】秘密鍵を開示することなく、かつ少ない処理負荷で平文の除算結果に対応する暗号文を生成する。【解決手段】計算機は、第１秘密鍵ベクトルs=(s1,s2,…,sn)∈(Zq)n（nは自然数、qは2の冪乗であって1でない自然数、Zqはqを法とする剰余類環）を用いて、平文m∈Zt（tはqの約数、Ztはtを法とする剰余類環）が暗号化された第１暗号文c=(a,<s,a>+e+(mq/t))（a∈(Zq)n、e∈Zq）を保持し、mに対して演算が実行された結果がsを用いて暗号化された第２暗号文を生成する命令を受信する。該演算は、2の冪乗である自然数による除算を含み、該計算機はcに対する演算処理を実行することにより、第２暗号文を生成し、Zq上での大小関係をZp上において保存する関数f:Zq→Zp（p=q/(該自然数)、Zpはpを法とする剰余類環）による変換処理を該除算に対応する処理として実行する。【選択図】なし【特許請求の範囲】
【請求項１】
暗号文処理システムであって、
第１計算機と第２計算機とを含み、
前記第２計算機は、
第１秘密鍵ベクトルs=(s1,s2,…,sn) ∈(Zq)n（ただし、nは自然数、qは2の冪乗であって1でない自然数、Zqはqを法とする剰余類環）を用いて、平文m∈Zt（ただし、tはqの約数、Ztはtを法とする剰余類環）が暗号化された第１暗号文c=(a, <s,a> + e + (mq/t))（ただし、a∈(Zq)n、e∈Zq）を保持し、
前記平文mに対して第１演算が実行された結果が前記第１秘密鍵ベクトルsを用いて暗号化された第２暗号文、を生成する命令を、前記第１計算機から受信し、
前記第１演算は、2の冪乗である第１自然数による除算を含み、
前記第２計算機は、
前記第１暗号文cに対する演算処理を実行することにより、前記第２暗号文を生成し、
前記演算処理において、Zq上での大小関係をZp上において保存する第１関数f:Zq→Zp（ただし、p=q/(前記第１自然数)、Zpはpを法とする剰余類環）による変換処理を、前記除算に対応する処理として実行する、暗号文処理システム。
【請求項２】
請求項１に記載の暗号文処理システムであって、
前記第１関数f:Zq→Zpは、Zqの任意の元xを、(xp/q)を超えない最大の整数、のZpでの剰余類、に写像する、暗号文処理システム。
【請求項３】
請求項１に記載の暗号文処理システムであって、
前記第１計算機は、
前記平文mの自然数iによる除算指示を受け付け、
1/iに最も近いw/2V（vは所定値以下の自然数、wは2V以下の自然数）を特定し、
前記特定したw/2Vにおける2Vを前記2の冪乗である自然数に決定し、
前記特定したwによる乗算を前記第１演算に含め、
前記第２計算機は、前記演算処理において、前記命令が示すwによる乗算処理を、前記第１演算に含まれる乗算に対応する処理として実行する、暗号文処理システム。
【請求項４】
請求項１に記載の暗号文処理システムであって、
前記第２計算機は、前記第２暗号文を、前記第１計算機に送信し、
前記第１計算機は、
前記第１秘密鍵ベクトルsを保持し、
前記第１秘密鍵ベクトルsの各成分のZpでの剰余類を成分とする第２秘密鍵ベクトルs’=(s’1,s’2,…,s’n) ∈(Zp)nを生成し、
前記第２秘密鍵ベクトルs’=(s’1,s’2,…,s’n)nを用いて前記第２暗号文を復号し、
前記復号した第２暗号文を、前記平文mに対して前記第１演算が実行された結果に決定する、暗号文処理システム。
【請求項５】
請求項１に記載の暗号文処理システムであって、
前記第２計算機は、前記第１秘密鍵ベクトルsを用いて、複数の平文m1,…,mk∈Zt（ただし、m1=m、kは2以上の自然数）それぞれが暗号化された暗号文c1,…,ck（ただし、c1=c、2≦j≦kである全ての自然数jに対して、cj=(aj-, <s,aj> + ej + (mjq/t))、aj∈(Zq)n、ej∈Zq）からなる暗号文群を保持し、
前記第１演算は、前記複数の平文の線形和α1m1 + … +αkmk（ただし、α1,…,αkそれぞれは実数）に対する前記第１自然数による除算であり、
前記第２計算機は、前記演算処理において、前記暗号文群と前記第１関数fとを用いて、α1c1’ + … +αkck’（ただし、1≦h≦kである全ての自然数hに対して、ch’はchを前記第１関数fで写像した値）を、前記第２暗号文として生成する、暗号文処理システム。
【請求項６】
暗号文処理サーバであって、
記憶装置とプロセッサとを含み、
前記記憶装置は、
第１秘密鍵ベクトルs=(s1,s2,…,sn) ∈(Zq)n（ただし、nは自然数、qは2の冪乗であって1でない自然数、Zqはqを法とする剰余類環）を用いて、平文m∈Zt（ただし、tはqの約数、Ztはtを法とする剰余類環）が暗号化された第１暗号文c=(a, <s,a> + e + (mq/t))（ただし、a∈(Zq)n、e∈Zq）を保持し、
前記プロセッサは、前記平文mに対して第１演算が実行された結果が前記第１秘密鍵ベクトルsを用いて暗号化された第２暗号文、を生成する命令を受信し、
前記第１演算は、2の冪乗である第１自然数による除算を含み、
前記プロセッサは、
前記第１暗号文cに対する演算処理を実行することにより、前記第２暗号文を生成し、
前記演算処理において、Zq上での大小関係をZp上において保存する第１関数f:Zq→Zp（ただし、p=q/(前記第１自然数)、Zpはpを法とする剰余類環）による変換処理を、前記除算に対応する処理として実行する、暗号文処理サーバ。
【請求項７】
暗号文処理システムが暗号文に対する処理を実行する方法であって、
前記暗号文処理システムは、第１計算機と第２計算機とを含み、
前記第２計算機は第１秘密鍵ベクトルs=(s1,s2,…,sn) ∈(Zq)n（ただし、nは自然数、qは2の冪乗であって1でない自然数、Zqはqを法とする剰余類環）を用いて、平文m∈Zt（ただし、tはqの約数、Ztはtを法とする剰余類環）が暗号化された第１暗号文c=(a, <s,a> + e + (mq/t))（ただし、a∈(Zq)n、e∈Zq）を保持し、
前記方法は、前記第２計算機が、前記平文mに対して第１演算が実行された結果が前記第１秘密鍵ベクトルsを用いて暗号化された第２暗号文、を生成する命令を、前記第１計算機から受信し、
前記第１演算は、2の冪乗である第１自然数による除算を含み、
前記方法は、前記第２計算機が、
前記第１暗号文cに対する演算処理を実行することにより、前記第２暗号文を生成し、
前記演算処理において、Zq上での大小関係をZp上において保存する第１関数f:Zq→Zp（ただし、p=q/(前記第１自然数)、Zpはpを法とする剰余類環）による変換処理を、前記除算に対応する処理として実行する、方法。
【請求項８】
請求項７に記載の方法であって、
前記第１関数f:Zq→Zpは、Zqの任意の元xを、(xp/q)を超えない最大の整数、のZpでの剰余類、に写像する、方法。
【請求項９】
請求項７に記載の方法であって、
前記第１計算機が、
前記平文mの自然数iによる除算指示を受け付け、
1/iに最も近いw/2V（vは所定値以下の自然数、wは2V以下の自然数）を特定し、
前記特定したw/2Vにおける2Vを前記2の冪乗である自然数に決定し、
前記特定したwによる乗算を前記第１演算に含め、
前記第２計算機は、前記演算処理において、前記命令が示すwによる乗算処理を、前記第１演算に含まれる乗算に対応する処理として実行する、方法。
【請求項１０】
請求項７に記載の方法であって、
前記第１計算機は、前記第１秘密鍵ベクトルsを保持し、
前記方法は、
前記第２計算機が、前記第２暗号文を、前記第１計算機に送信し、
前記第１計算機が、
前記第１秘密鍵ベクトルsの各成分のZpでの剰余類を成分とする第２秘密鍵ベクトルs’=(s’1,s’2,…,s’n) ∈(Zp)nを生成し、
前記第２秘密鍵ベクトルs’=(s’1,s’2,…,s’n)nを用いて前記第２暗号文を復号し、
前記復号した第２暗号文を、前記平文mに対して前記第１演算が実行された結果に決定する、方法。
【請求項１１】
請求項７に記載の方法であって、
前記第２計算機は、前記第１秘密鍵ベクトルsを用いて、複数の平文m1,…,mk∈Zt（ただし、m1=m、kは2以上の自然数）それぞれが暗号化された暗号文c1,…,ck（ただし、c1=c、2≦j≦kである全ての自然数jに対して、cj=(aj-, <s,aj> + ej + (mjq/t))、aj∈(Zq)n、ej∈Zq）からなる暗号文群を保持し、
前記第１演算は、前記複数の平文の線形和α1m1 + … +αkmk（ただし、α1,…,αkそれぞれは実数）に対する前記第１自然数による除算であり、
前記方法は、前記第２計算機が、前記演算処理において、前記暗号文群と前記第１関数fとを用いて、α1c1’ + … +αkck’（ただし、1≦h≦kである全ての自然数hに対して、ch’はchを前記第１関数fで写像した値）を、前記第２暗号文として生成する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号文処理システム、暗号文処理サーバ、及び暗号文処理方法に関する。
【背景技術】
【０００２】
近年、大量のデータを収集し分析を行い、価値のある知識を抽出するビックデータビジネスが普及している。大量データの分析を実行する際、大容量のストレージ、高速なＣＰＵ、及びこれらを分散統制するシステムが必要であるため、クラウドなどの外部リソースに分析を依頼することがある。
【０００３】
データを外部にアウトソースする場合において、データの機密性を確保した上で分析を実行するために、平文に対して足し算、掛け算、平均値計算などの演算処理を実行した結果に対応する暗号文、を当該平文に対応する暗号文から生成する秘匿分析技術がある。
【０００４】
秘匿分析技術の背景として、米国特許第２０１１−０１１０５２５号明細書（特許文献１）、及び下記の非特許文献１がある。これらの文献は、暗号化状態で任意の演算を実行する完全準同型暗号方式について記載している。また、特許文献１は、完全準同型暗号に比べて計算処理負荷の小さいsomewhat準同型暗号方式について記載し、非特許文献１は、LWEベースの加法的共通鍵暗号方式について記載している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第２０１１−０１１０５２５号明細書
【非特許文献】
【０００６】
【非特許文献１】Leo Ducas, Daniele Micciancio: FHEW: Bootstrapping Homomorphic Encryption in Less Than a Second. EUROCRYPT 2015: pages 617-640.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、複数の平文の平均値に対応する暗号文を、当該複数の平文それぞれに対応する暗号文から生成する際には、暗号文に対する割り算（以下、除算とも呼ぶ）を実行する必要がある。暗号文に対する割り算（除算）とは、当該暗号文に対応する平文の除算結果を当該暗号文の生成に用いた秘密鍵で暗号化した暗号文を生成することであり、必ずしも暗号文そのものを割ることに相当するわけではない。
【０００８】
また、特許文献１には、somewhat準同型暗号方式を用いた、暗号文に対する所定回数の足し算、引き算、及び掛け算について記載されているが、somewhat準同型暗号方式を用いた暗号文に対する割り算の実行方法は明記されていない。また、非特許文献１にはLWEベースの加法的共通鍵暗号方式を用いた、暗号文に対する足し算、引き算、及びNANDゲート演算が記載されているが、LWEベースの加法的共通鍵暗号方式を用いた暗号文に対する割り算の実行方法は明記されていない。
【０００９】
本発明の一態様は、第三者に秘密鍵を開示することなく、かつ少ない処理負荷で、平文の除算結果に対応する暗号文を生成する暗号文処理システムを提供する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の一態様は以下の構成を採用する。暗号文処理システムであって、第１計算機と第２計算機とを含み、前記第２計算機は、第１秘密鍵ベクトルs=(s1,s2,…,sn) ∈(Zq)n（ただし、nは自然数、qは2の冪乗であって1でない自然数、Zqはqを法とする剰余類環）を用いて、平文m∈Zt（ただし、tはqの約数、Ztはtを法とする剰余類環）が暗号化された第１暗号文c=(a, <s,a> + e + (mq/t))（ただし、a∈(Zq)n、e∈Zq）を保持し、前記平文mに対して第１演算が実行された結果が前記第１秘密鍵ベクトルsを用いて暗号化された第２暗号文、を生成する命令を、前記第１計算機から受信し、前記第１演算は、2の冪乗である第１自然数による除算を含み、前記第２計算機は、前記第１暗号文cに対する演算処理を実行することにより、前記第２暗号文を生成し、前記演算処理において、Zq上での大小関係をZp上において保存する第１関数f:Zq→Zp（ただし、p=q/(前記第１自然数)、Zpはpを法とする剰余類環）による変換処理を、前記除算に対応する処理として実行する、暗号文処理システム。
【発明の効果】
【００１１】
本発明の一態様によれば、秘密鍵を開示することなく、かつ少ない処理負荷で、平文の除算結果に対応する暗号文を生成することができる。
【００１２】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１３】
【図１】実施例１における暗号文処理システムの構成例を示すブロック図である。
【図２Ａ】実施例１におけるユーザ端末のハードウェア構成例を示すブロック図である。
【図２Ｂ】実施例１におけるサーバのハードウェア構成例を示すブロック図である。
【図３】実施例１における暗号文処理の一例を示すシーケンス図である。
【図４】実施例１における暗号文データフォーマットの例である。
【図５】実施例１における除算命令データフォーマットの例である。
【図６】実施例１における除算暗号文生成処理の一例を示すフローチャートである。
【図７】実施例１における除算暗号文復号用秘密鍵生成処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。本実施形態は、ユーザの秘密鍵を持たないサーバが、暗号文に対する割り算（除算）を実行することができる暗号文処理システムを説明する。なお、本実施形態において、暗号文に対する割り算（除算）とは、当該暗号文に対応する平文の除算結果を当該暗号文の生成に用いた秘密鍵で暗号化した暗号文、を生成することであり、必ずしも暗号文そのものを割ることに相当するわけではない。
【実施例１】
【００１５】
図１は、本実施例の暗号文処理システムの構成例を示すブロック図である。暗号文処理システムは、例えば、秘密鍵及び平文データを保持するユーザ端末１００と、暗号文の除算処理を実行するサーバ２００と、を含む。ユーザ端末１００とサーバ２００の詳細な構成については後述する。ユーザ端末１００とサーバ２００は、ネットワーク３００を介して相互に情報を送受信する。
【００１６】
図２Ａは、ユーザ端末１００の構成例を示すブロック図である。ユーザ端末１００は、例えば、内部信号線１０４で連結された、プロセッサ（ＣＰＵ）１０１、補助記憶装置１０２、メモリ１０３、表示装置１０５、入出力インターフェース１０６、及び通信インターフェース１０７を有する計算機によって構成される。
【００１７】
プロセッサ１０１は、メモリ１０３に格納されたプログラムを実行する。メモリ１０３は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような高速かつ揮発性の記憶素子であり、プロセッサ１０１が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００１８】
補助記憶装置１０２は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）等の大容量かつ不揮発性の記憶装置であり、プロセッサ１０１が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置１０２から読み出されて、メモリ１０３にロードされて、プロセッサ１０１によって実行される。
【００１９】
入出力インターフェース１０６は、キーボードやマウスなどが接続され、オペレータからの入力を受けるインターフェースである。また、入出力インターフェース１０６は、表示装置１０５やプリンタなどが接続され、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。表示装置１０５は、入出力インターフェース１０６から出力されたプログラムの実行結果を表示する。
【００２０】
通信インターフェース１０７は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。また、通信インターフェース１０７は、例えば、ＵＳＢ等のシリアルインターフェースを含む。
【００２１】
プロセッサ１０１が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワーク３００を介してユーザ端末１００に提供され、非一時的記憶媒体である不揮発性の補助記憶装置１０２に格納される。このため、ユーザ端末１００は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【００２２】
ユーザ端末１００は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００２３】
プロセッサ１０１は、例えば、秘密鍵生成部１１１、暗号文生成部１１２、除算暗号文復号用秘密鍵生成部１１３、及び除算暗号文復号部１１４を含む。例えば、プロセッサ１０１は、メモリ１０３にロードされた秘密鍵生成プログラムに従って動作することで、秘密鍵生成部１１１として機能し、メモリ１０３にロードされた暗号文生成プログラムに従って動作することで、暗号文生成部１１２として機能する。プロセッサ１０１に含まれる他の部についても同様である。
【００２４】
秘密鍵生成部１１１は、平文を暗号化する秘密鍵を生成する。暗号文生成部１１２は、秘密鍵を用いて暗号文を生成する。除算暗号文復号用秘密鍵生成部１１３は、サーバ２００が生成した除算暗号文を復号するための秘密鍵を生成する。除算暗号文とは、平文の除算結果に対応する暗号文である。除算暗号文復号部１１４、除算暗号文復号用秘密鍵生成部１１３が生成した秘密鍵を用いて除算暗号文を復号し、復号結果を、元の平文を除算することにより得られた商に決定する。
【００２５】
図２Ｂは、サーバ２００のハードウェア構成例を示すブロック図である。サーバ２００は、例えば、内部信号線２０４で連結された、プロセッサ（ＣＰＵ）２０１、補助記憶装置２０２、メモリ２０３、表示装置２０５、入出力インターフェース２０６、及び通信インターフェース２０７を有する計算機によって構成される。サーバ２００に含まれる構成は、ユーザ端末１００に含まれる構成と同様であるため、各構成についての説明を省略する。
【００２６】
プロセッサ２０１は、除算暗号文生成部２１１を含む。例えば、プロセッサ２０１は、メモリ２０３にロードされた除算暗号文生成プログラムに従って動作することで、除算暗号文生成部２１１として機能する。除算暗号文生成部２１１は、暗号文を復号することなく、除算暗号文を生成する。
【００２７】
以下、本実施例で使用する用語を定義する。
【００２８】
（１）LWEベース加法的共通鍵暗号
本実施例の暗号化処理システムは、特に断りが無い限り、非特許文献２の３章で述べられている、LWEベース加法的共通鍵暗号方式を利用する。LWEベース加法的共通鍵暗号方式における方式の暗号化、復号化、及び加算演算について説明する。
【００２９】
qを2の冪乗の自然数（20=1を除く）、tをqの約数とする。集合Zq={0,1,2,…,q-1}とすると、Zqは整数環Zのイデアル(q)による剰余環構造を与える。即ちZqは、qを法とする剰余類環である。このとき、秘密鍵ベクトル(以下、単に秘密鍵とも称する)s=(s1,s2,…,sn)∈(Zq)nによる平文m∈Ztの暗号文cを以下のように決定する。なお、Ztは、tを法とする剰余類環である。
【００３０】
ランダムに決定されたベクトルa=(a1,a2,…,an)∈(Zq)nと、エラー項e∈Zqに対して、暗号文cをc=(a, b)=(a, <s,a> + e + (mq/t)) ∈(Zq)n+1とする。ただし、<s,a>はベクトルsとaの内積値である。
【００３１】
また、暗号文c=(a, b)の復号結果を「t(b-<s,a>)/q」∈Ztとする。ただし、「」は、実数xをxに最も近い整数へ写像する、丸め込み関数である。例えば「2.8」=3、「-1.2」=-1である。なお、丸め込み関数は、例えば1.5のように最も近い整数が２つ存在する実数を、当該２つの整数のうち大きい整数又は小さい整数に写像する。なお、丸め込み関数が、当該実数を、当該２つの整数のうち大きい整数に写像するか、小さい整数に写像するかは、例えば、予め定められている。なお、エラー項eの絶対値がq/2t以下の場合、復号結果が元の平文m∈Ztに一致する。
【００３２】
また、2つの暗号文c1=(a1, b1),c2=(a2, b2)の加算演算をc1+c2=(a1+a2, b1+b2)と定義する。なお、当該暗号化処理は加法的準同型性を有する。即ち、平文a1を暗号化して生成された暗号文と平文a2を暗号化して生成された暗号文との和と、a1とa2との和を暗号化して生成された暗号文と、が等しい。
【００３３】
なお、暗号文c1, c2それぞれのエラー項e1,e2に対して、e1+e2の絶対値がq/2t以下である場合、加算暗号文c1+c2の復号結果が元の平文m1,m2の加算結果m1+m2∈Ztに一致する。なお、前述の秘密鍵の生成やパラメータなどにおいて、非特許文献２に記載されている他の秘密鍵生成方法やパラメータが用いられてもよい。また、他のLWEベース暗号方式の秘密鍵生成方法やパラメータが用いられてもよい。
【００３４】
（２）モジュラースイッチ、kビットシフト演算
pを前述のqの約数とし、Zpを、pを法とする剰余類環とする。ZqからZpへのモジュラースイッチ関数MS:Zq→ZpをMS(x)=（(xp/q)を超えない最大の整数のZpでの剰余類）とする。なお、モジュラースイッチ関数の代わりに、例えば、Zq上での大小関係をZp上においても保存する他の関数f:Zq→Zpが利用されてもよい。つまり、f:Zq→Zpは、x≧ｙである任意のx,y∈Zpに対して、f(x)≧f(y)となる関数である。
【００３５】
前述の暗号文c=(a, b)=(a, <s,a> + e + (mq/t)) ∈(Zq)n+1に対するモジュラースイッチMS(c)を、暗号文ｃの各成分のモジュラースイッチからなるベクトルMS(c)= (MS(a), MS(b)) = (MS(a1),MS(a2),…,MS(an), MS(b))とする。
【００３６】
例えば、q=256, p=16の場合、MS(1)=0, MS(15)=0, MS(16)=1, MS(124)=7, MS(255)=15である。これらの例において、モジュラースイッチ関数は、実数を、当該実数を4(=log2(q/p))ビットシフトさせた値を代表元とするZpの剰余類に写像する。即ち、モジュラースイッチ関数は、当該実数を16=24で除算した商を代表元とする剰余類を返す。本実施例の暗号文処理システムは、暗号文にモジュラースイッチ関数を適用することを暗号文に対する除算処理とみなすことにより、除算暗号文を生成する。従って、本実施例では、暗号文ｃをモジュラースイッチ関数によって変換する演算を、kビットシフト演算と呼ぶ。なお、k=log2(q/p)である。
【００３７】
（３）自然写像
q, pを前述の通りとする。ZqからZpへの自然写像NM: Zq→ZpをNM(x)=xのZpでの剰余類とする。s∈(Zq)nに対して、NM(s)=(NM(s1), NM(s2),…, NM(sn))とする。
【００３８】
（４）kビットシフト演算の復号化
q, pを前述の通りとする。またk=log2(q/p)， t’=tp/qとする。c=(a, b)=(a, <s,a> + e + (mq/t)) ∈(Zq)n+1のモジュラースイッチMS(c) ∈(Zp)n+1を平文空間Zt’のZp上の暗号文とみなし、当該暗号文を秘密鍵NM(s)で復号した結果「t’(MS(b)-<MS(s),MS(a)>)/p」∈Zt’を、kビットシフト演算結果に対する復号結果とする。このkビットシフト演算結果に対する復号結果は、暗号文cの平文mをkビットシフトした平文m’にp, q, sから定まるエラー項が加えられた平文である。つまり、「t’(MS(b)-<MS(s),MS(a)>)/p」= m’+e(p,q,s)である。つまり、当該復号結果はエラー項を含むため、エラー項の値が大きい場合には、厳密な意味でのkビットシフトm’と一致しない。
【００３９】
図３は、暗号文処理の一例を示すフローチャートである。2の冪乗であって1でない自然数q、及びqの約数tが予め定められている。また、平文m∈Ztは、例えば、予め補助記憶装置１０２又はメモリ１０３に格納されている。まず、秘密鍵生成部１１１は、例えば、前述のLWEベース暗号方式の秘密鍵生成アルゴリズムを実行することにより、秘密鍵sを生成する（Ｓ３０１）。なお、秘密鍵sは、例えば、予め補助記憶装置１０２又はメモリ１０３に格納されていてもよい。
【００４０】
次に、暗号文生成部１１２は、例えば、ランダムに、a=(a1,a2,…,an)∈(Zq)n及びエラー項e∈Zqを決定し、前述の暗号化方式に従って、平文m∈Ztの秘密鍵sによる暗号文c=(a, b)=(a, <s,a> + e + (mq/t)) ∈(Zq)n+1を生成する（Ｓ３０２）。なお、暗号文生成部１１２は、例えば、Zqの所定範囲の元から、ランダムにエラー項eを決定してもよい。また、暗号文生成部１１２は、例えば、Zqの全ての値をとり得る所定の確率変数が従う所定の確率分布を用いて、エラー項eを決定してもよい。
【００４１】
次に、暗号文生成部１１２は、生成した暗号文cを、サーバ２００に送信する（Ｓ３０３）。図４は、暗号文c=(a, b)=(a, <s,a> + e + (mq/t)) ∈(Zq)n+1のデータフォーマットの一例である。暗号文データ４００は、例えば、ベクトルaの値を格納するセル４０１、及びbの値を格納するセル４０２を含む。なお、図４の例では、説明のため、セル４０２にb(=<s,a> + e + (mq/t))と記載されているが、暗号文生成部１１２はa及びbの値そのもののみをサーバ２００に送信し、<s,a>、e、及び(mq/t)の値についてはサーバ２００に送信しない。
【００４２】
図３の説明に戻る。次に、暗号文生成部１１２は、サーバ２００に除算命令データを送信する（Ｓ３０４）。図５は、除算命令のデータフォーマットの一例である。除算命令データ５００は、例えば、分子フィールド５０１及び分母フィールド５０２を含む。分母フィールド５０２は、2の冪乗の値を格納する。図５の除算命令データ５００は、平文に対して3/8を掛けた値、即ち平文に３を掛けて８で割った値、に対応する暗号文を生成する命令である。
【００４３】
分子フィールド５０１に格納される値及び分母フィールド５０２に格納される値は、例えば、ユーザ等によって予め設定され、補助記憶装置１０２又はメモリ１０３に格納されていてもよい。
【００４４】
また、例えば、暗号文生成部１１２が、平文を割る数の入力をユーザから受け付け、受け付けた数を用いて、分子フィールド５０１に格納される値及び分母フィールド５０２に格納される値を決定してもよい。
【００４５】
具体的には、例えば、暗号文生成部１１２は、平文を自然数n(≧2)で割る除算指示をユーザから受け付けた場合、1/nに最も近いw/2v（vは所定値以下の任意の自然数、wは2V以下の自然数）を特定する。なお、1/nに最も近いw/2vが複数存在する場合、暗号文生成部１１２は、分母が最小であるw/2vを選択する。暗号文生成部１１２は、特定したw/2vにおける、wを分子フィールド５０１に格納し、2Vを分母フィールド５０２に格納する。なお、前述の所定値は除算指示ごとに指定されてもよいし、全ての除算指示において不変の予め定められた値でもよい。
【００４６】
図３の説明に戻る。次に、除算暗号文生成部２１１は、除算暗号文を生成する（Ｓ３０５）。ステップＳ３０５の処理の詳細は、図６を用いて後述する。除算暗号文生成部２１１は、生成した除算暗号文を、ユーザ端末１００に送信する（Ｓ３０６）。次に、除算暗号文復号用秘密鍵生成部１１３は、受信した除算暗号文を復号するための除算暗号文復号用秘密鍵を生成する（Ｓ３０７）。ステップＳ３０７の処理の詳細は、図７を用いて後述する。
【００４７】
除算暗号文復号部１１４は、ステップＳ３０７で生成された除算暗号文復号用秘密鍵を用いて、上述のkビットシフト演算の復号化方法を用いて、除算暗号文を復号化することにより、平文の除算結果を算出し、処理を終了する（Ｓ３０８）。なお、除算暗号文復号部１１４は、算出した除算結果を、表示装置１０５に出力してもよい。
【００４８】
図６は、ステップＳ３０６における除算暗号文生成処理の一例を示すフローチャートである。まず、除算暗号文生成部２１１は、受信した暗号文c=(a, b)と、除算命令データ５００の分子フィールド５０１に格納された値と分母フィールド５０２に格納された値と（図５の例では(3, 8)）、をメモリ２０３にロードする（Ｓ６０１）。
【００４９】
次に、除算暗号文生成部２１１は、例えばLWEベース加法的共通鍵暗号の加算演算を繰り返し実行することにより、暗号文c=(a, b)に除算命令の分子フィールド５０１の値を掛けた暗号文である中間暗号文c’を生成する（Ｓ６０２）。図５の例の場合、分子フィールド５０１の値は3であるため、除算暗号文生成部２１１は、中間暗号文c’=3c = (3a, 3b)を生成する。なお、分子フィールド５０１の値が1である場合、ステップＳ６０２は実行されない。
【００５０】
次に、除算暗号文生成部２１１は、ステップＳ６０２で算出した中間暗号文c’に対して、モジュラースイッチを用いたkビットシフト演算を実行することにより、除算暗号文MS(c’)を生成する（Ｓ６０３）。ただしk = log2(分母フィールド５０２の値)である。つまりp=q/(分母フィールド５０２の値)である。図５の例では、k = log2(8) = 3のため、除算暗号文生成部２１１は、モジュラースイッチを用いることにより、中間暗号文c’に対する3ビットシフト演算を実行し、除算暗号文を生成する。
【００５１】
図６の例では、除算暗号文生成部２１１は、暗号文に対して分子フィールド５０１の値による乗算（Ｓ６０２）を行ってから、分母フィールド５０２の値による除算（Ｓ６０３）を行ったが、処理順序を入れ替えてもよい。即ち、除算暗号文生成部２１１は、暗号文cに対して除算（Ｓ６０３）を実行した結果に対して乗算（Ｓ６０２）を実行してもよい。
【００５２】
図７は、ステップＳ３０７における除算暗号文復号用秘密鍵生成処理の一例を示すフローチャートである。まず、除算暗号文復号用秘密鍵生成部１１３は、初期処理として秘密鍵sと、除算命令データ５００の分母フィールド５０２の値をメモリ１０３にロードする（Ｓ７０１）。次に、除算暗号文復号用秘密鍵生成部１１３は、ZqからZpへの自然写像を用いてNM(s)を算出し、除算暗号文復号用秘密鍵に決定する（Ｓ７０２）。ただし、p = q/(分母フィールド５０２の値)である。
【００５３】
以上、本実施例の暗号文処理システムは、前述の処理により除算暗号文を生成することができる。サーバ２００は、モジュラースイッチを用いた変換により、秘密鍵を利用することなく少ない処理負荷で、除算暗号文を生成することができる。また、ユーザ端末１００は、少ない処理負荷で除算暗号文から平文の除算結果を得ることができる。
【００５４】
なお、暗号文処理システムは、複数の平文の線形和に対する除算結果（例えば、複数の平文に対応する平均値）に対応する除算暗号文を生成してもよい。
【００５５】
具体的には、暗号文生成部１１２は、ステップＳ３０１で複数の平文それぞれに対する暗号文c1,c2,…,cnを生成し、ステップＳ３０３でc1,c2,…,cnをサーバ２００に送信し、ステップＳ３０４で当該暗号文の線形和α1×c1+α2×c2+ … +αn×cn（ただし、α1,…,αkは実数）それぞれは実数に対する除算命令を送信する。
【００５６】
なお、この場合除算命令データ５００は、例えば、当該線形和の係数α1,α2,…,αnの値を格納するフィールドを含む。除算暗号文生成部２１１は、例えばLWEベース加法的共通鍵暗号の加算演算を繰り返し実行することにより当該線形和を計算する。除算暗号文生成部２１１は計算した線形和に対して、ステップＳ３０５の除算暗号文処理を実行することにより、線形和の除算暗号文を算出することができる。なお、除算暗号文生成部２１１は、先にc1,…,cnそれぞれの除算暗号文を生成し、生成した除算暗号文の線形和を算出してもよい。
【００５７】
また、本実施例の暗号文処理システムは、kビットシフト演算を暗号文に対する除算以外の処理に利用してもよい。例えば、暗号文処理システムは、暗号文に対するkビットシフト演算によって暗号文の最上位ビットのみを算出する処理を実行してもよい。例えば、暗号文処理システムは、暗号文c1,c2に対して、暗号文に対する加算演算を用いて暗号文c1-c2を算出し、暗号文c1-c2の最上位ビットを算出することにより、暗号文c1,c2に対応する平文の大小比較結果を算出することができる。
【００５８】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００５９】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００６０】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【図１】
2017223822.tif 000002
【図２Ａ】
2017223822.tif 000003
【図２Ｂ】
2017223822.tif 000004
【図３】
2017223822.tif 000005
【図４】
2017223822.tif 000006
【図５】
2017223822.tif 000007
【図６】
2017223822.tif 000008
【図７】
2017223822.tif 000009