はじめに
昨今、EUのGDPRやカリフォルニア州のCCPA、我が国の改正個人情報保護法に見られるように、消費者のプライバシー保護のためのデータ活用規制が進んでいます。
こうした規制の背景には、人々の生活を豊かにする可能性を秘めるデータ活用について、そのプライバシー侵害への懸念もあります。
この「データ活用」と「プライバシー保護」のトレードオフを解決する技術として注目を集めているのが、秘密計算です。
秘密計算は、弊社Acompanyも研究・開発を進めている分野であり、その知名度向上を目指して取り組んでおります。
一方で、秘密計算技術への関心が高まるにつれ、企業のビジネスサイドの担当者様などから「秘密計算はどうして安全なのかいまいち分からない」という質問を多くいただくようになりました。
そこで本稿では、「そもそも安全とは?」という問いを起点に、秘密計算がどうして安全なのかを例を交えながら分かりやすく解説することを目指します。
本記事の構成は以下の通りです。
- 秘密計算とは
- 秘密計算が担保する「安全」とは
(注)今回取り上げる秘密計算とは、MPC+秘密分散法による秘密計算を指します。
秘密計算とは
秘密計算をひとことで説明すると、「計算時においても秘密情報を守ったままデータの分析を行う技術のこと」です。
従来の暗号化手法だと、データの分析をする際には暗号化されたデータを一時的に復号する(暗号化を元に戻す)必要があり、分析時にデータの漏洩・流出リスクがあります。
一方、秘密計算を用いれば復号することなくデータの分析ができるため、データの漏洩・流出リスクが非常に少ないというメリットがあります。
技術概要については以下の動画と記事を参照してください。
動画は秘密計算の技術について、短時間で概説しているのでぜひご覧ください。
https://acompany.tech/blog/secure_computing/
秘密計算が担保する「安全」とは?
弊社はよく「秘密計算はどうして安全なの?」という問いをいただきます。
この質問の意図は「どうやら秘密計算を使うと新たな事業や協業ができそうだが、安全である仕組みがよくわからない」というものだと考えられます。
ここでの懸念である、秘密計算における「安全」とは、データ分析の過程で秘密にしたい情報を外部に漏らさないことです。
その点において従来の方法が「安全」でないとする理由は、データを保護する仕組みにあります。
以下が一般的な鍵暗号方式による複数組織間でのデータ連携の手順です。
- データ分析結果を得たい企業は秘密データに鍵をかけ、委託先の分析機関等に送信する。
- 分析機関は、受け取ったデータと他の企業からのデータとを統合・計算するために、暗号化されたデータを一時的に復号する。
- 復号した生データを統合・計算して分析結果を出す。
ここで問題となるのは、2の過程で一時的にデータを復号して生データにすることです。
一時的に復号するため、サーバーが攻撃されてデータを盗まれると、機密情報もそのまま流出してしまいます。
一方、弊社が開発する秘密計算では、データを復号せずに計算や分析を行うことができます。
まず、プライバシー情報などの秘匿化したい情報を、「秘密分散」という手法を用いて断片(シェア)に分割してデータを無意味化し、その無意味化された断片を複数のサーバーで分散管理します。
機械学習や統計処理などの計算を行う際には、それぞれのサーバーで各断片に対して同時に計算を行い、計算結果の断片を生成します。
これらを集めて復号することで、分析結果が得られます。すべての断片を揃えなければ復号できないため、一部の断片が流出しても秘密情報は漏洩しません。
そのため、既存の暗号化手法ではデータを秘匿化できなかった分析時においても、暗号化したまま安全に計算を行えます。
年収の平均値計算を例に、秘密計算の仕組みを解説します。

たとえばX、Y、 Z さんの3名の年収の平均値を出したい場面を想定します。
年収は機微な情報ですので、各人の年収を他者に明らかにすることなく計算することが目標です。
まず、3名の年収の値をそれぞれ分割します。Xさんは200・300・500、Yさんは600・1000・1400、Zさんは700・800・500に分割します。
分割されて生成された「200」や「600」などの断片が、秘密計算の説明における「シェア」にあたります。
この断片を各人が保有するサーバーに1つずつ送信します。上図のように、各サーバーには3名の年収データの断片だけが3つずつ入っています。
そのため、サーバーのどれか一つの情報が外部に流出しても、3名の年収は漏洩しません。
このように秘密分散では各サーバーごとに分析を行うため、断片である「200」や「600」が漏洩したとしても、元データが外部に漏れることはありません。
また、今回の例ではデータを暗号化していませんが、計算結果が流出しても、他のサーバーで実行した計算結果全てが揃わない限り復号できないため、元データを知ることはできません。
まとめ
- 秘密計算はデータを暗号化して分析するため、元データの秘密情報を守ることができる。
- 元データをいくつかの暗号化した断片(シェア)に分割し、複数のサーバーで管理しているので、一部の断片が外部へ流出したとしも、断片(シェア)から元データを把握することができない。
- すべての断片(シェア)を揃えなければ復号できないため、一部の断片(シェア)が流出しても秘密情報は漏洩しない。