JP7017800B2 - 演算装置、演算システム、及び演算方法 - Google Patents

演算装置、演算システム、及び演算方法 Download PDF

Info

Publication number
JP7017800B2
JP7017800B2 JP2020026497A JP2020026497A JP7017800B2 JP 7017800 B2 JP7017800 B2 JP 7017800B2 JP 2020026497 A JP2020026497 A JP 2020026497A JP 2020026497 A JP2020026497 A JP 2020026497A JP 7017800 B2 JP7017800 B2 JP 7017800B2
Authority
JP
Japan
Prior art keywords
key
unit
arithmetic
client device
data
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
JP2020026497A
Other languages
English (en)
Other versions
JP2020177223A (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 US16/832,628 priority Critical patent/US11611430B2/en
Publication of JP2020177223A publication Critical patent/JP2020177223A/ja
Application granted granted Critical
Publication of JP7017800B2 publication Critical patent/JP7017800B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Description

本発明は、データの漏洩を防止でき、広範な処理を実行可能にする技術に関する。
従来、負荷が大きい処理をサーバで実行させて、その処理結果をクライアント装置で利用するサーバ・クライアントモデルが知られている。
このサーバ・クライアントモデルを用いると、処理対象のデータをクライアント装置からサーバに送信することになるため、データに含まれる個人情報等の機密性の高いデータが漏洩してしまうことがある。
このような問題に対処するために、データを暗号化したまま演算を行う秘匿演算方法を使用することが考えられる。秘匿演算方法としては、大きく分けると、準同型暗号を用いる方法と、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には、準同型暗号を用いてデータを暗号化したまま推論を行う技術が開示されている。
一方、MPCとは、複数のコンピュータを用いて通信を行いながら、暗号化されたデータを演算するシステムであり、準同型暗号と比べて多種類の演算を行うことのできるシステムが提案されている。
特許第6391900号明細書
上記した加法準同型暗号及び乗法準同型暗号を用いた場合には、暗号化したまま行える演算に制約があるという問題点がある。また、完全準同型暗号を用いた場合には、計算量、鍵長が莫大なものであるという問題がある。また、Somewhat準同型暗号を用いた場合には、演算回数に上限があるという問題がある。
一方、MPCを用いた場合には、一般的にコンピュータ間の通信速度によって処理性能が制約される問題がある。また、MPCにおいては、複数のコンピュータが結託して悪意を持つことが無いという前提条件を満たす必要があり、現実的な問題として、この前提条件を満たすことが難しいという問題がある。例えば、複数のコンピュータが同時に悪意の有る演算を行えば、暗号を解読することができてしまうので、データが漏洩してしまうことがある。
本発明は、上記事情に鑑みなされたものであり、その目的は、データの漏洩を防止でき、且つ広範な処理を実行することのできる技術を提供することにある。
上記目的を達成するため、第1の観点に係る演算装置は、クライアント装置とネットワークを介して接続される情報処理装置にバスを介して接続される。クライアント装置は、処理対象のデータを第1暗号鍵で暗号化させて、情報処理装置に送信し、情報処理装置から送信された暗号化された処理結果のデータを、第1暗号鍵に対応する第1復号鍵で復号する。そして、演算装置は、鍵共有部と、取得部と、復号部と、演算実行部と、暗号化部と、出力部とを備える。鍵共有部は、クライアント装置との間で第1暗号鍵及び第1復号鍵を外部に秘匿した状態で共有する。取得部は、クライアント装置から送信されたデータに基づく第1暗号鍵で暗号化されているデータを情報処理装置から取得する。復号部は、取得部により取得された第1暗号鍵で暗号化されているデータを第1復号鍵で復号する。演算実行部は、復号部で復号されたデータに対して所定の演算を実行する。暗号化部は、演算実行部による演算結果のデータを第1暗号鍵で暗号化する。出力部は、暗号化された演算結果のデータを情報処理装置に出力する。
本発明によれば、データの漏洩を防止でき、且つ広範な処理を実行することができる。
図1は、一実施形態に係る計算機システムの全体構成図である。 図2は、一実施形態に係るクライアント装置の機能構成図である。 図3は、一実施形態に係るサーバの機能構成図である。 図4は、一実施形態に係る演算装置の機能構成図である 図5は、一実施形態に係るニューラルネットワークモデルの構成図である。 図6は、一実施形態に係る計算機システムの処理動作を示すシーケンス図で ある。 図7は、一実施形態に係るコンピュータ装置の構成図である。 図8は、第1変形例に係る演算装置の機能構成図である。 図9は、第2変形例に係る計算機システムの全体構成図である。 図10は、第2変形例に係るクライアント装置が備える鍵共有部の機能構成図である。 図11は、第2変形例に係る演算装置が備える鍵共有部の機能構成図である。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
まず、一実施形態に係る計算機システムについて説明する。
図1は、一実施形態に係る計算機システムの全体構成図である。
計算機システム1は、クライアント装置10と、演算システム2とを備える。演算システム2は、サーバ20と、演算装置30とを備える。クライアント装置10と、サーバ20とは、ネットワーク40を介して接続されている。ネットワーク40は、例えば、LAN(Local Area Netowork)や、WAN(Wide Area Network)等である。サーバ20と、演算装置30とは、バス50を介して接続されている。サーバ20は、情報処理装置の一例である。
クライアント装置10は、処理対象のデータを暗号化して演算システム2に送信し、演算システム2から暗号化された処理結果(例えば、推論結果)を受信し、暗号化された処理結果を復号し、処理結果を利用する。演算システム2は、暗号化されたデータを受信し、暗号化されたデータに対して所定の処理(例えば、推論処理)を実行し、暗号化された処理結果をクライアント装置10に送信する。
図2は、一実施形態に係るクライアント装置の機能構成図である。
クライアント装置10は、表示部11と、暗号化部12と、送信部13と、記憶部14と、鍵共有部15と、復号部16と、受信部17とを含む。
記憶部14は、処理を実行させる対象データ141と、対象データ141に対して推論処理を実行した結果である処理結果142と、データを復号及び暗号化するための秘密鍵143(第1復号鍵)及び公開鍵144(第1暗号鍵)とを記憶する。本実施形態では、秘密鍵143及び公開鍵144は、例えば、準同型暗号用の鍵である。準同型暗号としては、例えば、Paillier暗号や、lifted-ElGamal暗号等の加法準同型暗号であってもよく、乗法準同型暗号であってもよい。なお、処理結果142は、サーバ20から処理結果が送信された場合に格納されるものであり、サーバ20による推論処理が行われていない対象データ141に対する処理結果については、存在しない。また、記憶部14は、秘密鍵143と公開鍵144とに代えて、通信用共通鍵を記憶してもよい。この場合には、以下の説明において、秘密鍵143と公開鍵144とは、通信用共通鍵と読み替える。すなわち、通信用共通鍵は、秘密鍵143と公開鍵144として機能する。
暗号化部12は、記憶部14に格納されている暗号化されていない対象データ141を、暗号化して、送信部13に渡す。本実施形態では、暗号化部12は、記憶部14に格納されている公開鍵144を用いて対象データ141を暗号化する。送信部13は、暗号化された推論処理の対象データ141をサーバ20に送信する。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、暗号化部12は、記憶部14に格納されている通信用共通鍵を用いて対象データ141を暗号化する。
受信部17は、サーバ20から暗号化された処理結果142を受信して復号部16に渡す。復号部16は、受信部17から渡された暗号化された処理結果142を復号し、復号した処理結果142を記憶部14に格納する。本実施形態では、復号部16は、記憶部14に格納されている秘密鍵143を用いて暗号化された処理結果142を復号する。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、復号部16は、記憶部14に格納されている通信用共通鍵を用いて暗号化された処理結果142を復号する。
表示部11は、記憶部14に記憶された処理結果142に基づいて各種情報を表示する。表示部11は、処理結果142をそのまま表示してもよく、処理結果142に基づいて所定の処理を実行し、その実行結果を表示するようにしてもよい。
鍵共有部15は、演算装置30との間で、外部(クライアント装置10及び演算装置30以外)に秘匿した状態で秘密鍵143及び公開鍵144を共有する処理(鍵共有処理)を実行する。すなわち、鍵共有部15は、サーバ20にも知られることなく、秘密鍵143及び公開鍵144をクライアント装置10と演算装置30との間で共有する機能を有する。
ここで、加法準同型暗号について、加法準同型暗号である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)
ここで、r(0≦r≦N-1)、及びr(0≦r≦N-1)は、乱数である。
Paillier暗号の暗号化データは、平文データ同士の和演算に対応する演算を、暗号化データの乗算として実行可能である。暗号化データの乗算、すなわち、e×eは、式(3)に示すようになる。
×e=g×g×r ×r mod N
=g(A+B)×r ×r mod N・・・(A)
ここで、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=1であるため、g(A+B)=g(A+B mod N)が成り立つ。すると、式(A)は、g(A+B)=g(A+B mod N)の関係を用いて、下記式のように変形できる。
式(A)=g(A+B mod N)×r ×r mod N
=g(A+B mod N)×(r×r mod N・・・(B)
=r×r mod Nと置いたとき、rもrも乱数なので、rも乱数となる。したがって、式(B)は下記式のように変形できる。
式(B)=g(A+B mod N)×r mod N
=e(A+B mod N)・・・・(3)
式(3)に示す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乗)を行えばよいこととなり、式(4)に示すようになる。
×e×・・・=e+・・・=eAC ・・・(4)
式(4)に示すeACは、復号すると、ACとなり、平文データAと整数Cとの乗算の結果となる。したがって、Paillier暗号の同じ暗号化データを累乗する演算が、平文データと、平文データの整数との乗算に対応する演算であることがわかる。
図3は、一実施形態に係るサーバの機能構成図である。
サーバ20は、中継部21と、推論処理制御部22と、受信部23と、記憶部24と、送信部25とを備える。推論処理制御部22は、演算制御部の一例である。
中継部21は、クライアント装置10の鍵共有部15と、演算装置30の後述する鍵共有部33、40との間の鍵交換処理における通信を中継する。
推論処理制御部22は、記憶部24に格納されているモデル情報242に従って、暗号化された対象データ241を暗号化した状態で用いてニューラルネットワークモデルによる推論処理を実行する。そして、推論処理制御部22は、暗号化された状態の推論処理の処理結果142を送信部25に渡す。例えば、推論処理制御部22は、ニューラルネットワークモデルの中の自身が担当する処理レイヤーについては、この処理レイヤーの処理を実行する。そして、推論処理制御部22は、ニューラルネットワークモデル中の演算装置30が担当する処理レイヤーについては、この処理レイヤーを演算処理30に実行させるように制御する。ここで、ニューラルネットワークモデルに含まれる自身が担当する処理レイヤーは、暗号化されたデータのままで実行可能な処理レイヤーである。なお、ニューラルネットワークモデルの構成及び処理レイヤーの例については後述する。
記憶部24は、暗号化された対象データ241と、推論処理制御部22により実行される推論処理で用いられるニューラルネットワークモデルの各処理レイヤーの構成及び各処理レイヤーで使用する設定値の情報を含むモデル情報242と、を記憶する。対象データ241は、推論処理を実行させる対象のデータである。モデル情報242に含まれる設定値としては、例えば、畳込処理レイヤーで使用されるフィルタの係数や、アフィンレイヤーで用いられる重み等がある。なお、各処理レイヤーで使用する設定値等は、ニューラルネットワークモデルを用いた学習により得られた値を含む。
受信部23は、クライアント装置10から送信される暗号化された対象データ141を受信して記憶部24に格納する。送信部25は、推論処理制御部22によって得られた暗号化されている処理結果142をクライアント装置10に送信する。対象データ241は、暗号化された対象データ141、演算装置30から取得する暗号化された演算結果、及び情報処理装置20において暗号化されたまま処理された暗号化されたデータの少なくとも一つを含むデータである。
図4は、一実施形態に係る演算装置の機能構成図である
演算装置30は、例えば、専用LSI(Large-Scale Integrated circuit)や、ASIC(Application Specific Integrated Circuit)や、FPGA(Field-Programmable Gate Array)により構成されている。本実施形態では、演算装置30は、サーバ20の内部バスに接続されている。演算装置30は、復号部31と、演算実行部32と、鍵共有部33と、暗号化部34と、取得部35と、出力部36とを備える。演算装置30は、例えば、外部の装置(サーバ20等)に対しては暗号化されたデータのみしか出力しないように構成されている。演算装置30は、例えば、全体又は大部分が、処理を実行するハードウェア回路で構成されており、不正にデータを出力するなどの不正動作を起こさせるようにすることが困難(不可能又はほぼ不可能)となっている。したがって、サーバ20によって、演算装置30から処理途中の暗号化されていない状態のデータを取り出すことは、不可能又はほぼ不可能である。なお、演算装置30は、外部の装置に対して少なくとも一部が暗号化されたデータを出力してもよい。
鍵共有部33は、クライアント装置10との間の鍵共有処理で使用する共有用秘密鍵331(第2復号鍵)及び共有用公開鍵332(第2暗号鍵)を記憶する。本実施形態では、共有用秘密鍵331は、演算装置30の外部から読み取り不能に記憶されている。ここで、外部から読み取り不能な状態としては、ハードウェアの構成に起因して読み取り不能であってもよい。共有用秘密鍵331は、例えば、ハードワイヤード(結線論理)で記憶されていてもよい。鍵共有部33は、クライアント装置10との間で、外部(クライアント装置10及び演算装置30以外)に秘匿した状態で秘密鍵143及び公開鍵144を共有する処理(鍵共有処理)を実行する。具体的には、例えば、鍵共有部33は、共有用公開鍵332をクライアント装置10に送信し、クライアント装置10で共有用公開鍵332により暗号化された秘密鍵143及び公開鍵144を取得する。そして、鍵共有部33は、共有用秘密鍵331により暗号化された秘密鍵143及び公開鍵144を復号して、秘密鍵143及び公開鍵144を取得する。この鍵共有処理によると、クライアント装置10と演算装置30との間の経路では、秘密鍵143及び公開鍵144は暗号化されており、秘匿状態を確保できる。また、共有用秘密鍵331は、演算装置30の外部から読み取り不能であるので、サーバ20から読み出されて取得されることがないので、秘匿状態を厳重に維持することができる。
また、鍵共有部33は、取得した秘密鍵143を復号部31に設定し、取得した公開鍵144を暗号化部34に設定する。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、鍵共有部33は、取得した通信用共通鍵を復号部31及び暗号化部34に設定する。
取得部35は、サーバ20から渡される暗号化されているデータを取得する。そして、復号部31は、サーバ20から渡される暗号化されているデータを、設定されている秘密鍵143により復号する。なお、サーバ20から渡される暗号化されているデータは、クライアント装置10から送信された暗号化された対象データに基づく、暗号化されているデータである。すなわち、サーバ20から渡される暗号化されているデータは、クライアント装置10から送信された暗号化された対象データそのままの場合や、暗号化された対象データに対して何らかの処理が行われた後の暗号化されているデータである。復号部31は、復号したデータを演算実行部32に渡す。なお、取得部35は、暗号化されているデータとともに、処理で使用する設定値をサーバ20から受け取るようにし、受け取った設定値を演算実行部32に設定又は通知するようにしてもよい。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、復号部31は、サーバ20から渡される暗号化されているデータを、設定されている通信用共通鍵により復号する。
演算実行部32は、復号部31から渡された復号されたデータに対して所定の処理を実行する。ここでの所定の処理は、ニューラルネットワークモデルにおける暗号化されたデータのままでは実行不可能な処理レイヤーを含む処理である。演算実行部32は、演算結果を暗号化部34に渡す。
暗号化部34は、演算実行部32から渡された演算結果を、設定された公開鍵144で暗号化して、暗号化したデータをサーバ20の推論処理制御部22に渡す。なお、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、暗号化部34は、演算実行部32から渡された演算結果を、設定された通信用共通鍵で暗号化して、暗号化したデータをサーバ20の推論処理制御部22に渡す。
次に、ニューラルネットワークモデルの一例について説明する。
図5は、一実施形態に係るニューラルネットワークモデルの構成図である。
ニューラルネットワークモデル3は、推論処理制御部22による推論処理の構成を示すニューラルネットワークモデルであり、例えば、処理対象とする画像データが何を表しているか、例えば、人、犬、猫等の何を表しているかを推論する推論処理を実行して処理結果を出力するための畳込みニューラルネットワーク(CNN)のモデルである。
ニューラルネットワークモデル3は、複数の処理レイヤー4により構成されている。具体的には、ニューラルネットワークモデル3は、畳込レイヤー4-1、活性化レイヤー4-2、プーリングレイヤー4-3、活性化レイヤー4-n-2、アフィンレイヤー4-n-1、及びSoftMaxレイヤー4-n等を含む。畳込レイヤー4-1は、画像データについて畳込処理を実行する。活性化レイヤー4-2は、前レイヤーからの入力データに対して活性化処理を実行する。プーリングレイヤー4-3は、前レイヤーから入力されたデータについてダウンサンプリング処理を実行する。活性化レイヤー4-n-2は、前レイヤーからの入力データに対して活性化処理を実行する。アフィンレイヤー4-n-1は、前レイヤーからの入力データに対してアフィン変換処理を実行する。SoftMaxレイヤー4-nは、前レイヤーからの入力データに対してソフトマックス(SoftMax)関数による処理を実行する。活性化処理を行う活性化レイヤーとしては、例えば、ReLU関数(Rectified Linear Unit Rectifier:正規化線形関数)による活性化処理を行う活性化レイヤーがある。
本実施形態では、畳込みレイヤー4-1の演算処理については、加法準同型暗号による暗号化データをそのまま用いて処理を行うことができるものとなっている。また、その他のレイヤー4については、暗号化されたデータをそのまま用いて処理することができないものとなっている。
このようなニューラルネットワークモデル3について、推論処理制御部22は、暗号化されたデータのままで演算できる処理レイヤーは、予め決められた設定に従って、サーバ20と演算装置30とのいずれかに実行させる。また、推論処理制御部22は、暗号化されたデータのままで演算できない処理レイヤーは、演算装置30に実行させる。したがって、暗号化されたデータのままで演算できる処理レイヤーは、設定によって、全てをサーバ20側で実行するようにすることも、一部をサーバ20側で実行するようにすることも、すべてを演算装置30側で実行させるようにすることもできる。なお、演算装置30で処理レイヤーを実行させるためには、例えば、演算装置30の演算実行部32に、演算装置30側で実行させる全ての処理レイヤー4を実行するための回路を構成しておけばよい。この場合、処理レイヤー4で使用する変数等の設定値については、予め固定的に設定してもよく、処理に際して、推論処理制御部22から演算装置30に渡して設定するようにしてもよい。
次に、計算機システム1における処理動作について説明する。
図6は、一実施形態に係る計算機システムの処理動作を示すシーケンス図である。
クライアント装置10の鍵共有部15は、ユーザから所定の対象データに対する処理の指示を受け取ると、共有用公開鍵の要求を、サーバ20を介して演算装置30に送信する(ステップS101,S102)。これに対して、演算装置30の鍵共有部33は、共有用公開鍵332を、サーバ20を介してクライアント装置10に送信する(ステップS103,S104)。
クライアント装置10の鍵共有部15は、共有用公開鍵332を受信し、共有用公開鍵332を使用して、秘密鍵143及び公開鍵144を暗号化する(ステップS105)。次いで、クライアント装置10の鍵共有部15は、暗号化した秘密鍵143及び公開鍵144を、サーバ20を介して演算装置30に送信する(ステップS106,S107)。
演算装置30の鍵共有部33は、暗号化された秘密鍵143及び公開鍵144を受信し、共有用秘密鍵331を用いて暗号化された秘密鍵143及び公開鍵144を復号して、秘密鍵143及び公開鍵144を得る。そして、鍵共有部33は、秘密鍵143を復号部31に設定するとともに、公開鍵144を暗号化部34に設定する(ステップS108)。このようなステップS101~S108により、クライアント装置10と演算装置30との間で外部に秘匿した状態で秘密鍵143及び公開鍵144の共有が完了する。
次いで、クライアント装置10の暗号化部12は、公開鍵144を用いて、対象データ141を暗号化し、送信部13に渡す(ステップS109)。次いで、送信部13は、暗号化された対象データをサーバ20に送信する(ステップS110)。
サーバ20では、暗号化された対象データを受信部23が受信して記憶部24に格納する。そして、推論処理制御部22が対象データに対する推論処理を開始する(ステップS111)。
この推論処理においては、サーバ20が実行するレイヤーの処理については、推論処理制御部22は、暗号化されたデータをそのまま使用して演算を実行する(ステップS112)。
一方、演算装置30で実行する1以上の処理レイヤーの処理については、推論処理制御部22は、暗号化されている処理用のデータ、すなわち、暗号化されている対象データ又は、直前のレイヤーによる処理結果のデータを演算装置30に送信する(ステップS113)。演算装置30では、暗号化されている処理用のデータを受信すると、復号部31が秘密鍵143を用いて処理用データを復号して演算実行部32に渡す。演算実行部32は、復号された処理用データに対して所定の演算を実行し、演算処理後のデータを暗号化部34に渡す(ステップS115)。暗号化部34は、演算処理後のデータを、公開鍵144を用いて暗号化し(ステップS116)、暗号化された演算処理後のデータをサーバ20に送信する(ステップS117)。
このようにして推論処理を実行する全てのレイヤーの処理が実行されることにより推論処理が終了し、暗号化されている処理結果が得られることとなる。
推論処理が終了すると、サーバ20の推論処理制御部22は、暗号化されている処理結果を送信部25に渡す。そして、送信部25は、暗号化されている処理結果をクライアント装置10に送信する(ステップS118)。
クライアント装置10では、暗号化されている処理結果を受信部17が受信して、復号部16に渡す。また、復号部16は、受け取った暗号化されている処理結果を秘密鍵143で復号して記憶部14に格納する。そして、表示部11は、処理結果に基づいて情報を表示する(ステップS119)。
以上説明したように、計算機システム1の処理において、サーバ20は、暗号化したままでデータを処理するので、データが漏洩することを防止できる。また、演算装置30内では、データが復号されて処理されるが、サーバ20から演算装置30内の暗号化されていないデータを取り出すことは不可能であるので、データが漏洩することを防止できる。
上記したクライアント装置10及びサーバ20は、それぞれコンピュータ装置により構成することができる。
図7は、一実施形態に係るコンピュータ装置の構成図である。なお、本実施形態では、クライアント装置10及びサーバ20は、別々のコンピュータ装置で構成されているが、これらコンピュータ装置は、一部の構成を除き同様な構成を有するものとすることができる。したがって、以下の説明では、便宜的に図7に示すコンピュータ装置を用いて、クライアント装置10及びサーバ20を構成するコンピュータ装置について説明することとする。
コンピュータ装置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とは、それぞれコンピュータ装置100に記載の構成要素の一部または全てを適宜選択して構成される。本実施形態では、サーバ20を構成するコンピュータ装置100においては、バス110を介して演算装置30が接続されている。なお、演算装置30は、コンピュータ装置100の構成要素の一部またはすべてを適宜選択して構成してもよい。また、CPU101は、例えば、ASIC及びFPGAなどの他の種類のプロセッサでもよい。
ここで、メインメモリ102又は補助記憶装置106の少なくとも一方が、クライアント装置10の記憶部14、サーバ20の記憶部24として機能する。なお、メインメモリ102又は補助記憶装置106の少なくとも一方が、後述する演算装置30の記憶部として機能してもよい。また、メインメモリ102又は補助記憶装置106の少なくとも一方が、後述する演算装置60の記憶部60Bとして機能してもよい。さらに、メインメモリ102又は補助記憶装置106の少なくとも一方が、後述する演算装置70の記憶部70Bとして機能してもよい。
クライアント装置10を構成するコンピュータ装置100において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、表示部11、暗号化部12、鍵共有部15、復号部16、及び後述する鍵共有部60の制御部60Aとして機能してもよい。サーバ20を構成するコンピュータ装置100において、CPU101は、補助記憶装置106に格納された処理プログラムを実行することにより、例えば、推論処理制御部22として機能してもよい。なお、サーバ20を構成するコンピュータ装置100のCPU101は、クライアント装置10を構成するコンピュータ装置100のCPU101よりも処理性能が良いものとしてもよい。なお、CPU101は、演算装置30の復号部31、演算実行部32、鍵共有部33、暗号化部34、及び後述する鍵共有部70の制御部70Aとして機能してもよい。
メインメモリ102は、例えば、RAM、ROM等であり、CPU101に実行されるプログラム(処理プログラム等)や、各種情報を記憶する。補助記憶装置106は、例えば、HDD(Hard DISK Drive)、SSD(Solid State Drive)等の非一時的記憶デバイス(不揮発性記憶デバイス)であり、CPU101で実行されるプログラムや、各種情報を記憶する。クライアント装置10を構成するコンピュータ装置100では、メインメモリ102は、例えば、対象データ141、処理結果142、秘密鍵143、及び公開鍵144を記憶する。サーバ20を構成するコンピュータ装置100では、メインメモリ102は、例えば、対象データ241やモデル情報242を記憶する。
GPU103は、例えば、画像処理等の特定の処理の実行に適しているプロセッサであり、例えば、並列的に行われる処理の実行に適している。本実施形態では、GPU103は、CPU101の指示に従って所定の処理を実行する。
リーダライタ104は、記録媒体111を着脱可能であり、記録媒体111からのデータの読み出し、及び記録媒体111へのデータの書き込みを行う。記録媒体111としては、例えば、SDメモリーカード、FD(フロッピーディスク:登録商標)、CD、DVD、BD(登録商標)、フラッシュメモリ等の非一時的記録媒体(不揮発性記録媒体)がある。本実施形態においては、記録媒体111に、処理プログラムを格納しておき、リーダライタ104により、これを読み出して、利用するようにしてもよい。また、クライアント装置10を構成するコンピュータ装置100において、記録媒体111に、処理対象データを格納しておき、リードライタ104により、これを読み出して記憶部14に格納するようにしてもよい。
通信I/F105は、ネットワーク40に接続されており、ネットワーク40に接続された他の装置との間でのデータの送受信を行う。クライアント装置10の送信部13、受信部17、及び鍵共有部15、サーバ20の受信部23、送信部25、及び中継部21は、それぞれを構成するコンピュータ装置100の通信I/F105及びCPU101によって構成される。通信I/F105は、演算装置30において、取得部35と、出力部36として機能してもよい。
入出力I/F107は、例えば、マウス、キーボード等の入力装置109と接続されている。クライアント装置10を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、クライアント装置10のユーザによる操作入力を受け付ける。また、サーバ20を構成するコンピュータ装置100において、入出力I/F107は、入力装置109を用いた、サーバ20の管理者による操作入力を受け付ける。入出力I/F107は、演算装置30において、取得部35と、出力部36として機能してもよい。
表示装置108は、例えば、液晶ディスプレイ等のディスプレイ装置であり、各種情報を表示出力する。表示装置18は、例えば、クライアント装置10において、表示部11として機能する。
次に、変形例に係る計算機システムについて説明する。
図8を参照して、第1変形例について説明する。
図8は、第1変形例に係る演算装置の機能構成図である。なお、実施形態に係る演算装置30と同様の構成には、同一の符号を付し、重複する説明を省略する。
変形例に係る演算装置30Aは、上記した演算装置30において、演算実行部32に代えて演算実行部38を備え、復号部31に代えて復号部37を備えている。
復号部37は、復号部31の機能に加えて、取得部35を介して推論処理制御部22から実行する演算の種類の指定を受け付けて、演算実行部38に渡す。なお、処理レイヤーの指定は、複数の処理レイヤーの指定であってもよい。
演算実行部38は、処理レイヤー4に対応する処理を実行するハードウェア回路で構成された複数の演算部381、382等を有する。演算実行部38は、復号部37から渡された演算の種類の指定に対応する処理を実行する演算部381を選択し、復号部37から渡されるデータを選択した演算部に入力する。なお、復号部37から複数の演算の種類の指定を受け付けた場合には、その指定に対応する演算部を順次選択し、前の処理レイヤーを実行する演算部による処理結果のデータを、次の処理レイヤーの演算部への入力とする。
なお、変形例に係る演算装置30Aを利用する場合には、サーバ20の推論処理制御部22は、演算処理30Aに対して処理レイヤーの処理を実行させるとき、その処理レイヤーに対応する演算の種類の指定を演算装置30Aに送信する機能を備えている。また、上記の演算の種類の指定に代えて、処理レイヤーを指定してもよい。この場合には、演算実行部38は、処理レイヤーの指定に対応する処理を実行する演算部を選択する。
図9から図11を参照して、第2変形例について説明する。
第2変形例では、クライアント装置10と演算装置30との間で、共有用秘密鍵331及び共有用公開鍵332に代えて、共有用共通鍵を用いて秘密鍵143及び公開鍵144を共有する。すなわち、第2変形例では、クライアント装置10と演算装置30とが、それぞれ共有用共通鍵を記憶する。そして、クライアント装置10は、共有用共通鍵を用いて秘密鍵143及び公開鍵144を暗号化して、暗号化した秘密鍵143及び公開鍵144を演算装置30に送信する。演算装置30は、暗号化された秘密鍵143及び公開鍵144を受信して、共有用共通鍵を用いて暗号化された秘密鍵143及び公開鍵144を復号する。以上により、クライアント装置10及び演算装置30とは、秘密鍵143及び公開鍵144を共有する。
なお、第2変形例において、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いてもよい。すなわち、クライアント装置10は、共有用共通鍵を用いて通信用共通鍵を暗号化して、暗号化した通信用共通鍵を演算装置30に送信する。演算装置30は、暗号化された通信用共通鍵を受信して、共有用共通鍵を用いて暗号化された通信用共通鍵を復号する。この場合には、以下の説明において、秘密鍵143と公開鍵144とは、通信用共通鍵と読み替える。
第2変形例は、クライアント装置10と演算装置30との間において、外部に秘匿した状態で上述の共有用共通鍵を共有する方法に特徴を有するものである。以下の説明においては、第2変形例の特徴であるクライアント装置10と演算装置30との間における共有用共通鍵の共有の手法を説明する。なお、実施形態に係るクライアント装置10及び演算装置30と同様の構成には、同一の符号を付し、重複する説明を省略する。
図9は、第2変形例に係る計算機システムの全体構成図である。
クライアント装置10は、公開鍵66を記憶する。また、演算装置30は、秘密鍵75を記憶する。なお、演算装置30は、第2変形例においては、後述する処理により作成される共有用共通鍵を用いて秘密鍵143及び公開鍵144をクライアント装置10との間で共有するため、共有用秘密鍵331と共有用公開鍵332とを記憶しなくてもよい。
図10は、第2変形例に係るクライアント装置が備える鍵共有部の機能構成図である。
図10を参照して、第2変形例に係るクライアント装置10が備える鍵共有部60について説明する。なお、実施形態に係るクライアント装置10と同様の構成は、図示を省略する。
クライアント装置10は、鍵共有部15に代えて、鍵共有部60を備える。
鍵共有部60は、制御部60Aと記憶部60Bとを備える。制御部60Aは、検証部61と、生成部62と、作成部63と、暗号化部64と、復号部65とを含む。また、記憶部60Bは、公開鍵66と、共有用共通鍵67とを記憶する。なお、共有用共通鍵67は、演算装置30との鍵共有処理の結果として記憶される。
公開鍵66は、演算装置30に記憶されている秘密鍵75に対応する公開鍵である。公開鍵66は、例えば、演算装置30の開発者及び製造者を含む開発者等が演算装置30に秘密鍵75を記憶させたとき、演算装置30の使用者であるクライアントに配布される。公開鍵66は、例えば、クライアント装置10で推論処理を実行するアプリケーションが起動されたときに呼び出される、DLL(Dynamic Link Library)に埋め込まれて配布されてもよい。なお、公開鍵66は、秘密鍵75に対応する復号鍵でもよい。
共有用共通鍵67は、演算装置30との間で、鍵共有を実行することにより、外部に秘匿した状態で共有される鍵であり、実施形態における共有用秘密鍵331及び共有用公開鍵332として機能する。
図11は、第2変形例に係る演算装置が備える鍵共有部の機能構成図である。
図11を参照して、第2変形例に係る演算装置30が備える鍵共有部70について説明する。なお、実施形態に係る演算装置30と同様の構成は、図示を省略する。
演算装置30は、鍵共有部33に代えて、鍵共有部70を備える。
鍵共有部70は、制御部70Aと記憶部70Bとを備える。制御部70Aは、生成部71と、作成部72と、暗号化部73と、復号部74とを含む。また、記憶部70Bは、秘密鍵75と、共有用共通鍵76とを記憶する。なお、共有用共通鍵76は、クライアント装置10との鍵共有処理の結果として記憶される。
秘密鍵75は、演算装置30の外部から読み取り不可能な状態で記憶部70Bに記憶される。秘密鍵75は、例えば、演算装置30の開発者及び製造者を含む開発者等により決定され、演算装置30の製造時にハードワイヤードなどの耐タンパ性を有する記憶方法を用いて、記憶部70Bに記憶されてもよい。共有用共通鍵76は、クライアント装置10との間で鍵共有を実行することにより、外部に秘匿した状態で共有される鍵であり、実施形態における共有用秘密鍵331及び共有用公開鍵332として機能する。すなわち、クライアント装置10に記憶される共有用共通鍵67と、演算装置30に記憶される共有用共通鍵76とは同じ値である。
図2から図4、並びに図10及び図11を参照して、クライアント装置10と演算装置30との間で実行される共有用共通鍵の鍵共有処理について説明する。以下の説明において、クライアント装置10と演算装置30とは、有限巡回群を定義する各種パラメータと、ハッシュ関数などとを共有しているものとする。
演算装置30において、生成部71は、ランダムな一時鍵aを生成する。一時鍵aは、整数の中からランダムに選択された値である。作成部72は、一時鍵aと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵aGを作成する。生成元Gは、例えば、楕円曲線群の基点G(ベースポイント)である。以下の説明では、有限巡回群が楕円曲線群であるものとして説明する。なお、有限巡回群が有限体乗法群である場合には、有限巡回群の生成元は生成元gであり、公開鍵gmodnが作成される。nは、素数である。一時鍵aは、第1整数の一例である。また、公開鍵aGは、第1公開鍵の一例である。
作成部72は、公開鍵aGにハッシュ関数Hを適用して、ハッシュ値H(aG)を求める。さらに、作成部72は、ハッシュ値H(aG)と秘密鍵75とを用いて、電子署名sを作成する。電子署名sは、例えば、ハッシュ値H(aG)を、秘密鍵75で暗号化した値である。なお、有限巡回群が有限体乗法群である場合には、ハッシュ値は、H(gmodn)である。
出力部36は、サーバ20を介してクライアント装置10に公開鍵aGと電子署名sとを送信する。具体的には、出力部36は、サーバ20に公開鍵aGと電子署名sとを出力し、サーバ20の中継部21がクライアント装置10に公開鍵aGと電子署名sとを送信する。
クライアント装置10において、受信部17は、公開鍵aGと電子署名sとを受信する。検証部61は、公開鍵aGにハッシュ関数を適用してハッシュ値H(aG)を求める。そして、検証部61は、ハッシュ値H(aG)と、電子署名s及び公開鍵66とを用いて署名の検証を実行する。
電子署名sを用いた署名の検証の一例を説明する。検証部61は、公開鍵aGにハッシュ関数Hを適用する。また、検証部61は、公開鍵66で電子署名sを復号する。そして、検証部61は、公開鍵aGにハッシュ関数Hを適用した値と、電子署名sを復号した値とが等しいとき、公開鍵aGの正当性を確認する。公開鍵aGが正当であるとは、公開鍵aGが秘密鍵75を保有する演算装置30で作成されたことを保証することである。なお、署名の検証には、例えば、RSA、DSA(Digital Signature Algorithm)、またはECDSA(Elliptic Curve Digital Signature Algorithm)などの署名アルゴリズムを用いてもよい。
生成部62は、電子署名sにより公開鍵aGの正当性が確認されたとき、一時鍵bを生成する。一時鍵bは、整数の中からランダムに選択された値である。そして、作成部63は、一時鍵bと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵bGを作成する。なお、有限巡回群が有限体乗法群である場合には、有限巡回群の生成元は生成元gであり、公開鍵gmodnが作成される。一時鍵bは、第2整数の一例である。また、公開鍵bGは、第2公開鍵の一例である。
作成部63は、さらに、一時鍵bと公開鍵aGとを乗算した値にハッシュ関数Hを適用して共有用共通鍵67としてH(b×aG)を作成する。なお、有限巡回群が有限体乗法群である場合には、共有用共通鍵67としてH((gmodn)modn))が作成される。また、共有用共通鍵67は、単にb×aGとしてもよい。
送信部13は、公開鍵bGを演算装置30に送信する。具体的には、送信部13は、サーバ20に公開鍵bGを送信し、サーバ20の中継部21が演算装置30に公開鍵bGを入力する。
演算装置30において、取得部35は、公開鍵bGを取得する。すなわち、取得部35は、クライアント装置10で電子署名sにより公開鍵aGの正当性が確認されたとき、クライアント装置10で作成された公開鍵bGを取得する。
そして、作成部72は、一時鍵aと公開鍵bGとにハッシュ関数Hを適用して共有用共通鍵76としてH(a×bG)を作成する。なお、有限巡回群が有限体乗法群である場合には、共有用共通鍵76としてH((gmodn)modn))が作成される。また、共有用共通鍵76は、単にa×bGとしてもよい。
上述の処理により、クライアント装置10と演算装置30とは、外部に秘匿した状態で共有用共通鍵を共有する。すなわち、サーバ20及びその他の装置は、公開鍵aG及び公開鍵bGを取得しても、公開鍵aG及び公開鍵bGは離散対数問題が困難なため、公開鍵aG及び公開鍵bGから一時鍵a及び一時鍵bを求めることができない。また、サーバ20及びその他の装置は、電子署名sを取得しても、電子署名sから一時鍵a及び一時鍵bを求めることができない。したがって、一時鍵a及び一時鍵bが得られないサーバ20及びその他の装置は、a×bG及びb×aGを求めることができないので、共有用共通鍵を取得することが不可能である。
また、サーバ20及びその他の装置は、一時鍵a´を生成し、公開鍵aGを別の値a´Gにすり替えてクライアント装置10に送信する。さらに、サーバ20及びその他の装置は、クライアント装置10から公開鍵bGを取得して不正な共有用共通鍵a´×bGを作成する。これにより、サーバ20及びその他の装置は、クライアント装置10との間で不正な共有用共通鍵a´×bGを共有する不正行為が考えられる。
この場合でも、サーバ20及びその他の装置は、秘密鍵75を有していないため、別の値a´Gに対応する電子署名s´を作成することができない。すると、クライアント装置10は、別の値a´Gが正当なものであると確認できないため、サーバ20に公開鍵bGを送信することがないし、不正な共有用共通鍵a´×bGを正当なものとして作成することもない。したがって、サーバ20及びその他の装置は、不正な共有用共通鍵a´×bGを用いて、クライアント装置10から送信される暗号化データを復号することも不可能である。
以上により、第2変形例に係るクライアント装置10と演算装置30とは、サーバ20及びその他の装置の中間者攻撃を防ぐための処理として、複雑な演算と複数回の通信とが発生するDH-EKEなどの煩雑な処理をすることなく、共有用共通鍵を共有することができる。
共有用共通鍵を共有した後の秘密鍵143及び公開鍵144の共有処理について説明する。なお、以下の処理において、秘密鍵143及び公開鍵144に代えて、通信用共通鍵を用いる場合には、秘密鍵143と公開鍵144とを、通信用共通鍵と読み替える。
クライアント装置10において、暗号化部64は、共有用共通鍵67を用いて、秘密鍵143及び公開鍵144を暗号化する。送信部13は、暗号化した秘密鍵143及び公開鍵144を演算装置30に送信する。具体的には、送信部13は、サーバ20に暗号化した秘密鍵143及び公開鍵144を送信し、サーバ20の中継部21が演算装置30に暗号化した秘密鍵143及び公開鍵144を入力する。
演算装置30において、取得部35は、暗号化された秘密鍵143及び公開鍵144を取得する。そして、復号部74は、共有用共通鍵76を用いて暗号化された秘密鍵143及び公開鍵144を復号する。これにより、クライアント装置10及び演算装置30とは、秘密鍵143及び公開鍵144を共有する。
なお、秘密鍵143及び公開鍵144を演算装置30からクライアント装置10に送信して、秘密鍵143及び公開鍵144を共有する場合には、以下の処理を実行する。
演算装置30において、暗号化部73は、共有用共通鍵76を用いて、秘密鍵143及び公開鍵144を暗号化する。出力部36は、サーバ20を介してクライアント装置10に暗号化した秘密鍵143及び公開鍵144を送信する。具体的には、出力部36は、サーバ20に暗号化した秘密鍵143及び公開鍵144を出力し、サーバ20の中継部21がクライアント装置10に暗号化した秘密鍵143及び公開鍵144を送信する。
クライアント装置10において、受信部17は、暗号化された秘密鍵143及び公開鍵144を受信する。復号部65は、共有用共通鍵67を用いて暗号化された秘密鍵143及び公開鍵144を復号する。これにより、クライアント装置10及び演算装置30とは、秘密鍵143及び公開鍵144を共有する。
なお、上述の説明において、説明の簡単化のため、暗号化部64及び復号部65とは、暗号化部12及び復号部16と別に設けられるものとして説明したが、暗号化部12と復号部16とが、それぞれ暗号化部64と復号部65として機能してもよい。また、暗号化部73及び復号部74とは、暗号化部34及び復号部31と別に設けられるものとして説明したが、暗号化部34と復号部31とが、それぞれ暗号化部73と復号部74として機能してもよい。
上記の第2変形例の手法でも問題ない場合が多いが、秘密鍵75を全デバイスに書き込んで配布するのでは、記憶部70Bに耐タンパ性を持たせるなどの対策が必要であり、秘密鍵75が安全に記憶できないことがある。この場合には、開発者等は、演算装置30ごとに一時鍵aを決定し、演算装置30の電子署名sを求め、工場出荷時に秘密鍵75に代えて、一時鍵aと電子署名sとを演算装置30の記憶部70Bに書き込んでもよい。すなわち、記憶部70Bは、一時鍵aと電子署名sとを記憶する。なお、記憶部70Bは、クライアント装置10との鍵共有処理の結果として共有用共通鍵76を記憶する。
具体的には、演算装置30において、記憶部70Bは、一時鍵a、公開鍵aG及び秘密鍵75を用いて開発者等により作成された電子署名sと、一時鍵aとを記憶する。作成部72は、一時鍵aと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵aGを作成する。そして、出力部36は、サーバ20を介してクライアント装置10に公開鍵aGと、電子署名sとを出力する。
クライアント装置10において、検証部61は、電子署名sにより公開鍵aGの正当性が確認されたとき、ランダムな一時鍵bと公開鍵aGとを用いて共有用共通鍵67を作成する。また、作成部63は、一時鍵bと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵bGを作成する。そして、送信部13は、サーバ20を介して公開鍵bGを演算装置30に送信する。
演算装置30において、取得部35は、クライアント装置10から、公開鍵bGを取得する。作成部72は、前記憶部70Bに記憶されている一時鍵aと公開鍵bGとを用いて共有用共通鍵76を作成する。
さらに、一時鍵aを演算装置30ごとに固定する構成の別構成を説明する。開発者等は、演算装置30ごとに一時鍵aを決定し、演算装置30の電子署名sを求め、一時鍵aと生成元Gとを用いて作成された離散対数問題が困難な有限巡回群の元として公開鍵aGを作成する。そして、開発者等は、工場出荷時に秘密鍵75に代えて、一時鍵aと電子署名sと公開鍵aGとを演算装置30の記憶部70Bに書き込む。すなわち、記憶部70Bは、一時鍵aと電子署名sと公開鍵aGとを記憶する。なお、記憶部70Bは、クライアント装置10との鍵共有処理の結果として共有用共通鍵76を記憶する。
具体的には、演算装置30において、記憶部70Bは、一時鍵a及び生成元Gを用いて開発者等により作成された公開鍵aGと、一時鍵a、公開鍵aG及び秘密鍵75を用いて開発者等により作成された電子署名sと、一時鍵aとを記憶する。そして、出力部36は、サーバ20を介してクライアント装置10に公開鍵aGと、電子署名sとを出力する。したがって、記憶部70Bに公開鍵aGを記憶する構成においては、演算装置30は、一時鍵aと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵aGを作成する作成部72を備えなくてもよい。
クライアント装置10において、検証部61は、電子署名sにより公開鍵aGの正当性が確認されたとき、ランダムな一時鍵bと公開鍵aGとを用いて共有用共通鍵67を作成する。また、作成部63は、一時鍵bと生成元Gとを用いて離散対数問題が困難な有限巡回群の元として公開鍵bGを作成する。そして、送信部13は、サーバ20を介して公開鍵bGを演算装置30に送信する。
演算装置30において、取得部35は、クライアント装置10から、公開鍵bGを取得する。作成部72は、前記憶部70Bに記憶されている一時鍵aと公開鍵bGとを用いて共有用共通鍵76を作成する。
以上のように、一時鍵aを演算装置30ごとに固定し、秘密鍵75に代えて、一時鍵aと、電子署名sとを記憶部70Bに記憶する構成を用いて鍵共有処理を実行することにより、外部へ秘密鍵75が漏洩することを防止することができる。なお、第1変形例の構成に、第2変形例の構成を組み合わせて構成してもよい。すなわち、第1変形例のクライアント装置10の鍵共有部15に代えて、第2変形例の鍵共有部60を適用し、第1変形例の演算装置30の鍵共有部33に代えて、第2変形例の鍵共有部70を適用してもよい。
なお、本発明は、上述の実施形態及び変形例に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、クライアント装置10が演算装置30から共有用公開鍵332を取得するようにしていたが、予め共有用公開鍵332を取得してクライアント装置10に格納している場合には、ステップS101~S104の処理を実行しなくてもよい。
また、クライアント装置10と演算装置30との間の秘密鍵143及び公開鍵144の共有方法は、上記に限られず、別のアルゴリズム、例えば、DH-EKE(Diffie-Hellman Encrypted Key Exchange)を用いてもよい。
また、上記実施形態又は変形例において、推論処理制御部22は、暗号化されたデータのままで演算できる処理レイヤーについて、サーバ20と演算装置30(30A)とのいずれに実行させるかを設定に従って決めるようにしていた。本発明はこれに限られず、例えば、サーバ20の処理負荷や、演算装置30(30A)の処理負荷の少なくとも一方を検出し、この処理負荷に基づいて、サーバ20と演算装置30(30A)とのいずれに処理レイヤーを実行させるかを決定するようにしてもよい。例えば、推論処理制御部22は、サーバ20の処理負荷が所定以上の場合に、暗号化されたデータのままで演算できる処理レイヤーについて、演算装置30(30A)に実行させてもよい。また、推論処理制御部22は、演算装置30(30A)の処理負荷が所定以上である場合に、暗号化されたデータのままで演算できる処理レイヤーについて、サーバ20で実行させてもよい。これにより、サーバ20や、演算装置30(30A)の処理負荷を抑制することができる。
また、上記実施形態又は変形例において、演算装置30(30A)の演算実行部32(38)に、簡易な演算式を実行可能なマイクロプロセッサを備えてもよい。この場合には、推論処理制御部22は、演算装置30(30A)に実行させる演算式を送信し、簡易な演算式を実行可能なマイクロプロセッサに演算式に対応する処理を実行させてもよい。このようにすると、演算装置30(30A)において、回路として構成していなかった演算についても処理することができるようになる。
また、演算システム2で実行する処理に対応するニューラルネットワークモデルの構成は、上記した例に限られず、より多くの処理レイヤーを有してもよく、上記した例と異なる処理を実行する処理レイヤーを含んでいてもよい。
また、上記実施形態及び変形例では、演算システム2においてニューラルネットワークモデルに対応する処理を実行する例を示していたが、本発明はこれに限られず、例えば、ニューラルネットワークモデルに対応していない処理を実行するようにしてもよい。
また、上記実施形態及び変形例においては、準同型暗号として、加法準同型暗号を例にしていたが、本発明はこれに限られず、乗法準同型暗号や、完全準同型暗号や、SomeWhat準同型暗号としてもよい。
また、上記実施形態及び変形例においては、準同型暗号により暗号化したデータを対象に処理を行う例を示していたが、他の暗号方式により暗号化されたデータを対象に処理を行うようにしてもよい。
また、上記実施形態及び変形例においては、推論処理を実行する例を示していたが、これに限られず、本発明は、推論処理とは異なる処理を実行する場合にも適用することができる。
1…計算機システム、2…演算システム、10…クライアント装置、20…サーバ、30,30A…演算装置、31,37…復号部、32,38…演算実行部、33、40、50…鍵共有部、34…暗号化部

Claims (23)

  1. クライアント装置とネットワークを介して接続される情報処理装置にバスを介して接続される演算装置であって、
    前記クライアント装置は、処理対象のデータを第1暗号鍵で暗号化させて、前記情報処理装置に送信し、前記情報処理装置から送信された暗号化された処理結果のデータを、前記第1暗号鍵に対応する第1復号鍵で復号し、
    前記演算装置は、
    前記クライアント装置との間で前記第1暗号鍵及び前記第1復号鍵を外部に秘匿した状態で共有する鍵共有部と、
    前記クライアント装置から送信されたデータに基づく前記第1暗号鍵で暗号化されているデータを前記情報処理装置から取得する取得部と、
    前記取得部により取得された前記第1暗号鍵で暗号化されているデータを前記第1復号鍵で復号する復号部と、
    前記復号部で復号されたデータに対して所定の演算を実行する演算実行部と、
    前記演算実行部による演算結果のデータを前記第1暗号鍵で暗号化する暗号化部と、
    前記暗号化された前記演算結果のデータを前記情報処理装置に出力する出力部と、
    を備え
    前記所定の演算は、前記情報処理装置から指示された、前記データに対して実行する処理中の、少なくとも暗号化されたデータのままで実行不能な演算を含む
    ことを特徴とする演算装置。
  2. 前記演算実行部は、
    異なる演算を実行可能な複数の演算部を有し、
    前記取得部は、前記情報処理装置から前記データに対して実行する演算の指示を取得し、
    前記演算実行部は、前記演算の指示に対応する演算を実行する演算部を選択し、選択した演算部により、前記データに対する演算を実行する
    ことを特徴とする請求項1に記載の演算装置。
  3. 前記情報処理装置は、前記演算装置に実行させる演算についての演算式を前記演算装置に送信し、
    前記演算装置の前記演算実行部は、
    前記情報処理装置から受信した演算式を実行する
    ことを特徴とする請求項1に記載の演算装置。
  4. 前記演算装置は、第2復号鍵を外部から読出不能に記憶し、
    前記クライアント装置から、前記第2復号鍵に対応する第2暗号鍵により暗号化された前記第1暗号鍵及び前記第1復号鍵を受信して、前記第2復号鍵を用いて前記暗号化された前記第1暗号鍵及び前記第1復号鍵を復号することにより、前記第1暗号鍵及び第1復号鍵を共有する
    ことを特徴とする請求項1から請求項3のいずれか一項に記載の演算装置。
  5. 前記鍵共有部は、
    ランダムな第1整数を生成する生成部と、
    前記第1整数と生成元とを用いて離散対数問題が困難な有限巡回群の元として第1公開鍵を作成する作成部と、
    を備え、
    前記出力部は、
    前記情報処理装置を介して前記クライアント装置に前記第1公開鍵を送信し、
    前記取得部は、
    ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記第1暗号鍵及び前記第1復号鍵とを取得し、
    前記作成部は、
    前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
    前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記第1暗号鍵及び前記第1復号鍵を復号する
    ことを特徴とする請求項1から請求項3のいずれか一項に記載の演算装置。
  6. 前記鍵共有部は、さらに、
    秘密鍵を記憶する記憶部
    を備え、
    前記作成部は、さらに、
    前記秘密鍵と前記公開鍵のハッシュ値とを用いて電子署名を作成し、
    前記出力部は、
    前記情報処理装置を介して前記クライアント装置に前記電子署名を出力し、
    前記取得部は、
    前記クライアント装置で前記電子署名により前記第1公開鍵の正当性が確認されたとき、前記クライアント装置で作成された前記第2公開鍵と、前記暗号化された前記第1暗号鍵及び前記第1復号鍵とを取得する
    ことを特徴とする請求項5に記載の演算装置。
  7. 前記鍵共有部は、
    第1整数と、前記第1整数、第1公開鍵及び秘密鍵を用いて作成された電子署名と、を記憶する記憶部と、
    前記第1整数と生成元とを用いて離散対数問題が困難な有限巡回群の元として第1公開鍵を作成する作成部と、
    を備え、
    前記出力部は、
    前記情報処理装置を介して前記クライアント装置に前記電子署名と、前記第1公開鍵とを出力し、
    前記取得部は、
    前記電子署名の検証を実行して前記第1公開鍵の正当性が確認されたとき、ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記第1暗号鍵及び前記第1復号鍵とを取得し、
    前記作成部は、
    前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
    前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記第1暗号鍵及び前記第1復号鍵を復号する
    ことを特徴とする請求項1から請求項3のいずれか一項に記載の演算装置。
  8. 前記鍵共有部は、
    第1整数と、前記第1整数、第1公開鍵及び秘密鍵を用いて作成された電子署名と、前記第1整数及び生成元を用いて作成された離散対数問題が困難な有限巡回群の元である第1公開鍵とを記憶する記憶部
    を備え、
    前記出力部は、
    前記情報処理装置を介して前記クライアント装置に前記電子署名と、前記第1公開鍵とを出力し、
    前記取得部は、
    前記電子署名の検証を実行して前記第1公開鍵の正当性が確認されたとき、ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記第1暗号鍵及び前記第1復号鍵とを取得し、
    前記作成部は、
    前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
    前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記第1暗号鍵及び前記第1復号鍵を復号する
    ことを特徴とする請求項1から請求項3のいずれか一項に記載の演算装置。
  9. 前記共有用共通鍵は、
    前記第1整数と前記第2公開鍵とを用いた値にハッシュ値を適用した値である
    ことを特徴とする請求項5から8のいずれか一項に記載の演算装置。
  10. クライアント装置とネットワークを介して接続される情報処理装置にバスを介して接続される演算装置であって、
    前記クライアント装置は、処理対象のデータを通信用共通鍵で暗号化させて、前記情報処理装置に送信し、前記情報処理装置から送信された暗号化された処理結果のデータを、前記通信用共通鍵で復号し、
    前記演算装置は、
    前記クライアント装置との間で前記通信用共通鍵を外部に秘匿した状態で共有する鍵共有部と、
    前記クライアント装置から送信されたデータに基づく前記通信用共通鍵で暗号化されているデータを前記情報処理装置から取得する取得部と、
    前記取得部により取得された前記通信用共通鍵で暗号化されているデータを前記通信用共通鍵で復号する復号部と、
    前記復号部で復号されたデータに対して所定の演算を実行する演算実行部と、
    前記演算実行部による演算結果のデータを前記通信用共通鍵で暗号化する暗号化部と、
    前記暗号化された前記演算結果のデータを前記情報処理装置に出力する出力部と、
    を備え
    前記所定の演算は、前記情報処理装置から指示された、前記データに対して実行する処理中の、少なくとも暗号化されたデータのままで実行不能な演算を含む
    ことを特徴とする演算装置。
  11. 前記演算実行部は、
    異なる演算を実行可能な複数の演算部を有し、
    前記取得部は、前記情報処理装置から前記データに対して実行する演算の指示を取得し、
    前記演算実行部は、前記演算の指示に対応する演算を実行する演算部を選択し、選択した演算部により、前記データに対する演算を実行する
    ことを特徴とする請求項10に記載の演算装置。
  12. 前記情報処理装置は、前記演算装置に実行させる演算についての演算式を前記演算装置に送信し、
    前記演算装置の前記演算実行部は、
    前記情報処理装置から受信した演算式を実行する
    ことを特徴とする請求項10に記載の演算装置。
  13. 前記演算装置は、第2復号鍵を外部から読出不能に記憶し、
    前記クライアント装置から、前記第2復号鍵に対応する第2暗号鍵により暗号化された前記通信用共通鍵を受信して、前記第2復号鍵を用いて前記暗号化された前記通信用共通鍵を復号することにより、前記通信用共通鍵を共有する
    ことを特徴とする請求項10から請求項12のいずれか一項に記載の演算装置。
  14. 前記鍵共有部は、
    ランダムな第1整数を生成する生成部と、
    前記第1整数と生成元とを用いて離散対数問題が困難な有限巡回群の元として第1公開鍵を作成する作成部と、
    を備え、
    前記出力部は、
    前記情報処理装置を介して前記クライアント装置に前記第1公開鍵を送信し、
    前記取得部は、
    ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記通信用共通鍵とを取得し、
    前記作成部は、
    前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
    前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記通信用共通鍵を復号する
    ことを特徴とする請求項10から請求項12のいずれか一項に記載の演算装置。
  15. 前記鍵共有部は、さらに、
    秘密鍵を記憶する記憶部
    を備え、
    前記作成部は、さらに、
    前記秘密鍵と前記公開鍵のハッシュ値とを用いて電子署名を作成し、
    前記出力部は、
    前記情報処理装置を介して前記クライアント装置に前記電子署名を出力し、
    前記取得部は、
    前記クライアント装置で前記電子署名により前記第1公開鍵の正当性が確認されたとき、前記クライアント装置で作成された前記第2公開鍵と、前記暗号化された前記通信用共通鍵とを取得する
    ことを特徴とする請求項14に記載の演算装置。
  16. 前記鍵共有部は、
    第1整数と、前記第1整数、第1公開鍵及び秘密鍵を用いて作成された電子署名と、を記憶する記憶部と、
    前記第1整数と生成元とを用いて離散対数問題が困難な有限巡回群の元として第1公開鍵を作成する作成部と、
    を備え、
    前記出力部は、
    前記情報処理装置を介して前記クライアント装置に前記電子署名と、前記第1公開鍵とを出力し、
    前記取得部は、
    前記電子署名の検証を実行して前記第1公開鍵の正当性が確認されたとき、ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記通信用共通鍵とを取得し、
    前記作成部は、
    前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
    前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記通信用共通鍵を復号する
    ことを特徴とする請求項10から請求項12のいずれか一項に記載の演算装置。
  17. 前記鍵共有部は、
    第1整数と、前記第1整数、第1公開鍵及び秘密鍵を用いて作成された電子署名と、前記第1整数及び生成元を用いて作成された離散対数問題が困難な有限巡回群の元である第1公開鍵とを記憶する記憶部
    を備え、
    前記出力部は、
    前記情報処理装置を介して前記クライアント装置に前記電子署名と、前記第1公開鍵とを出力し、
    前記取得部は、
    前記電子署名の検証を実行して前記第1公開鍵の正当性が確認されたとき、ランダムな第2整数と前記第1公開鍵とを用いて共有用共通鍵を作成する前記クライアント装置から、前記第2整数と前記生成元とを用いて前記クライアント装置で作成された離散対数問題が困難な有限巡回群の元である第2公開鍵と、前記クライアント装置において前記共有用共通鍵を用いて暗号化された前記通信用共通鍵とを取得し、
    前記作成部は、
    前記第1整数と前記第2公開鍵とを用いて共有用共通鍵を作成し、
    前記復号部は、前記作成部により作成された前記共有用共通鍵を用いて前記暗号化された前記通信用共通鍵を復号する
    ことを特徴とする請求項10から請求項12のいずれか一項に記載の演算装置。
  18. 前記共有用共通鍵は、
    前記第1整数と前記第2公開鍵とを用いた値にハッシュ値を適用した値である
    ことを特徴とする請求項14から17のいずれか一項に記載の演算装置。
  19. クライアント装置とネットワークを介して接続される情報処理装置と、前記情報処理装置にバスを介して接続される演算装置と、を備える演算システムであって、
    前記クライアント装置は、処理対象のデータを第1暗号鍵で暗号化させて、前記情報処理装置に送信し、前記情報処理装置から送信された暗号化された処理結果のデータを、前記第1暗号鍵に対応する第1復号鍵で復号し、
    前記演算装置は、
    前記クライアント装置との間で前記第1暗号鍵及び前記第1復号鍵を外部に秘匿した状態で共有する鍵共有部と、
    前記クライアント装置から送信されたデータに基づく前記第1暗号鍵で暗号化されているデータを前記情報処理装置から取得する取得部と、
    前記取得部により取得されたデータを前記第1復号鍵で復号する復号部と、
    前記復号部で復号されたデータに対して所定の演算を実行する演算実行部と、
    前記演算実行部による演算結果のデータを前記第1暗号鍵で暗号化する暗号化部と、
    前記暗号化された前記演算結果のデータを前記情報処理装置に出力する出力部と、を有し、
    前記情報処理装置は、
    前記クライアント装置から前記第1暗号鍵で暗号化されたデータを受信する受信部と、
    前記データに対して実行する処理中の、少なくとも暗号化されたデータのままで実行不能な演算について、前記演算装置の前記演算実行部に実行させることにより、前記処理の結果を算出する演算制御部と、
    前記処理の結果を前記クライアント装置に送信する送信部と、
    を備えることを特徴とする演算システム。
  20. 前記第1暗号鍵及び前記第1復号鍵は、準同型暗号方式に従う鍵であり、
    前記情報処理装置の前記演算制御部は、
    前記処理中の暗号化されたデータに対してそのまま実行できる演算の少なくとも一部を実行する
    ことを特徴とする請求項19に記載の演算システム。
  21. 前記データに対して実行する処理は、畳込み演算を行う畳込レイヤーと、畳込レイヤーによる演算結果に対して活性化演算を実行する活性化レイヤーとを含むニューラルネットワークモデルによって実現される推論処理であり、
    前記演算制御部は、少なくとも畳込レイヤーの演算を実行し、
    前記演算装置の演算実行部は、前記活性化レイヤーの演算を実行する
    ことを特徴とする請求項20に記載の演算システム。
  22. 前記演算制御部は、
    前記処理中の自情報処理装置と、前記演算装置とのいずれでも実行可能な演算について、前記情報処理装置の処理負荷と前記演算装置の処理負荷との少なくとも一方に基づいて、いずれで実行させるかを制御する
    ことを特徴とする請求項19に記載の演算システム。
  23. クライアント装置とネットワークを介して接続される情報処理装置と、前記情報処理装置にバスを介して接続される演算装置と、を備える演算システムにおける演算装置による演算方法であって、
    前記クライアント装置は、処理対象のデータを第1暗号鍵で暗号化させて、前記情報処理装置に送信し、前記情報処理装置から送信された暗号化された処理結果のデータを、前記第1暗号鍵に対応する第1復号鍵で復号し、
    前記演算装置は、
    前記クライアント装置との間で前記第1暗号鍵及び前記第1復号鍵を外部に秘匿した状態で共有し、
    前記クライアント装置から送信されたデータに基づく前記第1暗号鍵で暗号化されているデータを前記情報処理装置から取得し、
    取得されたデータを前記第1復号鍵で復号し、
    復号されたデータに対して所定の演算を実行し、
    演算結果のデータを前記第1暗号鍵で暗号化し、
    前記暗号化された前記演算結果のデータを前記情報処理装置に出力し、
    前記所定の演算は、前記情報処理装置から指示された、前記データに対して実行する処理中の、少なくとも暗号化されたデータのままで実行不能な演算を含む
    演算方法。
JP2020026497A 2019-04-15 2020-02-19 演算装置、演算システム、及び演算方法 Active JP7017800B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/832,628 US11611430B2 (en) 2019-04-15 2020-03-27 Arithmetic apparatus, arithmetic system and arithmetic method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019077259 2019-04-15
JP2019077259 2019-04-15

Publications (2)

Publication Number Publication Date
JP2020177223A JP2020177223A (ja) 2020-10-29
JP7017800B2 true JP7017800B2 (ja) 2022-02-09

Family

ID=72935664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020026497A Active JP7017800B2 (ja) 2019-04-15 2020-02-19 演算装置、演算システム、及び演算方法

Country Status (1)

Country Link
JP (1) JP7017800B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7076167B1 (ja) 2021-12-01 2022-05-27 Eaglys株式会社 機械学習装置、機械学習システム、機械学習方法、および機械学習プログラム
WO2023218514A1 (ja) * 2022-05-10 2023-11-16 日本電信電話株式会社 計算結果配布装置、計算結果保護システム、および、計算結果配布方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015072583A (ja) 2013-10-02 2015-04-16 オリンパス株式会社 画像処理装置、画像処理方法、および撮像装置
US20180067774A1 (en) 2016-09-08 2018-03-08 Fujitsu Limited System for information processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015072583A (ja) 2013-10-02 2015-04-16 オリンパス株式会社 画像処理装置、画像処理方法、および撮像装置
US20180067774A1 (en) 2016-09-08 2018-03-08 Fujitsu Limited System for information processing
JP2018041340A (ja) 2016-09-08 2018-03-15 富士通株式会社 情報処理システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
鈴木 大輔,FPGA搭載サーバにおける秘匿アクセラレーション,2019年 暗号と情報セキュリティシンポジウム予稿集,日本,2019年暗号と情報セキュリティシンポジウム実行委員会,2019年01月15日,pp.1-8

Also Published As

Publication number Publication date
JP2020177223A (ja) 2020-10-29

Similar Documents

Publication Publication Date Title
US10616213B2 (en) Password manipulation for secure account creation and verification through third-party servers
US9673975B1 (en) Cryptographic key splitting for offline and online data protection
US8171306B2 (en) Universal secure token for obfuscation and tamper resistance
EP2526505B1 (en) Device and method for obtaining a cryptographic key
JP6763378B2 (ja) 暗号情報作成装置、暗号情報作成方法、暗号情報作成プログラム、及び、照合システム
US7877604B2 (en) Proof of execution using random function
US11611430B2 (en) Arithmetic apparatus, arithmetic system and arithmetic method
JP6962578B2 (ja) 暗号処理システム、暗号処理装置、暗号処理プログラム、及び暗号処理方法
KR102397579B1 (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
JP4776906B2 (ja) 署名生成方法及び情報処理装置
CN110868291B (zh) 一种数据加密传输方法、装置、***及存储介质
EP1794925A1 (en) Sharing a secret by using random function
JP7017800B2 (ja) 演算装置、演算システム、及び演算方法
US20140233731A1 (en) Device and Method for Generating Keys with Enhanced Security for Fully Homomorphic Encryption Algorithm
CN113904808A (zh) 一种私钥分发、解密方法、装置、设备及介质
TW201630378A (zh) 金鑰***技術
JP7024666B2 (ja) Idベースハッシュ証明系構成装置、idベース暗号装置及びプログラム
EP3010173B1 (en) Key storage device, key storage method, and program therefor
JP5964460B2 (ja) データの暗号化記憶システム
CN117082493A (zh) 星形组网数据传输方法、装置、计算机设备和存储介质
JP5850888B2 (ja) 情報記憶システム、情報記憶装置、その方法、及びプログラム
CN113645022A (zh) 一种确定隐私集合交集方法、装置、电子设备及存储介质
JP2017038336A (ja) 復号方法
Costea et al. Secure software licensing: Models, constructions, and proofs
TWI775467B (zh) 機器學習模型檔案解密方法及用戶裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201028

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210709

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210915

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220121

R150 Certificate of patent or registration of utility model

Ref document number: 7017800

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250