(57)【特許請求の範囲】
【請求項１】
３台以上の秘密計算装置を含む秘密計算システムであって、
上記秘密計算装置は、
a, b, c, dを非負整数とし、aを2×2の分割表における第1行第1列の度数とし、bを上記分割表における第1行第2列の度数とし、cを上記分割表における第2行第1列の度数とし、dを上記分割表における第2行第2列の度数とし、[a], [b], [c], [d]をそれぞれ度数a, b, c, dの秘匿文とし、Nをa+b+c+d≦Nである上界とし、
a0+b0=a+b, c0+d0=c+d, a0+c0=a+c, b0+d0=b+dが成り立つ整数である基準度数の組(a0, b0, c0, d0)の秘匿文([a0], [b0], [c0], [d0])を計算する基準度数計算部と、
h0≦h1が成り立つ整数h0, h1を決定するパターン数決定部と、
i=h0, …, h1について、[ai]=[a0]+i, [bi]=[b0]-i, [ci]=[c0]-i, [di]=[d0]+iを計算して度数の組(ai, bi, ci, di)の秘匿文の集合S={([ai], [bi], [ci], [di])}iを求めるパターン計算部と、
を含むものである秘密計算システム。
【請求項２】
請求項１に記載の秘密計算システムであって、
上記基準度数計算部は、[a0]=0, [b0]=[b]+[a], [c0]=[c]+[a], [d0]=[d]-[a]を計算して上記秘匿文([a0], [b0], [c0], [d0])を求めるものであり、
上記パターン数決定部は、h0=0, h1=Nと決定するものである、
秘密計算システム。
【請求項３】
請求項１に記載の秘密計算システムであって、
min（・）は引数・中の最小値を表し、floor(・)は値・以下の最大の整数を表し、
上記基準度数計算部は、[e]=min([a], [d])を計算し、[a0]=[a]-[e], [b0]=[b]+[e], [c0]=[c]+[e], [d0]=[d]-[e]を計算して上記秘匿文([a0], [b0], [c0], [d0])を求めるものであり、
上記パターン数決定部は、h0=0, h1=floor(N/2)と決定するものである、
秘密計算システム。
【請求項４】
請求項１から３のいずれかに記載の秘密計算システムであって、
上記分割表は、変異の有無と特定疾患の発症の有無とで分類して数え上げたゲノム情報である、
秘密計算システム。
【請求項５】
a, b, c, dを非負整数とし、aを2×2の分割表における第1行第1列の度数とし、bを上記分割表における第1行第2列の度数とし、cを上記分割表における第2行第1列の度数とし、dを上記分割表における第2行第2列の度数とし、[a], [b], [c], [d]をそれぞれ度数a, b, c, dの秘匿文とし、Nをa+b+c+d≦Nである上界とし、
a0+b0=a+b, c0+d0=c+d, a0+c0=a+c, b0+d0=b+dが成り立つ整数である基準度数の組(a0,b0, c0, d0)の秘匿文([a0], [b0], [c0], [d0])を計算する基準度数計算部と、
h0≦h1が成り立つ整数h0, h1を決定するパターン数決定部と、
i=h0, …, h1について、[ai]=[a0]+i, [bi]=[b0]-i, [ci]=[c0]-i, [di]=[d0]+iを計算して度数の組(ai, bi, ci, di)の秘匿文の集合S={([ai], [bi], [ci], [di])}iを求めるパターン計算部と、
を含む秘密計算装置。
【請求項６】
a, b, c, dを非負整数とし、aを2×2の分割表における第1行第1列の度数とし、bを上記分割表における第1行第2列の度数とし、cを上記分割表における第2行第1列の度数とし、dを上記分割表における第2行第2列の度数とし、[a], [b], [c], [d]をそれぞれ度数a, b, c, dの秘匿文とし、Nをa+b+c+d≦Nである上界とし、
基準度数計算部が、a0+b0=a+b, c0+d0=c+d, a0+c0=a+c, b0+d0=b+dが成り立つ整数である基準度数の組(a0, b0, c0, d0)の秘匿文([a0], [b0], [c0], [d0])を計算し、
パターン数決定部が、h0≦h1が成り立つ整数h0, h1を決定し、
パターン計算部が、i=h0, …, h1について、[ai]=[a0]+i, [bi]=[b0]-i, [ci]=[c0]-i,[di]=[d0]+iを計算して度数の組(ai, bi, ci, di)の秘匿文の集合S={([ai], [bi], [ci], [di])}iを求める、
秘密計算方法。
【請求項７】
請求項５に記載の秘密計算装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、暗号応用技術に関し、特に、入力データを明かすことなくフィッシャー正確検定（Fisher's exact test）を計算する技術に関する。
【背景技術】
【０００２】
2×2の分割表として与えられた説明変数と目的変数との関連の有無に関して仮説検定を行う統計学的検定法の一つとして、フィッシャーの正確検定が広く知られている。非特許文献１には、フィッシャー正確検定の利用例として、ゲノムワイド関連解析（GWAS: Genome-Wide Association Study）が記載されている。【０００３】
フィッシャー正確検定について説明する。次表はn人の被験者を変異の有無と特定の疾患の発症の有無で分類および数え上げした2×2分割表の例である。【０００４】
【表１】
0006541048.tif 000002
a, b, c, dは度数を、n1●, n2●, n●1, n●2は小計を表し、n1●=a+b, n2●=c+d, n●1=a+c, n●2=b+dである。a, b, c, d, n1●, n2●, n●1, n●2はすべて非負整数である。【０００５】
このとき、非負整数iについて、式（１）で定義される確率piを計算し、式（２）に示す確率の和pと、有意水準と呼ばれる所定の値αとの大小関係により、説明変数（上表の例では変異の有無）と目的変数（上表の例では疾患の有無）との関連の有無を調査する。ここで、paは実際の集計値であるa, b, c, dを度数とする分割表について式（１）により算出した確率値である。【０００６】
【数１】
0006541048.tif 000003
【０００７】
暗号化された数値を復元すること無く特定の演算結果を得る方法として、秘密計算と呼ばれる方法がある（例えば非特許文献２参照）。非特許文献２の方法では、３つの秘密計算装置に数値の断片を分散させるという暗号化を行い、３つの秘密計算装置が協調計算を行うことにより、数値を復元すること無く、加減算、定数加算、乗算、定数倍、論理演算（否定、論理積、論理和、排他的論理和）、データ形式変換（整数、二進数）の結果を３つの秘密計算装置に分散された状態、すなわち暗号化されたまま保持させることができる。【０００８】
ゲノム情報の機微性や機密性から、ゲノム情報を暗号技術によって秘匿しつつゲノムワイド関連解析を行う先行研究がある（例えば非特許文献３参照）。非特許文献３ではゲノム情報を秘匿しつつカイ二乗検定を行う方法が提案されている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Konrad Karczewski, “How to do a GWAS”, Lecture note in GENE 210: Genomics and Personalized Medicine, 2015.
【非特許文献２】千田浩司、濱田浩気、五十嵐大、高橋克巳、“軽量検証可能3パーティ秘匿関数計算の再考”、CSS2010、2010
【非特許文献３】Yihua Zhang, Marina Blanton, and Ghada Almashaqbeh, “Secure distributed genome analysis for gwas and sequence comparison computation”, BMC medical informatics and decision making, Vol. 15, No. Suppl 5, p. S4, 2015.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来技術は各確率piの計算を行う際に、ai=i, bi=b+a-i, ci=c+a-i, di=d-a+iとして、bi≧0かつci≧0となる最大のiをi1とし、ai≧0かつdi≧0となる最小のiをi0とし、i0≦i≦i1を満たす各iについてpiを計算していた。このとき、i0, i1の値によって計算対象となる度数の組(ai, bi, ci, di)の数が判明するが、その数は入力値a, b, c, dを推測するための情報に利用できるため、入力を秘匿したまま計算対象となる度数の組(ai, bi, ci, di)の秘匿文{([ai], [bi], [ci], [di])}iを求めることができなかった。【００１１】
この発明の秘密計算技術は、上述のような点に鑑みて、フィッシャー正確検定を秘密計算により効率よく計算することを目的とする。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために、この発明の秘密計算システムは、３台以上の秘密計算装置を含む秘密計算システムであって、秘密計算装置は、a, b, c, dを非負整数とし、aを2×2の分割表における第1行第1列の度数とし、bを上記分割表における第1行第2列の度数とし、cを上記分割表における第2行第1列の度数とし、dを上記分割表における第2行第2列の度数とし、[a], [b], [c], [d]をそれぞれ度数a, b, c, dの秘匿文とし、Nをa+b+c+d≦Nである上界とし、a0+b0=a+b, c0+d0=c+d, a0+c0=a+c, b0+d0=b+dが成り立つ整数である基準度数の組(a0, b0, c0, d0)の秘匿文([a0], [b0], [c0], [d0])を計算する基準度数計算部と、h0≦h1が成り立つ整数h0, h1を決定するパターン数決定部と、i=h0, …, h1について、[ai]=[a0]+i, [bi]=[b0]-i, [ci]=[c0]-i, [di]=[d0]+iを計算して度数の組(ai, bi,ci, di)の秘匿文の集合S={([ai], [bi], [ci], [di])}iを求めるパターン計算部と、を含むものである。
【発明の効果】
【００１３】
この発明によれば、フィッシャー正確検定の計算対象となる度数の組(ai, bi, ci, di)の数を明かすことなく、出力する秘匿文の集合S={([ai], [bi], [ci], [di])}iの要素数を小さくしながら、度数の組(ai, bi, ci, di)を列挙することができる。したがって、フィッシャー正確検定を秘密計算により効率よく計算することができる。具体的には、計算リソースの使用量の削減や処理時間を1/2程度に削減する効果が期待できる。さらには、ゲノム情報を秘匿しつつフィッシャー正確検定を実行することができる。これは例えば、複数の研究機関が所持するゲノムデータを秘匿したまま相互に開示することなく、統合されたデータのフィッシャー正確検定の実行結果を得ることができ、極めてセキュリティレベルの高いゲノム解析の実行環境の提供、ひいては医療の更なる発展へとつながることが期待できる。
【図面の簡単な説明】
【００１４】
【図１】図１は、秘密計算システムの機能構成を例示する図である。
【図２】図２は、秘密計算装置の機能構成を例示する図である。
【図３】図３は、秘密計算方法の処理手続きを例示する図である。
【発明を実施するための形態】
【００１５】
実施形態の説明に先立ち、この明細書における表記方法について説明する。
【００１６】
＜表記方法＞
ある値aを暗号化や秘密分散などにより秘匿化した値をaの秘匿文と呼び、[a]と表記する。また、aを[a]の平文と呼ぶ。秘匿化が秘密分散である場合は、[a]により各パーティが持つ秘密分散の断片の集合を参照する。
【００１７】
以下、この発明の実施の形態について詳細に説明する。なお、図面中において同じ機能を有する構成部には同じ番号を付し、重複説明を省略する。
【００１８】
＜第一実施形態＞
第一実施形態の秘密計算システムは、図１に例示するように、n（≧3）台の秘密計算装置１1, …, １nを含む。この実施形態では、秘密計算装置１1, …, １nはそれぞれ通信網２へ接続される。通信網２は、秘密計算装置１1, …, １nそれぞれが相互に通信可能なように構成された回線交換方式もしくはパケット交換方式の通信網であり、例えばインターネットやLAN（Local Area Network）、WAN（Wide Area Network）などを用いることができる。なお、各装置は必ずしも通信網２を介してオンラインで通信可能である必要はない。例えば、秘密計算装置１i（i∈{1, …, n}）へ入力する情報を磁気テープやUSBメモリなどの可搬型記録媒体に記憶し、その可搬型記録媒体からオフラインで入力するように構成してもよい。
【００１９】
秘密計算装置１は、図２に例示するように、入力部１１、基準度数計算部１２、パターン数決定部１３、パターン計算部１４、および出力部１５を含む。この秘密計算装置１が、図３に例示する各ステップの処理を行うことにより第一実施形態の秘密計算方法が実現される。
【００２０】
秘密計算装置１は、例えば、中央演算処理装置（CPU: Central Processing Unit）、主記憶装置（RAM: Random Access Memory）などを有する公知又は専用のコンピュータに特別なプログラムが読み込まれて構成された特別な装置である。秘密計算装置１は、例えば、中央演算処理装置の制御のもとで各処理を実行する。秘密計算装置１に入力されたデータや各処理で得られたデータは、例えば、主記憶装置に格納され、主記憶装置に格納されたデータは必要に応じて中央演算処理装置へ読み出されて他の処理に利用される。秘密計算装置１の各処理部は、少なくとも一部が集積回路等のハードウェアによって構成されていてもよい。
【００２１】
図３を参照して、第一実施形態の秘密計算方法の処理手続きを説明する。
【００２２】
ステップＳ１１において、入力部１１へ、2×2分割表の度数の組(a, b, c, d)の秘匿文([a], [b], [c], [d])と、a+b+c+d≦Nを満たす上界Nとが入力される。ここで、2×2分割表は次式で定義され、a, b, c, dは非負整数である。
【００２３】
【表２】
0006541048.tif 000004
【００２４】
ステップＳ１２において、基準度数計算部１２は、度数の組(a, b, c, d)の秘匿文([a], [b], [c], [d])を用いて、次式が成り立つ整数の組(a0, b0, c0, d0)の秘匿文([a0], [b0], [c0], [d0])を計算する。以下、a0, b0, c0, d0を基準度数と呼ぶ。
a0+b0=a+b,
c0+d0=c+d,
a0+c0=a+c,
b0+d0=b+d
【００２５】
例えば、基準度数計算部１２は、次式を計算して基準度数の組(a0, b0, c0, d0)の秘匿文([a0], [b0], [c0], [d0])を求めればよい。
[a0]=0,
[b0]=[b]+[a],
[c0]=[c]+[a],
[d0]=[d]-[a]
【００２６】
ステップＳ１３において、パターン数決定部１３は、h0≦h1が成り立つ整数h0, h1を決定する。ここでは、例えば、h0=0, h1=Nに決定する。
【００２７】
ステップＳ１４において、パターン計算部１４は、h0以上h1以下の各整数iについて、次式を計算して度数の組(ai, bi, ci, di)の秘匿文([ai], [bi], [ci], [di])を求める。
[ai]=[a0]+i,
[bi]=[b0]-i,
[ci]=[c0]-i,
[di]=[d0]+i
【００２８】
ステップＳ１５において、出力部１５から、(h1-h0+1)個の度数の組(ai, bi, ci, di)の秘匿文の集合S={([ai], [bi], [ci], [di])}i=h0,…,h1が出力される。
【００２９】
集合Sは、a'≧0, b'≧0, c'≧0, d'≧0, a'+b'=a+b, c'+d'=c+d, a'+c'=a+c, b'+d'=b+dを満たすすべての整数の組(a', b', c', d')に対して、a'=aj, b'=bj, c'=cj, d'=djを満たすただ一つのj∈{h0, …, h1}が存在する集合である。すなわち、与えられたa, b, c, dに対して、分割表の小計が変化しないように各値を変化させたすべての非負整数の組が重複なく含まれる集合となっている。このとき、集合Sには、分割表の小計が等しくなる整数（負の整数を含む）の組が含まれていてもよい。
【００３０】
第一実施形態の秘密計算技術によれば、出力される集合Sに含まれる度数の組の秘匿文の数が公開値Nにより定まるため、与えられた度数a, b, c, dを推測することができない。これにより、入力を秘匿したままフィッシャー正確検定の計算対象となる度数の組を列挙することができる。
【００３１】
＜第二実施形態＞
図３を参照して、第二実施形態の秘密計算方法の処理手続きを説明する。以下では、上述の第一実施形態との相違点を中心に説明する。
【００３２】
ステップＳ１２において、基準度数計算部１２は、[e]=min([a], [d])を計算する。ここで、min(・)は引数中の最小値を出力する関数である。すなわち、値を秘匿したまま[a]と[d]とを比較し、値が小さい方の秘匿文を[e]とする。続いて、基準度数計算部１２は、次式を計算して基準度数の組(a0, b0, c0, d0)の秘匿文([a0], [b0], [c0], [d0])を求める。
[a0]=[a]-[e], 
[b0]=[b]+[e], 
[c0]=[c]+[e], 
[d0]=[d]-[e]
【００３３】
ステップＳ１３において、パターン数決定部１３は、h0=0, h1=floor(N/2)を計算して整数h0, h1を決定する。ここで、floor(・)は・以下の最大の整数を出力する床関数である。すなわち、h1は次式で表すことができる。
【００３４】
【数２】
0006541048.tif 000005
【００３５】
ステップＳ１４において、パターン計算部１４は、上述のように求めた基準度数の組(a0, b0, c0, d0)の秘匿文([a0], [b0], [c0], [d0])および整数h0, h1を用いて、第一実施形態と同様に、度数の組(ai, bi, ci, di)の秘匿文([ai], [bi], [ci], [di])を求める。
【００３６】
第二実施形態の秘密計算技術によれば、第一実施形態と同様に、出力される集合Sに含まれる度数の組の秘匿文の数が公開値Nにより定まるため、与えられた度数a, b, c, dを推測することができない。第一実施形態と比較して、集合Sに含まれる度数の組の秘匿文の数がより小さくなるため、より効率的にフィッシャー正確検定を計算することができるようになる。
【００３７】
上述のように構成することにより、この発明の秘密計算技術によれば、計算対象となる度数の組(a, b, c, d)の数を明かすことなく、計算対象となるすべての度数の組を列挙することができ、入力の情報を明かさずに秘密計算によりフィッシャー正確検定を効率的に計算することができる。
【００３８】
以上、この発明の実施の形態について説明したが、具体的な構成は、これらの実施の形態に限られるものではなく、この発明の趣旨を逸脱しない範囲で適宜設計の変更等があっても、この発明に含まれることはいうまでもない。実施の形態において説明した各種の処理は、記載の順に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。
【００３９】
［プログラム、記録媒体］
上記実施形態で説明した各装置における各種の処理機能をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記各装置における各種の処理機能がコンピュータ上で実現される。
【００４０】
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよい。
【００４１】
また、このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
【００４２】
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００４３】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【００４４】
上述のゲノムワイド関連解析への応用結果から明らかなように、この発明の秘密計算技術は、フィッシャー正確検定を利用した解析、例えば、ゲノムワイド関連解析、ゲノム分析、臨床研究、社会調査、学術研究、実験結果の分析、マーケティング調査、統計計算、医療情報分析、顧客情報分析、売り上げ分析において、集計表の情報を秘匿したまま秘密計算によりフィッシャー正確検定を行うことに適用することが可能である。
【図１】
0006541048.tif 000006
【図２】
0006541048.tif 000007
【図３】
0006541048.tif 000008