(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024160649
(43)【公開日】2024-11-14
(54)【発明の名称】分析装置、分析方法及び分析プログラム
(51)【国際特許分類】
G06F 21/71 20130101AFI20241107BHJP
G06F 21/60 20130101ALI20241107BHJP
G09C 1/00 20060101ALI20241107BHJP
【FI】
G06F21/71
G06F21/60 320
G09C1/00 650Z
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2023075876
(22)【出願日】2023-05-01
(71)【出願人】
【識別番号】399035766
【氏名又は名称】エヌ・ティ・ティ・コミュニケーションズ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】田中 哲士
(72)【発明者】
【氏名】櫻井 陽一
(72)【発明者】
【氏名】澤田 匡史
(57)【要約】
【課題】秘密計算による除算を効率良く行うこと。
【解決手段】実施形態の分析装置は、取得部、計算部及び出力制御部を有する。取得部は、秘密計算の写像により、第1の値の対数値のシェアと第2の値の対数値のシェアとを取得する。計算部は、秘密計算の減算により、第1の値の対数値のシェアと第2の値の対数値のシェアとの差を計算する。取得部は、秘密計算の写像により、差の指数値を取得する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
秘密計算の写像により、第1の値の対数値のシェアと第2の値の対数値のシェアとを取得する対数値取得部と、
秘密計算の減算により、第1の値の対数値のシェアと第2の値の対数値のシェアとの差を計算する計算部と、
秘密計算の写像により、前記差の指数値を取得する指数値取得部と、
を有することを特徴とする分析装置。
【請求項2】
前記対数値取得部は、対数表から対数値を取得し、
前記指数値取得部は、指数表から指数値を取得する
ことを特徴とする請求項1に記載の分析装置。
【請求項3】
分析装置によって実行される分析方法であって、
秘密計算の写像により、第1の値の対数値のシェアと第2の値の対数値のシェアとを取得する対数値取得工程と、
秘密計算の減算により、第1の値の対数値のシェアと第2の値の対数値のシェアとの差を計算する計算工程と、
秘密計算の写像により、前記差の指数値を取得する指数値取得工程と、
を含むことを特徴とする分析方法。
【請求項4】
秘密計算の写像により、第1の値の対数値のシェアと第2の値の対数値のシェアとを取得する対数値取得ステップと、
秘密計算の減算により、第1の値の対数値のシェアと第2の値の対数値のシェアとの差を計算する計算ステップと、
秘密計算の写像により、前記差の指数値を取得する指数値取得ステップと、
をコンピュータに実行させることを特徴とする分析プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分析装置、分析方法及び分析プログラムに関する。
【背景技術】
【0002】
従来、データを秘匿したまま統計的な演算を行い、演算の結果得られた統計量をユーザに提供する秘密計算システムが知られている。例えば、秘密計算システムは、重要な個人情報を取り扱う医療分野等におけるデータの分析に利用される場合がある。
【0003】
また、暗号化された状態のデータに対し統計処理を行う秘密計算システムが知られている。例えば、暗号化された状態のデータを使って、ロジスティック回帰分析のパラメータを求める技術が知られている(例えば、特許文献2を参照)。
【0004】
また、ロジスティック回帰分析に類似する手法であり、生存時間解析に用いられるCox比例ハザード回帰分析が知られている(例えば、特許文献3を参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開第2019/124260号
【特許文献2】特開2020-042128号公報
【特許文献3】特開2008-299370号公報
【非特許文献】
【0006】
【非特許文献1】日本電信電話株式会社,秘密計算のシステムとその原理, [online],[令和5年1月6日検索]、インターネット<URL:https://www.rd.ntt/sil/project/sc/secure_computation.html>
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の技術では、秘密計算による除算を効率良く行うことができない場合があるという問題がある。
【0008】
例えば、除算a/bをa×(1/b)に変換し(ただし、a及びbは実数)、1/bの変換表を用いて除算a/bの近似値を求める方法が知られている。一方で、この方法では、乗算した結果の桁数が大きくなるため、適宜桁数を補正する必要がある。また、乗算は加減算よりも数値範囲の制限が狭い。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明の分析装置は、秘密計算の写像により、第1の値の対数値のシェアと第2の値の対数値のシェアとを取得する対数値取得部と、秘密計算の減算により、第1の値の対数値のシェアと第2の値の対数値のシェアとの差を計算する計算部と、秘密計算の写像により、前記差の指数値を取得する指数値取得部と、を有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、秘密計算による除算を効率良く行うことができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、実施形態に係る分析システムの構成例を示す図である。
【
図2】
図2は、実施形態に係る分析装置の構成例を示す図である。
【
図5】
図5は、除算の流れを示すフローチャートである。
【
図6】
図6は、分析プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0012】
以下に、本願に係る分析装置、分析方法及び分析プログラムの実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【0013】
まず、
図1を用いて、分析システムの構成を説明する。分析システムは、秘密計算を利用してデータの分析を行うためのシステムである。
【0014】
図1に示すように、分析システム1は、秘密計算システム10を含む。また、秘密計算システム10は、ネットワークNを介して提供装置20及び提供装置30と接続される。例えば、ネットワークNはインターネットである。また、秘密計算システム10は、端末装置40と接続される。
【0015】
提供装置20及び提供装置30は、データ提供者側の装置である。提供装置20及び提供装置30は、秘密計算システム10にデータを提供(登録)する。
【0016】
提供装置20及び提供装置30によって提供されるデータは、秘匿化されることが望ましい情報(例えば、個人の氏名、住所等の個人情報)を含む。例えば、提供装置20及び提供装置30は、医療機関で利用される診療データ又は健康診断データを提供する。ただし、提供装置20及び提供装置30によって提供されるデータは、医療機関で利用されるデータに限られない。
【0017】
秘密計算システム10は、データ蓄積部11及びデータ処理部12を有する。データ蓄積部11は、秘密分散によりデータを蓄積する複数の蓄積装置(蓄積装置111、蓄積装置112、蓄積装置113)を含む。また、データ処理部12は、秘密計算によりデータを処理する複数の計算装置(計算装置121、計算装置122、計算装置123)を含む。なお、蓄積装置の数及び計算装置の数は、
図1に示す例に限られない。
【0018】
秘密計算システム10は、非特許文献1(掲載URL:https://www.rd.ntt/sil/project/sc/secure_computation.html)に記載された方法に従って、秘密分散及び秘密計算を実行することができる。
【0019】
まず、秘密計算システム10に提供されたデータは、複数のシェアに分割される(断片化)。そして、複数のシェアのそれぞれは、データ蓄積部11に含まれる複数の蓄積装置に分散して蓄積される。
図1の例では、提供されたデータが3つのシェアに分割される。そして、蓄積装置111、蓄積装置112、蓄積装置113が、それぞれ1つずつシェアを蓄積する。
【0020】
データ処理部12は、データ蓄積部11に蓄積されたシェアに対し、秘密計算を実行する。データ処理部12は、複数の計算装置を使ったマルチパーティ計算により秘密計算を実行する。
図1の例では、データ処理部12は、計算装置121、計算装置122、計算装置123により秘密計算を実行する。
【0021】
データ処理部12は、シェアを復元することなく各種の統計演算を行うことができる。例えば、データ処理部12は、ソート、結合等のテーブルの操作、レコード数の集計、総和、平均、最大値、最小値、標本分散等の統計量の計算、t検定等の統計的検定を行うことができる。さらに、データ処理部12は、回帰分析及び主成分分析といった統計的分析を行うことができる。
【0022】
分析装置13は、データ処理部12を利用してデータの分析を行う。分析装置13は、データ処理部12によって実行された秘密計算の結果に基づき、分析結果をデータ利用者側の端末装置40に提供する。利用者は、端末装置40を介してデータの分析結果を得ることができる。
【0023】
例えば、秘密計算システム10には、個人ごとの属性及び身体に関するデータが提供される場合がある。属性及び身体に関するデータは秘匿化されることが望ましい個人情報である。属性及び身体に関するデータには、例えば年齢、性別、身長、体重等が含まれる。データ蓄積部11は、提供されたデータを断片化したシェアを各蓄積装置に格納する。
【0024】
なお、分割された個々のシェアは、単独では意味のないデータである。そのため、1つのシェアから元のデータを復元することはできない。一方、複数のシェアを揃えることで元のデータを復元することが可能になる。
【0025】
データの利用者は、登録されたデータそのものを閲覧することはできないが、分析装置13及び端末装置40を介して、データの分析結果を閲覧することができる。例えば、データに個人の性別及び体重が含まれている場合、利用者は、各個人の性別及び体重を閲覧することはできないが、データの分析結果である「男性の平均体重」を閲覧することができる。
【0026】
一例として、データ蓄積部11は、Shamirの閾値秘密分散法という手法を使って秘密分散を行うことができる。このとき、データ蓄積部11は、元のデータを切片とする多項式を通る3つの座標をシェアとして各サーバに保管する。また、多項式の傾きはランダムに決定されるため、元のデータが同じであってもシェアが毎回同じであるとは限らない。なお、元のデータは、数値であってもよいし、数値に変換済みのデータであってもよい。
【0027】
秘密計算システム10は、複数のシェアから元のデータを復元することができる。多項式が1次式であれば、秘密計算システム10は、2つの座標(シェアに相当)を結ぶ直線と軸との交点から切片(元のデータに相当)を求めることができる。一方で、1つの座標からは直線が定まらないため、元のデータを復元することはできない。
【0028】
また、前述の通り、データ処理部12は、シェアを復元することなく元のデータに対し秘密計算を実行することができる。例えば、座標で表されたシェア同士を加算した結果は、各シェアの元のデータ同士を加算した結果のシェアに相当する。
【0029】
分析装置13は、端末装置40からの要求に応じて、データ処理部12に秘密計算による処理を実行させる。なお、データ処理部12又は端末装置40が、分析装置13と同等の機能を実現してもよい。例えば、分析システム1は、分析装置13を有さない構成であってもよい。その場合、端末装置40がデータ処理部12と接続され、分析装置13と同等の処理を実行する。さらに、シェアに基づく統計演算は、データ処理部12ではなく端末装置40によって実行されてもよい。
【0030】
第1の実施形態では、分析装置13が秘密計算により除算を行う場合の例を説明する。
【0031】
図2を用いて、分析装置13の構成を説明する。
図2は、実施形態に係る分析装置の構成例を示す図である。
【0032】
分析装置13の各部について説明する。
図2に示すように、分析装置13は、通信部131、入力部132、出力部133、記憶部134及び制御部135を有する。
【0033】
通信部131は、他の装置の間でデータの通信を行う。例えば、通信部131はNIC(Network Interface Card)である。通信部131は他の装置との間でデータの送受信を行うことができる。
【0034】
入力部132は、データの入力を受け付けるためのインタフェースである。入力部132は、例えばマウス及びキーボード等の入力装置と接続される。
【0035】
出力部133は、データを出力するためのインタフェースである。出力部133は、例えばディスプレイ及びスピーカ等の入力装置と接続される。
【0036】
記憶部134は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、光ディスク等の記憶装置である。なお、記憶部134は、RAM(Random Access Memory)、フラッシュメモリ、NVSRAM(Non Volatile Static Random Access Memory)等のデータを書き換え可能な半導体メモリであってもよい。記憶部134は、分析装置13で実行されるOS(Operating System)及び各種プログラムを記憶する。
【0037】
制御部135は、分析装置13全体を制御する。制御部135は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)等の電子回路や、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)等の集積回路である。また、制御部135は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、内部メモリを用いて各処理を実行する。
【0038】
制御部135は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部135は、取得部1351、計算部1352及び出力制御部1353を有する。
【0039】
取得部1351及び計算部1352は秘密計算による除算を行う。出力制御部1353は、除算の結果を出力する。
【0040】
取得部1351及び計算部1352が除算a/b(ただし、a及びbは実数)を計算する場合について説明する。aは第1の値である。また、bは第2の値である。また、取得部1351は、対数取得部及び指数取得部として機能する。
【0041】
まず、取得部1351は、aのシェア及びbのシェアを取得する。そして、取得部1351は、秘密計算の写像を用いて、aのシェアからaの対数値log(a)のシェアを取得する。また、取得部1351は、秘密計算の写像を用いて、bのシェアからbの対数値log(b)のシェアを取得する。
【0042】
秘密計算の写像は、関数f(x)の値を、xを隠したまま(シェアを復元することなく)計算表から取得する技術である。なお、計算表は、対数表及び指数表を含む。取得部1351は、秘密計算の写像を実行する。
【0043】
ここで、対数の底はe(ネイピア数)であるとする。ただし、対数の底は10等のe以外の値であってもよい。
【0044】
計算部1352は、秘密計算の減算によりlog(a)-log(b)のシェアを計算する。さらに、log(a)-log(b)のシェアを基に、指数表からlog(a)-log(b)、すなわちlog(a/b)の指数値のシェアを取得する。
【0045】
ここでは、a=5.04、b=3.15とする。この場合、取得部1351は、
図3に示す対数表を参照して各値の対数のシェアを取得することができる。
図3は、対数表の例を示す図である。
【0046】
取得部1351は、(1)式のようにlog(b)のシェアを取得する。また、取得部1351は、(2)式のようにlog(a)のシェアを取得する。
【0047】
【0048】
【0049】
そして、計算部1352は、(3)式のように秘密計算の減算log(a)-log(b)を計算することで、log(a/b)のシェアを得る。
【0050】
【0051】
さらに、取得部1351は、
図4に示す指数表を参照し、(4)式のようにlog(a/b)、すなわち0.4700の指数値である1.6000のシェアを取得する。
【0052】
【0053】
図5は、除算の流れを示すフローチャートである。
図5に示すように、分析装置13は、除算の対象の2つの値(割られる数と割る数)のシェアを取得する(ステップS101)。
【0054】
次に、分析装置13は、秘密計算の写像により、2つの値のシェアから、2つの値の対数値のシェアを取得する(ステップS102)。
【0055】
続いて、分析装置13は、秘密計算の減算により対数値の差のシェアを計算する(ステップS103)。そして、分析装置13は、秘密計算の写像により、差のシェアから指数値のシェアを取得する(ステップS104)。
【0056】
なお、分析装置13は、ステップS104で取得された差のシェアを復元することで、シェアではない状態で除算の解を得ることができる。
【0057】
[実施形態の効果]
これまで説明してきたように、分析装置13は、取得部1351、計算部1352及び出力制御部1353を有する。取得部1351は、秘密計算の写像により、第1の値の対数値のシェアと第2の値の対数値のシェアとを取得する。計算部1352は、秘密計算の減算により、第1の値の対数値のシェアと第2の値の対数値のシェアとの差を計算する。取得部1351は、秘密計算の写像により、差の指数値を取得する。
【0058】
本実施形態によれば、除算a/bをa×(1/b)に変換して近似値を求める方法に比べて、桁数の補正の必要性が低減され、秘密計算による除算を効率良く行うことができる。また、本実施形態によれば、変換表で桁数を予め調整することが可能となる。また、本実施形態によれば、減算で処理するため、入力値(a及びb)の制限を緩めることが可能となる。
【0059】
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU(Central Processing Unit)及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。なお、プログラムは、CPUだけでなく、GPU等の他のプロセッサによって実行されてもよい。
【0060】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0061】
[プログラム]
一実施形態として、分析装置13は、パッケージソフトウェアやオンラインソフトウェアとして上記の分析処理を実行する分析プログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記の分析プログラムを情報処理装置に実行させることにより、情報処理装置を分析装置13として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
【0062】
また、分析装置13は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記の分析処理に関するサービスを提供する分析サーバ装置として実装することもできる。例えば、分析サーバ装置は、除算の対象の2つの値a、bを入力とし、秘密計算により求めたa/bの近似値を出力とする分析サービスを提供するサーバ装置として実装される。
【0063】
図6は、分析プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0064】
メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0065】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、分析装置13の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、分析装置13における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0066】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020は、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した実施形態の処理を実行する。
【0067】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【符号の説明】
【0068】
1 分析システム
10 秘密計算システム
11 データ蓄積部
12 データ処理部
13 分析装置
131 通信部
132 入力部
133 出力部
134 記憶部
135 制御部
1351 取得部
1352 計算部
1353 出力制御部