JP6962578B2 - 暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法 - Google Patents

暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法 Download PDF

Info

Publication number
JP6962578B2
JP6962578B2 JP2019095289A JP2019095289A JP6962578B2 JP 6962578 B2 JP6962578 B2 JP 6962578B2 JP 2019095289 A JP2019095289 A JP 2019095289A JP 2019095289 A JP2019095289 A JP 2019095289A JP 6962578 B2 JP6962578 B2 JP 6962578B2
Authority
JP
Japan
Prior art keywords
processing
data
unit
encrypted
encryption
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
JP2019095289A
Other languages
English (en)
Other versions
JP2020190614A (ja
Inventor
優佑 星月
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Axell Corp
Original Assignee
Axell Corp
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 Axell Corp filed Critical Axell Corp
Priority to JP2019095289A priority Critical patent/JP6962578B2/ja
Priority to US16/832,136 priority patent/US11323241B2/en
Publication of JP2020190614A publication Critical patent/JP2020190614A/ja
Application granted granted Critical
Publication of JP6962578B2 publication Critical patent/JP6962578B2/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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/46Secure multiparty computation, e.g. millionaire problem

Description

本発明は、データの漏洩を防止でき、広範な処理を実行可能にする技術に関する。
従来、機械学習のアーキテクチャの1つであるニューラルネットワークモデルを用いることにより、画像、文字、及び音声などの認識処理(推論処理)が行われている。
ニューラルネットワークモデルにおける学習済みの係数データは、規模が大きく、クライアント装置のみで処理を行うには負荷が大きかったり、処理の実行が困難であったりという問題がある。これに対して、サーバ・クライアントモデルを用いることにより、大規模な演算が可能なクラウド資源をニューラルネットワークモデルによる推論処理等に利用したいという要求が存在している。
このサーバ・クライアントモデルを用いると、処理対象のデータをクライアント装置からサーバに送信することになるため、データに含まれる個人情報等の機密性の高いデータが漏洩してしまう虞がある。
このような問題に対処するために、データを暗号化したまま演算を行う秘匿演算方法を使用することが考えられる。秘匿演算方法としては、大きく分けると、準同型暗号を用いる方法と、MPC(Multi−Party−Computation)を用いる方法とがある。
まず、準同型暗号を用いる方法について説明する。
準同型暗号とは、平文と或る演算に対して、準同型な関係にある暗号文と演算との組が存在する暗号方式である。準同型暗号を厳密に表すと、平文a,bとその二変数関数F(a,b)に対して、暗号化関数をEncとすると、暗号文c1=Enc(a)、暗号文c2=Enc(b)が存在し、Enc(F(a,b))=G(c1,c2)となる関数Gが存在する暗号方式である。
準同型暗号にはいくつか種類があり、F(a,b)=a+bである場合を加法準同型暗号(AHE)と呼ぶ。なお、実際には、F(a,b)=a+b mod nである場合も、扱う平文が十分小さければ実質a+bとみなせるので、加法準同型暗号と呼ばれる。
また、F(a,b)=a×bである場合を乗法準同型暗号(MHE)と呼ぶ。なお、実際には、F(a,b)=a×b mod nである場合も、扱う平文が十分小さければ実質a×bとみなせるので、乗法準同型暗号と呼ばれる。
また、加法と乗法の両方の演算が扱える準同型暗号として、完全準同型暗号(FHE)が知られている。しかし、完全準同型暗号は、現在利用できる計算機の能力に比較して、計算量が膨大であるため、実用的ではないとみなされている。
また、加法と乗法の両方の演算が扱える準同型暗号であって、演算の回数に上限を設けることにより完全準同型暗号と比較して計算量を抑制した、Somewhat準同型暗号(SHE)も知られている。
例えば、特許文献1には、完全準同型暗号方式により入力データを暗号化して暗号データを生成する暗号化部と、暗号化部により生成された暗号データをサーバに送信する暗号データ送信部と、サーバにて所定の処理が施された暗号データを受信する暗号データ受信部と、所定の処理が施された暗号データを復号する復号部と、を備える、端末装置が開示されている。この特許文献1の技術によると、処理すべき入力データの内容をサーバに漏らすことなく、入力データに対する処理をサーバに代行させることができる。
一方、MPCは、複数のコンピュータを用いて通信を行いながら、暗号化されたデータを演算するシステムである。MPCは、準同型暗号と比べて多種類の演算を行うことができる。
特開2012−49679号公報
ニューラルネットワークモデルにおいて、データを暗号化データのままで処理することは、処理負荷が多大となり困難なことがある。例えば、非特許文献1の技術では、活性化関数の演算の都度、クライアント側で活性化関数の演算を実行するために、サーバとクライアントとの間でデータのやり取りが発生する。このため、非特許文献1の技術では、サーバとクライアントとの間の通信量が多くなり、処理時間が長期化する。
また、ニューラルネットワークモデルにおいて、データを暗号化データのままで処理することを考えると、利用できる演算が限定されている加法準同型暗号では、ニューラルネットワークの演算を実行することができないことがある。これに対応するため、より多くの種類の演算が可能な完全準同型暗号や、SomeWhat準同型暗号等を用いることも考えられるが、このような暗号による暗号化データは、データ量が多いため、演算における処理負荷が多大になるという問題がある。
処理負荷を抑える点を考慮すると、加法準同型暗号を用いて処理をすることが好ましいが、加法準同型暗号を用いる場合には、利用できる演算が限定されており、実行できる処理が限られてしまう。例えば、加法準同型暗号を用いると、整数以外の乗算(例えば、1未満の数の乗算(除算に相当)も含む)を行う処理が実行できない。例えば、一般にニューラルネットワークモデルにおいては、浮動小数点形式の小数を用いて演算を行っているが、加法準同型暗号は、整数と準同型な関係にあるために、固定小数点形式の小数を用いることが自然であると考えられる。しかしながら、固定小数点形式の小数の乗算を行うとき、固定小数点形式の小数のビット数を調整するための除算が必要となる。上述のように加法準同型暗号では、除算を行うことができないので、結果として、固定小数点形式の小数を入力するデータとして使用できない。
また、加法準同型暗号を用いて処理を行う場合には、ニューラルネットワークモデルを使用した処理に限らず、ニューラルネットワークモデルを使用しない処理においても、同様に、実行できる処理が限られてしまうという問題が生じる。
本発明は、上記事情に鑑みなされたものであり、その目的は、準同型暗号による暗号化データを用いてより広範な処理を実行することのできる技術を提供することにある。
上記目的を達成するため、一の観点に係る暗号処理システムは、暗号データ生成装置と、暗号処理装置と、処理結果利用装置とを備える暗号処理システムであって、暗号データ生成装置は、処理対象の平文データに対して所定の2以上の数の累乗を乗算させたデータに対応する準同型暗号の暗号化データを生成する前処理部を備え、暗号処理装置は、データ生成装置から暗号化データを取得する第1取得部と、暗号化データを暗号化状態のままで処理を実行する処理部と、を備え、処理結果利用装置は、暗号処理装置の処理部による処理結果を取得する第2取得部と、暗号化された処理結果のデータを復号し、復号されたデータを所定の2以上の数の累乗で除算する後処理部と、を備える。
本発明によれば、準同型暗号による暗号化データを用いてより広範な処理を実行することができるようになる。
図1は、一実施形態に係る処理システムの全体構成図である。 図2は、一実施形態に係る学習装置の機能構成図である。 図3は、一実施形態に係る推論装置の機能構成図である。 図4は、一実施形態に係るクライアント装置の機能構成図である 図5は、一実施形態に係る処理システムの一例の機能構成図である。 図6は、一実施形態に係る処理システムの動作を示すシーケンス図である。 図7は、一実施形態に係るコンピュータ装置の構成図である。 図8は、変形例に係る処理システムの一例の機能構成図である。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
まず、一実施形態に係る処理システムについて説明する。
図1は、一実施形態に係る処理システムの全体構成図である。
処理システム1は、暗号処理システムの一例であり、学習装置10と、暗号処理装置の一例としての推論装置20と、暗号データ生成装置及び処理結果利用装置の一例としてのクライアント装置30とを備える。学習装置10と推論装置20とは、ネットワーク40を介して接続されている。また、推論装置20とクライアント装置30とは、ネットワーク50を介して接続されている。ネットワーク40,50は、例えば、LAN(Local Area Netowork)や、WAN(Wide Area Network)等である。なお、図1では、ネットワーク40と、ネットワーク50とを別のネットワークとしているが、それらを同一のネットワークとしてもよい。
学習装置10は、ニューラルネットワークモデルの学習を行う。推論装置20は、学習装置10によるニューラルネットワークモデルの学習結果(ニューラルネットワークモデルの係数(重みやバイアス)等の設定値)に基づいてニューラルネットワークモデルを設定し、推論処理を行う。クライアント装置30は、例えば、ユーザにより利用される装置であり、推論処理の対象となるデータ(対象データ)に対して、例えば、暗号化等の前処理を実行する。そして、クライアント装置30は、前処理したデータを推論装置20に送信する。クライアント装置30は、推論装置20による暗号化された推論処理の結果(推論結果)を受け取り、暗号化された推論結果に対して後処理を実行し、最終的な推論結果を得る。
図2は、第1実施形態に係る学習装置の機能構成図である。
学習装置10は、学習部11と、記憶部15と、設定値通知部18とを備える。
学習部11は、ニューラルネットワークモデル12と、学習制御部14とを備える。
ニューラルネットワークモデル12は、例えば、所定の推論処理を実行して推論結果を出力するためのニューラルネットワークモデルである。ニューラルネットワークモデル12は、1以上の処理レイヤー(レイヤー)により構成されている。なお、本実施形態では、ニューラルネットワークモデル12は、設定値の学習のために使用される。図2の例では、ニューラルネットワークモデル12は、レイヤー1〜レイヤーNにより構成されている。ここで、Nは、1以上の整数である。各レイヤーにおける処理は、各処理部13によって実行される。各レイヤーにおける処理は、部分処理の一例である。ニューラルネットワークモデル12は、例えば、処理対象とする画像データが何を表しているか、例えば、人、犬、猫等の何が含まれているかを推論する推論処理を実行して推論結果を出力するモデルであってもよい。ニューラルネットワークモデル12におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
ニューラルネットワークモデル12のレイヤーを構成する処理部13としては、例えば、畳込処理部や、活性化関数部や、プーリング処理部や、アフィン処理部や、SoftMax処理部等がある。畳込処理部は、複数のフィルタデータ(設定値の一例)のそれぞれを用いて畳込処理を実行する。活性化関数部は、入力されたデータを活性化関数により変換する処理を実行する。プーリング処理部は、入力データについてダウンサンプリングする処理を実行する。アフィン処理部は、入力データについてのアフィン変換処理を実行する。SoftMax処理部は、入力データについてソフトマックス関数による処理を実行する。
学習制御部14は、記憶部15に格納されている学習用データ16を受け付けて、ニューラルネットワークモデル12に入力し、ニューラルネットワークモデル12から出力される推論結果に基づいて、ニューラルネットワークモデル12における設定値を学習する。学習制御部14は、学習用データ16による学習を終えた場合には、学習によって得られた設定値に関する設定値情報17を記憶部15に格納する。
記憶部15は、学習部11のニューラルネットワークモデル12の学習に使用する学習用データ16と、ニューラルネットワークモデル12の係数等の設定値に関する情報である設定値情報17とを記憶する。なお、学習用データ16は、学習用データ16に対応する推論結果データと対応付けた教師データとして記憶部15に格納されてもよい。学習用データ16は、例えば、暗号化されていないデータ(平文データ)であってもよい。設定値情報17に含まれる設定値としては、例えば、畳込処理部で使用されるフィルタの係数や、アフィン処理部で用いられる重み等があり、これらは、例えば処理部の乗算において乗数として用いられる。
設定値通知部18は、記憶部15に格納されている設定値情報17を、推論装置20に送信する。
次に、推論装置20について詳細に説明する。
図3は、一実施形態に係る推論装置の機能構成図である。
推論装置20は、処理実行部の一例としての推論部21と、記憶部25と、第1取得部の一例としての受信部28と、推論結果送信部29とを備える。
推論部21は、ニューラルネットワークモデル22と、推論制御部24とを備える。
ニューラルネットワークモデル22は、例えば、準同型暗号による暗号化が行われた暗号データを入力として、所定の推論処理を実行して推論結果を出力するためのニューラルネットワークモデルである。準同型暗号は、例えば、Paillier暗号やlifted−ElGamal暗号などである。
ニューラルネットワークモデル22は、1以上の処理レイヤー(レイヤー)により構成されている。なお、本実施形態では、ニューラルネットワークモデル22は、学習装置10のニューラルネットワークモデル12に対応する処理を暗号化データに対して実行する構成である。本実施形態では、例えば、ニューラルネットワーク12のそれぞれの処理部13に、ニューラルネットワーク22のそれぞれの処理部23が対応する。図3の例では、ニューラルネットワークモデル22は、レイヤー1〜レイヤーNにより構成されている。各レイヤーにおける処理(部分処理)は、各処理部23によって実行される。ニューラルネットワークモデル22は、例えば、処理対象とする画像データが何を表しているか、例えば、人、犬、猫等の何が含まれているかを推論する推論処理を実行して推論結果を出力するモデルであってもよい。ニューラルネットワークモデル22におけるレイヤー数や、各レイヤーで実行する部分処理の種類及び内容は、任意に設定することができる。
ニューラルネットワークモデル22のレイヤーを構成する処理部23としては、畳込処理部や、活性化関数部や、プーリング処理部や、アフィン処理部や、SoftMax処理部等がある。
推論制御部24は、記憶部25に格納されている設定値情報27に基づいて、ニューラルネットワークモデル22の設定を行う、すなわち、処理レイヤーの処理部23における係数等を設定する。本実施形態では、推論制御部24は、整数以外の乗算の処理を実行する学習装置10の処理部13に対応する処理部23に対して、調整乗算値を設定する。調整乗算値とは、処理部23に対して予め決定されている調整値(例えば、1より大きい数)を、設定値情報27が示す設定値に乗算して得られる整数である。なお、設定値に調整値を乗算した結果が整数とならない場合には、例えば、その値に近い整数を調整乗算値としてもよい。これにより、処理部23においては、平文データに対して調整乗算値を乗算する処理に対応する暗号文空間上の演算が、前段から入力される暗号化データに対して行われることとなる。すなわち、この処理部23においては、対応する処理部13よりも調整値倍(設定値に調整値を乗算した値が整数とならなかった場合には、ほぼ調整値倍)だけ大きい数を乗算する演算が行われることとなる。例えば、或る処理部23に入力される暗号データが、対応する処理部13に入力される平文データを暗号化させた暗号データである場合においては、処理部23から出力される暗号化データの処理結果を復号すると、処理部13による処理結果の調整値倍の値となる。
例えば、学習装置10から送信される設定値(学習装置10における学習で得られる設定値に相当)が浮動小数点形式のデータである場合には、推論制御部24が設定値を所定ビット数の固定小数点形式のデータに変換する。そして、推論制御部24は、固定小数点形式に変換した設定値に調整値を乗算させて整数化して調整乗算値を求めるようにしてもよい。この際、調整値を、所定ビット数の固定小数点形式のデータを整数化可能な2の累乗の調整値としてもよい。このようにすると、調整乗算値を確実に整数化することができる。また、学習装置10から送信される設定値(学習装置10における学習で得られる設定値に相当)が固定小数点形式のデータである場合には、設定値に調整値を乗算させて整数化して調整乗算値を求めるようにしてもよい。
ここで、加法準同型暗号について、加法準同型暗号であるPaillier暗号を例に挙げて説明する。
暗号に係る処理を行う場合には、以下のような各種設定を決定しておく。すなわち、暗号において使用する安全な素数p及びqを用意する。なお、素数の決定における手順や注意点は、RSA暗号と同じでよい。また、N=p×qとする。また、kを1≦k≦N−1の範囲で任意に設定する。g=1+kNとする。ここで、p、qは、秘密鍵、g、Nは、公開鍵、兼システムパラメータである。
例えば、平文データをA、B(0≦A≦N−1、0≦B≦N−1)とすると、それぞれを暗号化した暗号化データe、eは、以下の式(1)、(2)に示すように表される。
=g×r mod N ・・・(1)
=g×r mod N ・・・(2)
ここで、r1(0≦r1≦N−1)、及びr2(0≦r2≦N−1)は、乱数である。
Paillier暗号の暗号化データは、平文データ同士の和演算に対応する演算を、暗号化データの乗算として実行可能である。
暗号化データの乗算、すなわち、e×eは、式(3)に示すようになる。
×e=g×g×r ×r mod N
=gA+B×r ×r mod N・・・(3)
ここで、g=(1+kN)であるので、gのgに(1+kN)を代入して、g=(1+kN)が得られる。また、(1+kN)を二項定理で展開すると、(1+kN)=1+kN+…となる。展開後の式1+kN+…の第二項以降は、全てNの倍数であるため、1+kN+…をNで割ったあまりは1である。したがって、gmodN=1である。そして、g mod N=1であるため、g(A+B)=g(A+B mod N)が成り立つ。すると、式(3)は、g(A+B)=g(A+B mod N)の関係を用いて、下記式のように変形できる。
式(3)=g(A+B mod N)×r ×r mod N
=g(A+B mod N)×(r×r mod N・・・(4)
r3=r1×r2 mod Nとおいたとき、r1もr2も乱数なので、r3も乱数となる。したがって、式(4)は下記式のように変形できる。
式(4)=g(A+B mod N)×r mod N
=e(A+B mod N)・・・(5)
式(5)に示すe(A+B mod N)は、復号すると、A+B mod Nとなる。したがって、AおよびBがNに比べて十分小さければ、実質A+Bとみなすことができるため、暗号化データの乗算は、平文データの和演算に対応していることがわかる。
また、Paillier暗号の暗号化データは、平文データと、平文データの整数との乗算に対応する演算を実行可能である。
平文データAと整数Cとの乗算であるA×Cは、AをC回加算するという和演算に対応する。したがって、この和演算のそれぞれについて、暗号化データの乗算を行うことにより、暗号化データに対して平文データAと整数Cとの乗算に対応する演算を実行することができる。
具体的には、e×e×・・・、すなわち暗号化データの累乗(整数C乗)を行えばよいこととなり、式(6)に示すようになる。
×e×・・・=eA+A+・・・=eAC ・・・(6)
式(6)に示すeACは、復号すると、ACとなり、平文データAと整数Cとの乗算の結果となる。したがって、Paillier暗号の同じ暗号化データを累乗する演算が、平文データと、平文データの整数との乗算に対応する演算であることがわかる。
また、推論制御部24は、処理対象のデータである対象データ26をニューラルネットワークモデル22に入力し、ニューラルネットワークモデル22による推論処理を実行させる。本実施形態では、対象データ26は、準同型暗号で暗号化された暗号化データである。
記憶部25は、推論部21のニューラルネットワークモデル22で推論処理を実行させる対象の対象データ26と、ニューラルネットワークモデル22の係数等の設定値に関する情報である設定値情報27とを記憶する。設定値情報27に含まれる設定値としては、学習装置10による学習結果であり、例えば、処理部23で乗数として使用されるフィルタの係数や、重み等がある。なお、推論装置20は、推論処理を実行するとき、学習装置10から設定値情報27を取得して記憶部25に格納し、その設定値情報を推論処理に利用してもよい。また、推論装置20は、学習装置10によって学習された設定値情報27を予め記憶部25に格納するようにし、推論処理の実行時に、記憶部25から設定値情報27を読み出して利用してもよい。さらに、推論装置20は、後述する記録媒体111から学習装置10によって学習された設定値情報27を読み出して、記憶部25に格納するようにしてもよい。
受信部28は、学習装置10から送信される設定値情報を受信して記憶部25に格納する。また、受信部28は、クライアント装置30から送信される暗号化された対象データ26を受信して記憶部25に格納する。
推論結果送信部29は、推論部21のニューラルネットワークモデル22による推論処理の結果、すなわち、暗号化データである推論結果をクライアント装置30に送信する。
次に、クライアント装置30について詳細に説明する。
図4は、一実施形態に係るクライアント装置の機能構成図である。
クライアント装置30は、結果表示部31と、送信部32と、記憶部33と、第2取得部の一例としての受信部36と、前処理部37と、後処理部38とを備える。
記憶部33は、推論処理を実行させる平文データである対象データ34と、推論処理の推論結果35とを記憶する。なお、推論結果35は、推論装置20から推論結果が送信されて所定の処理が行われた場合に格納されるものであり、推論装置20による推論処理が行われていない対象データ34に対する推論結果については、存在しない。
前処理部37は、記憶部33に格納されている暗号化されていない対象データ34に対して、所定の前処理を実行する。具体的には、前処理部37は、対象データ34に対して、所定の2の累乗を乗算させ、推論装置20において実行される処理に含まれる累積の調整値で除算させた平文データに対応する準同型暗号(例えば、Paillier暗号)の暗号化データを生成する前処理を実行する。ここで、推論装置20において実行される処理に含まれる全体の調整値とは、例えば、処理において、累積的に調整値の乗算が行われる場合には、累積的な乗算に使用された全ての調整値を乗算した値(累積調整値)である。この前処理によると、後続の推論処理20が実行されると、その推論結果中における調整値による調整の成分が除去されることとなる。なお、推論装置20における推論処理の全体の調整値は、推論装置20の構成により特定されるので、予め前処理部37に設定するようにしてもよく、推論装置20から処理前に取得して前処理部37に設定するようにしてもよい。また、前処理部37は、生成した暗号化データを送信部32に渡す。
送信部32は、前処理部37から渡された暗号化データを、推論処理の対象データとして推論装置20に送信する。受信部36は、推論装置20から推論処理の推論結果を受信して後処理部38に渡す。
後処理部38は、受信部36から渡された推論結果を受け取り、推論結果に対して所定の後処理を実行する。具体的には、後処理部38は、前処理部37の暗号方式に対応する復号化を行い、復号された推論結果を、前処理部37で乗算した所定の2の累乗で除算し、記憶部33に格納する。
結果表示部31は、記憶部33に格納された推論結果35に基づいて各種情報を表示出力する。結果表示部31は、推論結果35をそのまま表示してもよく、推論結果35に基づいて所定の処理を実行し、その実行結果を表示するようにしてもよい。
次に、処理システム1のより具体的な例を説明する。
図5は、一実施形態に係る処理システムの一例の機能構成図である。
学習装置10は、処理レイヤー1を構成する処理部13−1と、処理レイヤー2を構成する処理部13−2とを有する。
処理部13−1は、入力されるデータに対して、0.5倍する乗算処理を行う。なお、0.5は、学習装置10による学習によって処理部13−1での演算に用いる設定値として得られたものである。例えば、平文データAが処理部13−1に入力されると、処理部13−1では、A×0.5が演算されて、0.5Aが出力される。なお、学習された処理部13−1用の設定値(本例では、0.5)は、設定値通知部18により推論装置20に送信される。
処理部13−2は、入力されるデータに対して、0.25倍する乗算処理を行って出力する。なお、0.25は、学習装置10による学習によって処理部13−2での演算に用いる設定値として得られたものである。例えば、処理部13−1から出力された平文データである0.5Aが処理部13−2に入力されると、処理部13−2では、0.5A×0.25が演算されて、0.125Aが出力される。なお、学習された処理部13−2用の設定値(本例では、0.25)は、設定値通知部18により推論装置20に送信される。
推論装置20は、処理レイヤー1を構成する処理部23−1と、処理レイヤー2を構成する処理部23−2と、推論制御部24とを有する。
推論制御部24は、学習装置10から送信された各設定値に対して、各処理部23−1、23−2に対応する調整値を乗算させて整数化させることにより調整乗算値を生成し、調整乗算値を各処理部23−1、23−2に設定する。本実施形態では、調整値は、変換部37cで乗算する累乗の底(本例では、2)又はこの底を累乗した値としている。
本例では、処理部23−1の調整値は、4であり、処理部23−2の調整値は、4となっている。本例においては、推論調整部24は、学習装置10から送信された処理部23−1用の調整値0.5に、処理部23−1の調整値4を乗算して、調整乗算値2を生成し、調整乗算値2を処理部23−1に設定する。また、推論調整部24は、学習装置10から送信された処理部23−2用の調整値0.25に、処理部23−2の調整値4を乗算して、調整乗算値1を生成し、調整乗算値1を処理部23−2に設定する。
クライアント装置30の前処理部37は、変換部37cと、調整除去部37bと、暗号化部37aとを含む。変換部37cは、浮動小数点形式の平文データを、所定の2の累乗倍することにより、浮動小数点形式の平文データの小数点部文を固定小数点形式のデータに変換する。ここで、所定の2の累乗としては、例えば、216としてもよく、十分なビット数が得られるものであればよく、例えば、推論処理による累積調整値以上の値であってもよい。図5の例では、変換部37cは、浮動小数点形式の平文データであるデータAを216倍、すなわち、65536倍した65536Aに変換する。
調整除去部37bは、推論装置20における累積調整値の影響を除去するために、対象データから累積調整値に相当する倍数を事前に除去する処理、すなわち、累積調整値を除算する処理を行う。本実施例では、調整除去部37bは、変換部37cで変換された固定小数点形式の平文データを累積調整値で除算する。図5の例では、データ65536Aを、処理部23−1の調整値4と処理部23−2の調整値4とを乗算した累積調整値16で除算して、4096Aとする。なお、累積調整値については、調整除去部37bが推論制御部24から受信して設定するようにしてもよく、クライアント装置30の利用者が累積調整値を取得して設定するようにしてもよい。
暗号化部37aは、平文データを、加法準同型暗号、例えば、Paillier暗号に暗号化する。図5の例では、平文データ4096Aは、暗号化データe4096Aに暗号化される。ここで、e4096Aは、平文データ4096Aを暗号化した値を示す。
このように、前処理部37で前処理が行われて暗号化された対象データは、推論装置20に送信される。処理部23−1は、平文データに対して設定された調整乗算値(同図では、2)を乗算する処理に対応する暗号文空間上の演算(対応演算)を、入力される暗号化データに対して行う。例えば、Paillier暗号を用いている場合には、処理部23−1は、対応演算として、入力された暗号化データを、調整乗算値だけ累乗する演算を行う。本例では、処理部23−1は、入力された暗号化データe4096Aを、調整乗算値だけ累乗(ここでは、2乗)することにより、e8192Aを算出して出力する。e8192Aは、復号すると、平文データ8192Aとなる。したがって、処理部23−1の出力結果は、処理部13−1の出力結果である0.5Aに対して、調整値倍(4倍)と、前処理部37で乗算した2の累乗(216倍:65536倍)と、累積調整値の除去調整分(1/16)とを乗算した倍数(ここでは、16384倍)の値となる暗号化データe8192Aとなっている。
処理部23−2は、平文データに対して設定された調整乗算値(同図では、1)を乗算する処理に対応する暗号文空間上の演算(対応演算)を、入力される暗号化データに対して行う。例えば、Paillier暗号を用いている場合には、処理部23−1は、対応演算として、入力された暗号化データを、調整乗算値だけ累乗する演算を行う。本例では、処理部23−2は、入力された暗号化データe8192Aを、調整乗算値だけ累乗(1乗)することにより、e8192Aを算出して出力する。e8192Aは、復号すると、平文データ8192Aとなる。したがって、処理部23−2の出力結果は、処理部13−2の出力結果である0.125Aに対して、処理部23−1の調整値(4)と、処理部23−2の調整値(4)と、前処理部37で乗算した2の累乗(216倍:65536倍)と、累積調整値の調整分(1/16)とを乗算した倍数(ここでは、65536倍)の値となる暗号化データとなっている。ここで、処理部23−2の出力結果は、処理部13−2の出力結果である0.125Aに対して、前処理部37で乗算した2の累乗(216倍:65536倍)のみを乗算した倍数の値であり、全体の調整値の影響が除去された値となっている。処理部23−2の処理結果は、推論結果送信部29によりクライアント装置30に送信される。
クライアント装置30の後処理部38は、復号部38aと、変換部38bとを含む。復号部38aは、推論装置20から送信される暗号化データである推論結果を取得し、暗号化データの暗号方式に対応する復号を行って、平文データの推論結果を得て変換部38bに渡す。例えば、本例では、復号部38aは、e8192Aを復号して、平文データ8192Aを得て、変換部38bに渡す。
変換部38bは、前処理部37における変換部37cの逆変換を行う。すなわち、変換部38bは、固定小数点形式の平文データを、所定の2の累乗で除算することにより、浮動小数点形式の平文データに変換する。図5の例では、変換部38bは、固定小数点形式の平文データであるデータ8192Aを216で除算することにより、0.125Aに変換する。これにより、クライアント装置30では、平文データに対して学習装置10の処理部13−1、13−2の処理を実行した実行結果と同じ値を得ることができる。
以上説明したように、処理システム1では、推論装置20においては、暗号化データを用いて秘匿状態を維持したまま処理を行うことができ、クライアント装置30において、平文データに対して処理をした結果と同じ結果を得ることができる。
次に、一実施形態に係る処理システム1における処理動作について説明する。
図6は、一実施形態に係る処理システムの動作を示すシーケンス図である。
学習装置10の学習制御部14が記憶部15に格納されている学習用データ16を用いて、学習部11のニューラルネットワークモデル12により推論処理を実行させることで、ニューラルネットワークモデル12の処理部13における各種設定値の学習を行う(S101)。次いで、学習制御部14は、学習によって得られた設定値に関する設定値情報を記憶部15に格納する(S102)。
次いで、設定値通知部18は、記憶部15に格納された設定値情報17を読み出して、推論装置20に送信する(S103)。
推論装置20の受信部28は、学習装置10から送信された設定値情報17を受信して、記憶部25に格納する(S104)。次いで、推論処理20の推論制御部24は、記憶部25から設定値情報27を取得し、設定値情報27の各処理部23用の設定値に対して、各処理部23に対応する調整値を乗算させて整数化させることにより調整乗算値を生成し、調整乗算値を各処理部23に設定する(S105)。
一方、クライアント装置30の変換部37cは、記憶部33から対象データ34を取得し、対象データを固定小数値形式に変換する(S106)。次いで、調整除去部37bは、固定小数値形式の対象データに対して、累積調整値に相当する倍数を除算する処理を行う(S107)。次いで、暗号部37aは、調整除去部37bにより得られた対象データに対して所定の暗号により暗号化し、送信部32に渡す(S108)。送信部32は、暗号化された対象データを推論装置20に送信する(S109)。
推論装置20の受信部28は、クライアント装置30から推論対象の対象データを受信し、記憶部25に格納する(S110)。
次いで、推論制御部24は、記憶部25から暗号化データである対象データ26を読み出して、ニューラルネットワークモデル22の最初の処理レイヤー(レイヤー1)の処理部23に入力する。この結果、ニューラルネットワークモデル22において、対象データ26を対象とした推論処理が実行されて、最終の処理レイヤー(レイヤーN)の処理部23から推論結果が推論結果送信部29に出力されることとなる(S111)。
次いで、推論装置20の推論結果送信部29は、ニューラルネットワークモデル22から渡された推論結果を対象データの推論処理を要求したクライアント装置30に対して送信する(S112)。
クライアント装置30の受信部36は、推論装置20から推論結果を受信して後処理部38に渡し、後処理部38の復号部38aが推論結果を復号化し、変換部38bに渡す(S113)。変換部38bは、復号された推論結果に対して、変換部37cの変換処理の逆変換、すなわち、固定小数値形式から浮動小数点形式のデータに戻す処理を実行することにより、最終的な推論結果(推論結果(最終))を生成し(S114)、生成した推論結果(最終)35を記憶部33に格納する(S115)。その後、結果表示部31が、記憶部33に格納された推論結果35に基づいて、推論結果を表示出力する(S116)。
以上説明したように、本実施形態に係る処理システム1によると、対象データが浮動小数点形式である場合であっても支障なく推論結果を得ることができる。また、平文データに対する整数以外の乗算処理が必要な場合であっても、推論装置20側では、暗号化データに対して、平文データに対する整数の乗算処理に対応する処理を実行すれば済むようになる。このため、平文に対する整数以外の乗算処理を含む処理について、推論装置20側では、暗号化データによる秘匿状態を維持したままで処理をすることができる。これにより、推論装置20から情報が漏えいしてしまうことを適切に防止することができる。
上記した学習装置10、推論装置20、クライアント装置30は、それぞれコンピュータ装置により構成することができる。
図7は、コンピュータ装置の一実施例を示すブロック図である。なお、本実施形態では、学習装置10、推論装置20、及びクライアント装置30は、別々のコンピュータ装置で構成されているが、これらコンピュータ装置は、同様な構成を有するものとすることができる。以下の説明では、便宜的に図7に示すコンピュータ装置を用いて、学習装置10、推論装置20、及びクライアント装置30のそれぞれを構成するコンピュータ装置について説明することとする。
コンピュータ装置100は、例えば、CPU(Central Processin Unit)101と、メインメモリ102と、GPU(Graphics Processing Unit)103と、リーダライタ104と、通信インターフェース(通信I/F)105と、補助記憶装置106と、入出力インターフェース(入出力I/F)107と、表示装置108と、入力装置109とを備える。CPU101、メインメモリ102、GPU103、リーダライタ104、通信I/F105、補助記憶装置106、入出力I/F107、及び表示装置108は、バス110を介して接続されている。学習装置10と、推論装置20と、クライアント装置30とは、それぞれコンピュータ装置100に記載の構成要素の一部または全てを適宜選択して構成される。
ここで、メインメモリ102又は補助記憶装置106の少なくとも一方が、学習装置10の記憶部15、推論装置20の記憶部25、及びクライアント装置30の記憶部33として機能する。
学習装置10を構成するコンピュータ装置100のCPU101は、学習装置10の全体を統括制御する。CPU101は、補助記憶装置106に格納されているプログラムをメインメモリ102に読み出して実行することにより各種処理を実行する。学習装置10において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、学習部11のニューラルネットワークモデル12を構成する。また、推論装置20を構成するコンピュータ装置100において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、推論部21のニューラルネットワークモデル22を構成する。また、クライアント装置30を構成するコンピュータ装置100において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、結果表示部31、前処理部37、後処理部38を構成する。なお、推論装置20を構成するコンピュータ装置100のCPU101は、クライアント装置30を構成するコンピュータ装置100のCPU101よりも処理性能が良いものとしてもよい。
メインメモリ102は、例えば、RAM、ROM等であり、CPU101に実行されるプログラム(処理プログラム等)や、各種情報を記憶する。補助記憶装置106は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の非一時的記憶デバイス(不揮発性記憶デバイス)であり、CPU101で実行されるプログラムや、各種情報を記憶する。学習装置10を構成するコンピュータ装置100では、メインメモリ102は、例えば、学習データ16や設定値情報17を記憶する。推論装置20を構成するコンピュータ装置100では、メインメモリ102は、例えば、対象データ26や設定値情報27を記憶する。クライアント装置30を構成するコンピュータ装置100では、メインメモリ102は、例えば、対象データ34や推論結果35を記憶する。
GPU103は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、GPU103は、CPU101の指示に従って所定の処理を実行する。学習装置10を構成するコンピュータ装置100において、GPU103は、少なくとも1つの処理部13を構成してもよい。また、推論装置20を構成するコンピュータ装置100において、GPU103は、少なくとも1つの処理部23を構成してもよい。
リーダライタ104は、記録媒体111を着脱可能であり、記録媒体111からのデータの読み出し、及び記録媒体111へのデータの書き込みを行う。記録媒体111としては、例えば、SDメモリーカード、FD(フロッピーディスク:登録商標)、CD、DVD、BD(登録商標)、フラッシュメモリ等の非一時的記録媒体(不揮発性記録媒体)がある。本実施形態においては、記録媒体111に、処理プログラムを格納しておき、リードライタ104により、これを読み出して、利用するようにしてもよい。また、学習装置10を構成するコンピュータ装置100において、記録媒体111に、学習用データを格納しておき、リードライタ104により、これを読み出して利用するようにしてもよい。また、クライアント装置30を構成するコンピュータ装置100において、記録媒体111に、対象データを格納しておき、リードライタ104により、これを読み出して記憶部33に格納するようにしてもよい。
通信I/F105は、ネットワーク40、50に接続されており、ネットワーク40、50に接続された他の装置との間でのデータの送受信を行う。学習装置10は、例えば、通信I/F105を介してネットワーク40に接続された推論装置20に設定値情報を送信する。学習装置10の設定値通知部18、推論装置20の受信部28及び推論結果送信部29、並びにクライアント装置30の送信部32及び受信部36は、それぞれを構成するコンピュータ装置100の通信I/F105及びCPU101によって構成される。
入出力I/F107は、例えば、マウス、キーボード等の入力装置109と接続されている。学習装置10を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、学習装置10の管理者による操作入力を受け付ける。また、推論装置20を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、推論装置20の管理者による操作入力を受け付ける。さらに、クライアント装置30を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、クライアント装置30のユーザによる操作入力を受け付ける。
表示装置108は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。
次に、変形例に係る処理システム2について説明する。
ここで、加法準同型暗号では暗号データの整数同士の加算しか行うことができないが、加算を繰り返すことで平文の整数の乗算はできる。このため、加法準同型暗号を用いて、暗号データの属する巡回群の位数を法とする逆元を、暗号データである割られる数に乗算することで、条件付きで除算ができる。この条件とは、暗号データである割られる数が、平文の割る数で割り切れることである。暗号化データの割られる数は暗号化されているため、暗号化データからは、割る数で割り切れるか否かは知る方法がない。したがって、加法準同型暗号上において常に除算を行うことはできない。しかしながら、このことは、裏を返せば、割られる数が割り切れることを保証できるなら、逆元を乗算することにより、加法準同型暗号空間上での除算が可能となる。本変形例に係る処理システムでは、割られる数が割り切れることを保証できることにより、加法準同型暗号空間上での除算を可能とすることができる。
ここで、平文の属する有限巡回群の値(元)についての逆元について説明する。なお、説明を容易化するために、位数を5とする巡回群G{0,1,2,3,4}を例にして逆元を説明する。
或る元に対する逆元とは、元に対して乗算することにより1となる値を示す。巡回群Gにおいては、2の逆元2−1は、2−1≡3(mod5)となる。これは、巡回群Gにおける2×3=2+2+2=1となるからである。ここで、平文データに対して逆元を乗算する演算についての加法準同型暗号の暗号文空間上の計算は、e(D×2−1)=e(D×3)=e(D)×e(D)×e(D)=e(D)^3となる。なお、Dは、平文データの任意の値を示し、e()は、カッコ内の平文を暗号化したデータを示している。ここで、Dが元(2)で割り切れることを条件とすると、e(D×2−1)=e(D)^3=e(D/2)となる。
或る元に対する逆元については、例えば、公知の拡張ユーグリッドの互除法を用いることで算出することができる。
図8は、変形例に係る処理システムの一例の機能構成図である。なお、図5に示す処理システムと同様な部分については、同一の符号を付し、説明を省略する場合がある。
変形例に係る処理システム2は、上記した図5に示す処理システム1において、推論装置20に代えて、推論装置60を備え、クライアント装置30に代えて、クライアント装置70を備えるようにしたものである。
クライアント装置70は、前処理部37に代えて、前処理部39を備える。前処理部39は、暗号化部37aと、変換部37cとを備える。
図8の例では、変換部37cは、浮動小数点形式の平文データであるデータAを216倍、すなわち、65536倍したデータ65536Aに変換する。
暗号化部37aは、平文データを、加法準同型暗号、例えば、Paillier暗号により暗号化する。図8の例では、暗号化部37aは、平文データ65536Aを、暗号化データe65536Aに暗号化する。
推論装置60は、処理部23−1に代えて、処理部61−1を備え、処理部23−2に代えて、処理部61−2を備える。処理部61−1は、平文データに対して設定された調整乗算値(同図では、2)を乗算する処理に対応する暗号文空間上の演算(対応演算)を、入力される暗号化データに対して行う。更に、処理部61−1は、演算により得られた暗号化データに対して、調整乗算値に対応する調整値(同図では、4)についての逆元(同図では、4−1)を乗算する演算に対応する暗号文空間上の演算を行う。ここで、逆元を乗算する処理に対応する暗号文空間上の演算は、暗号文データの逆元の累乗(逆元乗)であり、同一の暗号文データを複数回乗算しなくてはいけない。そこで、この演算においては、例えば、バイナリ法を利用して演算処理の処理量を低減して、処理時間を短縮するようにしてもよい。なお、本変形例では、クライアント装置70の変換部37cにおいて、所定の2の累乗が行われているので、平文データの値は、調整値により割り切れることが保証されている。
図8の例では、処理部61−1は、入力された暗号化データe65536Aを、調整乗算値だけ累乗(ここでは、2乗)する。更に、処理部61−1は、得られた暗号化データに対して、調整値4の逆元4−1を乗算する演算に対応する暗号文空間上の演算を実行する、すなわち、処理部61−1は、暗号化データに対して、逆元4−1の累乗を実行する。これにより、処理部61−1は、平文65536Aに対して、調整値と、逆元とを乗算した平文32768Aに対応する暗号化データe32768Aを出力する。したがって、処理部61−1の出力結果は、処理部13−1の出力結果である0.5Aに対して、前処理部37で乗算した2の累乗倍(216倍:65536倍)の値となる暗号化データとなっている。
また、処理部61−2は、平文データに対して設定された調整乗算値(同図では、1)を乗算する処理に対応する暗号文空間上の演算(対応演算)を、入力される暗号化データに対して行う。更に、処理部61−2は、演算により得られた暗号化データに対して、調整乗算値に対応する調整値(同図では、4)についての逆元(同図では、4−1)を乗算する演算に対応する暗号文空間上の演算を実行する。なお、本変形例では、クライアント装置70の変換部37cにおいて、所定の2の累乗が行われているので、平文データの値は、調整値により割り切れることが保証されている。
図8の例では、処理部61−2は、入力された暗号化データe32768Aを、調整乗算値だけ累乗(ここでは、1乗)する。更に、処理部61−2は、得られた暗号化データに対して、調整値4の逆元4−1を乗算に対応する暗号空間上の演算を実行する。すなわち、処理部61−2は、暗号化データに対して、逆元4−1の累乗を実行する。これにより、処理部61−2は、平文32768Aに対して、調整値と、逆元とを乗算した平文8192Aに対応する暗号化データe8192Aを出力する。したがって、処理部61−2の出力結果は、処理部13−1の出力結果である0.125Aに対して、前処理部37で乗算した2の累乗倍(216倍:65536倍)の値となる暗号化データとなっている。この結果、クライアント装置70には、前処理部37で乗算した2の累乗倍(216倍:65536倍)の値となる暗号化データが送信されることとなる。
この処理システム2によると、クライアント装置70では、推論装置60で使用する調整値による影響を除去する処理をする必要がないので、推論装置60における調整値に応じて処理を変える必要がなく、共通の構成とすることができる。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、前処理部37における処理を、変換部37cによる変換処理を行い、次に、調整除去部37bによる調整値の補正を行い、次に、暗号化部37aの暗号化を行うようにしていたが、本発明はこれに限られず、これらの処理の順番を入れ替えてもよい。但し、実行する順番に応じて、実際に行う具体的な処理の内容を適宜変更し、同一の対象データが生成されるようにする必要がある場合がある。例えば、暗号化部による暗号化の処理を、調整除去部による処理よりも前に実行するようにしてもよく、この場合においては、調整除去部は、暗号化部による処理結果に対応する平文に対して累積調整値の逆元を乗算する処理に対応する暗号文空間上の演算を行う必要がある。例えば、前処理部37において、図5に示す例と同様な対象データを生成する場合には、調整除去部は、16−1を乗算する処理に対応する暗号文空間上の演算を行うようにすればよい。また、例えば、対象データが整数である場合においては、例えば、暗号化部による暗号化を行い、その後に、変換部による変換処理を行うようにしてもよい。
また、上記実施形態において、例えば、前処理部37に入力されるデータが整数であって、累積調整値により割り切れることが保証される場合であれば、変換部37cを備えなくてもよい。
また、上記変形例においては、各レイヤー内において、調整値を除去するための逆元を乗算する演算に対応する暗号文空間上の演算を実行するようにしている。本発明はこれに限られず、調整値を除去するための逆元を乗算する演算に対応する暗号文空間上の処理を別のレイヤーで実行してもよい。なお、調整値を含む処理のレイヤーと、調整値を除去するための逆元を乗算する演算に対応する演算のレイヤー(除去レイヤ)とを別のレイヤーとする場合には、これらの対応関係がわかるようにしておいてもよい。例えば、除去レイヤーは、調整値を含む処理の直後のレイヤーとしてもよい。このようにすると、推論装置60における処理を修正や変更する際に、変更すべきレイヤーを容易に把握することができる。また、推論装置60において、推論装置60での処理における累積調整値の影響を全て除去できれば、累積調整値に対応する逆元を乗算する処理に対応する処理を1回実行するようにしてもよく、累積調整値を分解した複数の値の逆元をそれぞれ乗算する処理に対応する暗号文空間上の処理を別々に実行するようにしてもよい。また、複数の部分処理の調整値に対応する複数の逆元をまとめて乗算する処理に対応する暗号文空間上の処理を実行するようにしてもよい。また、逆元の乗算に対応する暗号文空間上の処理を、推論装置60での処理の最初又は最後に実行するようにしてもよい。
また、上記実施例において、変換部37cでは、2の累乗を乗算するように、変換部38bでは、2の累乗で除算するようにしていたが、本発明はこれに限られない。本発明は、例えば、変換部37cで、2よりも大きい数の累乗を乗算し、変換部28では、乗算に使用した2よりも大きい数の累乗で除算するようにしてもよい。要は、本発明は、変換部37cでは、2以上の数の累乗を乗算するようにし、変換部38bでは、乗算に使用した2以上の数の累乗で除算するようにすればよい。ここで、例えば、図8に示す構成のように、暗号化データに対して調整値の逆元を乗算する処理に対応する暗号文空間上の処理を実行する場合には、変換部37cで使用する累乗の底と、調整値の底とを一致させておく必要がある。なお、図5に示す構成のように、暗号化データに対して調整値の逆元を乗算する処理に対応する暗号文空間上の処理を実行する必要がない場合には、変換部37cで使用する累乗の底と、調整値の底とを一致させなくてもよい。
例えば、上記実施形態では、2つの処理レイヤー(処理部)を有するニューラルネットワークモデルを用いて処理を実行する学習装置及び推論装置を例に示していたが、本発明はこれに限られない。本発明は、1つの処理レイヤー(処理部)のみのニューラルネットワークモデルや、3つ以上の処理レイヤー(処理部)を有するニューラルネットワークモデルを用いて処理を実行する学習装置及び推論装置に対しても同様に適用することができる。
また、上記実施形態では、ニューラルネットワークモデルを用いた処理を実行する推論装置に適用される例を示していたが、本発明はこれに限られず、例えば、ニューラルネットワークモデルを用いずに処理を実行する暗号処理装置に対しても同様に適用することができる。
また、上記実施形態においては、準同型暗号として、加法準同型暗号を例にしていたが、本発明はこれに限られず、完全準同型暗号や、SomeWhat準同型暗号としてもよい。SomeWhat準同型暗号としては、LWE格子暗号を用いてもよい。
また、上記実施形態において、学習装置10、推論装置20(60)、又はクライアント装置30(70)のCPU101がプログラムを実行することにより構成していた機能部の少なくとも一部を、各装置内の他のプロセッサや、特定の処理を実行するハードウェア回路で構成するようにしてもよい。また、学習装置10のGPU103により構成していた処理部13を、CPU101により構成するようにしてもよく、別のハードウェア回路で構成してもよい。また、推論装置20(60)のGPU103により構成していた処理部23を、CPU101により構成するようにしてもよく、別のハードウェア回路で構成してもよい。
また、上記実施形態では、対象データを受け付ける入力部の一例として受信部28を例に挙げていたが、本発明はこれに限られず、例えば、入力部として、対象データが格納された記録媒体から対象データを読み取るリーダライタとしてもよく、また、対象データとなる画像データを取り込むカメラとしてもよい。
また、上記実施形態では、学習装置10と推論装置20(60)を別体のハードウェアで構成した例を示していたが、本発明はこれに限られず、同一のハードウェアにより構成してもよい。
また、上記実施形態では、暗号データ生成装置と、処理結果利用装置とを、一のクライアント装置30(70)により構成していたが、暗号データ生成装置と、処理結果利用装置とを別のクライアント装置で実現してもよい。
1…処理システム、10…学習装置、11…学習部、12…ニューラルネットワークモデル、13…処理部、14…学習制御部、15…記憶部、16…学習用データ、17…設定値情報、18…設定値通知部、20,60…推論装置、21…推論部、22…ニューラルネットワークモデル、23…処理部、24…推論制御部、25…記憶部、26…対象データ、27…設定値情報、28…受信部、29…推論結果送信部、30,70…クライアント装置、33…記憶部、37…前処理部、37a…暗号化部、37b…調整除去部、37c…変換部、38…後処理部、101…CPU

Claims (7)

  1. 暗号データ生成装置と、暗号処理装置と、処理結果利用装置とを備える暗号処理システムであって、
    前記暗号データ生成装置は、
    処理対象の平文データに対して所定の2以上の数の累乗を乗算させたデータに対応する準同型暗号の暗号化データを生成する前処理部を備え、
    前記暗号処理装置は、
    前記データ生成装置から前記暗号化データを取得する第1取得部と、
    暗号化データを暗号化状態のままで処理を実行する処理実行部と、を備え、
    前記処理結果利用装置は、
    前記暗号処理装置の前記処理実行部による暗号化された処理結果を取得する第2取得部と、
    前記暗号化された処理結果のデータを復号し、前記復号されたデータを前記所定の2以上の数の累乗で除算する後処理部と、
    を備え、
    前記暗号処理装置の前記処理実行部が実行する処理は、
    所定の設定値に対して所定の調整値を乗算することにより整数化された乗数を、前記暗号化データに対応するデータに乗算する演算に対応する暗号文空間上の演算を実行する部分処理を1以上含み、
    前記暗号データ生成装置の前処理部は、
    処理対象の平文データに対して、所定の2以上の数の累乗を乗算させ、前記処理実行部が実行する処理に含まれる全体の調整値で除算させたデータに対応する準同型暗号の暗号化データを生成する
    暗号処理システム。
  2. 前記前処理部は、
    前記処理対象の平文データに対して、所定の2以上の数の累乗を乗算する変換部と、
    前記変換部により得られたデータに対して、前記処理実行部が実行する処理に含まれる全体の調整値で除算する調整除去部と、
    前記調整除去部により得られたデータを前記準同型暗号の暗号化データに変換する暗号部と、を備え、
    前記調整値は、前記所定の2以上の数を底とする値である、
    請求項1に記載の暗号処理システム。
  3. 前記前処理部は、
    処理対象の平文データに対して、所定の2以上の数の累乗を乗算する変換部と、
    前記変換部により得られたデータを前記準同型暗号の暗号化データに変換する暗号部と、
    前記暗号部により得られた暗号化データに対して、前記暗号化データに対応する平文データに対して前記処理実行部が実行する処理に含まれる全体の調整値に対応する逆元を乗算する演算に対応する、前記暗号文空間上の演算を実行する調整除去部と、
    を備える請求項1に記載の暗号処理システム。
  4. 暗号データ生成装置と、暗号処理装置と、処理結果利用装置とを備える暗号処理システムであって、
    前記暗号データ生成装置は、
    処理対象の平文データに対して所定の2以上の数の累乗を乗算させたデータに対応する準同型暗号の暗号化データを生成する前処理部を備え、
    前記暗号処理装置は、
    前記データ生成装置から前記暗号化データを取得する第1取得部と、
    暗号化データを暗号化状態のままで処理を実行する処理実行部と、を備え、
    前記処理結果利用装置は、
    前記暗号処理装置の前記処理実行部による処理結果を取得する第2取得部と、
    前記暗号化された処理結果のデータを復号し、前記復号されたデータを前記所定の2以上の数の累乗で除算する後処理部と、
    を備え、
    前記暗号処理装置の前記処理実行部が実行する処理は、
    所定の設定値に対して所定の調整値を乗算することにより整数化された乗数を、前記暗号化データに対応するデータに乗算する演算に対応する暗号文空間上の演算を実行する部分処理を1以上含み、
    前記処理実行部は、
    前記暗号化データに対応するデータに対して、自身が実行する処理に含まれる全体の調整値に対応する逆元を乗算する演算に対応する、暗号文空間上の演算を実行する
    暗号処理システム。
  5. 前記処理実行部は、
    前記暗号化データに対応するデータに対して、複数の部分処理に含まれるそれぞれの調整値に対応する逆元をまとめて乗算する演算に対応する暗号文空間上の演算を実行する
    請求項4に記載の暗号処理システム。
  6. 前記処理実行部は、
    前記部分処理において、又は、前記部分処理に対応する処理において、前記部分処理に関わる調整値に対応する逆元を乗算する演算に対応する前記暗号文空間上の演算を実行する
    請求項4に記載の暗号処理システム。
  7. 暗号データ生成装置と、暗号処理装置と、処理結果利用装置とを備える暗号処理システムによる暗号処理方法であって、
    前記暗号データ生成装置は、
    処理対象の平文データに対して所定の2以上の数の累乗を乗算させたデータに対応する準同型暗号の暗号化データを生成し、
    前記暗号処理装置は、
    前記データ生成装置から前記暗号化データを取得し、
    暗号化データを暗号化状態のままで処理を実行し、
    前記処理結果利用装置は、
    前記暗号処理装置による暗号化された処理結果を取得し、
    前記暗号化された処理結果のデータを復号し、
    前記復号されたデータを前記所定の2以上の数の累乗で除算し、
    前記暗号データ生成装置は、
    前記処理対象の平文データに対して、所定の2以上の数の累乗を乗算し、
    乗算により得られたデータに対して、前記暗号処理装置が実行する処理に含まれる全体の調整値で除算し、
    除算により得られたデータを前記準同型暗号の暗号化データに変換し、
    前記調整値は、前記所定の2以上の数を底とする値である、
    暗号処理方法。
JP2019095289A 2019-05-21 2019-05-21 暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法 Active JP6962578B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019095289A JP6962578B2 (ja) 2019-05-21 2019-05-21 暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法
US16/832,136 US11323241B2 (en) 2019-05-21 2020-03-27 Encryption processing system, encryption processing device and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019095289A JP6962578B2 (ja) 2019-05-21 2019-05-21 暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法

Publications (2)

Publication Number Publication Date
JP2020190614A JP2020190614A (ja) 2020-11-26
JP6962578B2 true JP6962578B2 (ja) 2021-11-05

Family

ID=73454522

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019095289A Active JP6962578B2 (ja) 2019-05-21 2019-05-21 暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法

Country Status (2)

Country Link
US (1) US11323241B2 (ja)
JP (1) JP6962578B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269595B2 (en) * 2019-11-01 2022-03-08 EMC IP Holding Company LLC Encoding and evaluating multisets using prime numbers
US11816212B2 (en) * 2020-04-15 2023-11-14 Inferati Inc. Large scale zero trust malware detection
KR102475273B1 (ko) * 2020-06-15 2022-12-08 주식회사 크립토랩 동형 암호 시스템에 대한 시뮬레이션 장치 및 방법
CN112615712B (zh) * 2020-12-16 2023-03-24 百度在线网络技术(北京)有限公司 数据的处理方法、相关装置及计算机程序产品
US20230208639A1 (en) * 2021-12-27 2023-06-29 Industrial Technology Research Institute Neural network processing method and server and electrical device therefor
WO2023184249A1 (en) * 2022-03-30 2023-10-05 Microsoft Technology Licensing, Llc Inferencing on homomorphically encrypted vectors at transformer

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181017B1 (en) * 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
JP2010049215A (ja) * 2008-08-25 2010-03-04 Toshiba Corp パラメータ生成装置、暗号処理システム、方法およびプログラム
JP2012049679A (ja) 2010-08-25 2012-03-08 Sony Corp 端末装置、サーバ、データ処理システム、データ処理方法、及びプログラム
US9264066B2 (en) * 2013-07-30 2016-02-16 Apple Inc. Type conversion using floating-point unit
US9628266B2 (en) * 2014-02-26 2017-04-18 Raytheon Bbn Technologies Corp. System and method for encoding encrypted data for further processing
CN106575379B (zh) 2014-09-09 2019-07-23 英特尔公司 用于神经网络的改进的定点整型实现方式
US10375042B2 (en) * 2015-03-15 2019-08-06 David Chaum Precomputed and transactional mixing
JP6814480B2 (ja) * 2017-11-08 2021-01-20 株式会社アクセル 処理装置、推論装置、学習装置、処理システム、処理方法、及び処理プログラム
JP6730740B2 (ja) 2017-12-25 2020-07-29 株式会社アクセル 処理装置、処理方法、処理プログラム、及び暗号処理システム
US11880833B2 (en) * 2018-08-29 2024-01-23 Visa International Service Association System, method, and computer program product for maintaining user privacy in group transactions

Also Published As

Publication number Publication date
JP2020190614A (ja) 2020-11-26
US20200374101A1 (en) 2020-11-26
US11323241B2 (en) 2022-05-03

Similar Documents

Publication Publication Date Title
JP6962578B2 (ja) 暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法
Wang et al. Cryptanalysis of a symmetric fully homomorphic encryption scheme
JP6730740B2 (ja) 処理装置、処理方法、処理プログラム、及び暗号処理システム
US11374735B2 (en) Processing apparatus, processing method, storage medium, and encryption processing system
JP6413743B2 (ja) 暗号処理装置、暗号処理方法、及び暗号処理プログラム
JP6832013B2 (ja) 処理装置、推論装置、学習装置、処理システム、処理方法、及び処理プログラム
KR101449239B1 (ko) 환 동형 사상을 이용한 동형 암호화 방법과 복호화 방법 및 이를 이용한 장치
JP7096610B2 (ja) 処理装置、推論装置、学習装置、処理システム、処理方法、及び処理プログラム
US6252960B1 (en) Compression and decompression of elliptic curve data points
JP2010049213A (ja) 暗号化装置、復号装置、暗号通信システム、方法及びプログラム
JP7017800B2 (ja) 演算装置、演算システム、及び演算方法
Gmira et al. Securing the architecture of the JPEG compression by an dynamic encryption
KR101440680B1 (ko) 중국인 나머지 정리에 기반한 준동형 암복호화 방법 및 이를 이용한 장치
JP5323196B2 (ja) 演算装置、方法およびプログラム
CN107040370B (zh) 一种用于产生实施模幂运算的代码的装置
US11288985B2 (en) Encryption device, decryption device, encryption method, decryption method, encryption program product, and decryption program product
US8533243B2 (en) Representation converting apparatus, arithmetic apparatus, representation converting method, and computer program product
JP2015135380A (ja) シェア変換システム、シェア変換方法、プログラム
JP2010049216A (ja) 代数的トーラスを用いたデータ圧縮処理を行う装置およびプログラム
JP5103408B2 (ja) 秘密計算システム、秘密計算方法、秘密計算プログラム
WO2022009384A1 (ja) 最終べき計算装置、ペアリング演算装置、暗号処理装置、最終べき計算方法及び最終べき計算プログラム
JP2024009581A (ja) 情報処理システムの制御方法、情報処理システム、及びプログラム
JP2010049214A (ja) 暗号化装置、復号装置、暗号文検証装置、暗号化方法、復号方法及びプログラム
JP4141773B2 (ja) 復号処理装置
JP2010002525A (ja) 文書・平文空間写像装置、平文空間・文書写像装置、方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210624

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210907

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20210907

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20210917

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20210921

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: 20211005

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211007

R150 Certificate of patent or registration of utility model

Ref document number: 6962578

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250