秘密分散型のプロダクトを開発するベンチャーをまとめてみた。

## 概要
弊社で開かれた学習会で、弊社リサーチエンジニアが発表した、**秘密分散型**の**暗号技術**を展開する「**世界のテックベンチャー**」についてまとめました。

以下の論文を参考にしました。
参考文献：[From Keys to Databases – Real-World Applications of Secure
Multi-Party Computation](https://eprint.iacr.org/2018/450.pdf)

<img width="943" alt="Screen Shot 2019-11-15 at 10.00.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/4d368013-dbd5-f580-b66c-e2831b039dca.png">



まず、**秘密分散**の使い所として、二つの例が出てきます。

- **鍵管理**
- **秘密計算による分析**

です。
<img width="1035" alt="Screen Shot 2019-11-14 at 22.20.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/6cb54599-679e-64cc-542e-a6e471c73437.png">


鍵管理に関しては、鍵を一つのサーバーに置いておくのはリスクが大きく、そこがアタックされた場合に鍵が盗まれてしまう。という問題に焦点を当てたものです。(**single point of failure**)

秘密計算に関しては、データ所有者が**第三者に計算分析を委託したい**、というシナリオのもとで、計算は任せたいが機密なデータを見て欲しくない。ジレンマに焦点を当てています。

**一つのサーバーに鍵管理**を任せたり、**計算を委託する**場合は上のスライドでは**ハードウェアタイプ**と書いてあり、アタックされたときの影響が著しく、マネジメントにお金がかかる、というデメリットはありますが、実際多くの企業では一つのサーバーを用意し、鍵生成から管理までを一括してそのサーバで行うことが多いようです。

**秘密分散型の鍵管理**では、**複数のサーバに鍵を分散して置く**ため、一つのサーバが仮にアタックされても鍵が漏洩することはない、つまりリスク分散を行うことができる反面、そのシステム構築に高い専門性が求められ、まだスケールしていない技術なようです。


<img width="1014" alt="Screen Shot 2019-11-14 at 22.22.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/a0baec5f-bd63-b381-3eee-4b1c57d99efe.png">


上記のようにパーティは
**データ所有者**、
データを分析したり、鍵管理をした際にそれらを**受け取りたい人**
**分散サーバ**

の三つからなります。


<img width="1036" alt="Screen Shot 2019-11-14 at 22.22.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/6ac42944-57aa-e104-c994-be3858e0e0eb.png">

先程書いたように、ハードウェアタイプでは**HSM**が使われ、乱数の生成から鍵管理までを担います。問題点としては、やはりその**高いマネジメントコスト**です。



今回は、**秘密分散型のアプローチ**をとり、これらの問題を解決しようとする「世界のベンチャーのプロダクト」についてまとめます。

<img width="999" alt="Screen Shot 2019-11-15 at 17.21.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/0a52b9b2-0a5a-77f3-f03c-0b4ce619485d.png">



まず、アメリカの**Galois Inc**  が開発する **Jana** は、秘密分散型のデータベースサービスです。
データ所有者側が機密性の高いデータをデータベースに格納したい場合、機密性の高いカラムのデータだけ、**SPDZ** という秘密分散型の計算を行うオープンライブラリで分散、保管しています。

<img width="1022" alt="Screen Shot 2019-11-14 at 22.22.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/ce8ac170-3f0f-cb64-4e02-eef8911365d6.png">

検索結果を受け取りたいパーティがクエリをこのサービスに投げたとき、サービスがそのクエリを分析し、機密なカラムに関係したクエリかどうか、また関係した場合、どのようなオペレーションなのかをチェックします。

<img width="1061" alt="Screen Shot 2019-11-14 at 22.22.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/c39d6864-29ef-fee3-9101-85d96e83a5ab.png">

機密なクエリに関係しない場合は普通にそのまま結果を送り返しますが、
もし関係した場合、そのオペレーションをspdzを使ってオペレーションします。複数サーバで機密カラムに対してクエリが行われたあと、結果が返されます。

<img width="1056" alt="Screen Shot 2019-11-14 at 22.22.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/32295cdc-a864-8262-0db7-b5db36852ea1.png">


上記のとおり、秘密分散を施した機密カラムに対しても、通常使うようなSQLオペレーションに対応しています。


<img width="1055" alt="Screen Shot 2019-11-14 at 22.22.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/0ca6a970-6dd3-3cb2-464b-d8958b23bc5c.png">


次は、エストニアのベンチャー**Cybernetica**が提供する**Sharemind**です。
こちらは秘密分散型のデータ分析サービスを展開しています。janaのようにオープンソースのライブラリspdzを用いるのではなく、自社で開発したライブラリを用いているところが主な違いでしょうか。また、データベースのような簡単な処理というよりも、もっと複雑な統計処理などに特化したエンジンなようなので、分析という意味では自由度が非常に高いようです。
<img width="989" alt="Screen Shot 2019-11-14 at 22.23.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/e0857fd5-cfe3-3a3e-d0e6-d243a651e59a.png">


実際に企業のkpiを秘密分散型で計算したり、税金と教育のデータを元にしたデータ分析などを行なっているようです。

<img width="982" alt="Screen Shot 2019-11-14 at 22.30.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/976c22fd-e83d-9ace-7f1e-40d1d6260fa2.png">

**Partisia&Sepior**  というデンマークベースのベンチャー企業では、ATSというプロダクトにて
1. 売り手と買い手のマッチングサービス
2. 統計計算
3. 金融のデータを共有して統計計算
など、スケーラブルな秘密計算のインフラを開発することを目的としているようです。
また、分散型と非中央集権型という意味で相性のいい、ブロックチェーンとのコラボレーションも進めているようです。

<img width="979" alt="Screen Shot 2019-11-14 at 22.30.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/935cef00-ad86-24f1-54fb-ee20b4abc15d.png">

最後に、イスラエルをベースとした**Unbound Technology**は、
機密なデータの保管や活用を分散型で解決する**vHSM**というプロダクトを開発しており、APIを使うことで分散型での演算を可能にしているということです。


## まとめ

<img width="980" alt="Screen Shot 2019-11-14 at 22.31.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519792/0e8a2921-73bf-e5c9-36e9-ff8e1c03ba33.png">

1. データシェアリングという意味でも、リスク低減という意味でも、秘密分散はユーザに対して効果的なソリューションとなりうる。
2. データベースや鍵管理システムとして用いられることも多いし、機密データの分析にも活用することができる。
3. Jana, Sharmind, Partisia, vHSMなど、世界から様々なベンチャーが分散型のサービスを展開し始めている。

弊社は現在のところ**秘密分散型**ではなく、**準同型暗号**を用いた秘密計算に焦点をあてて研究開発を行なっていますが、研究分野では**準同型暗号と秘密分散を組み合わせたハイブリッド型**のアプリケーションが最先端の技術としてあり、それらはお互いの良いところを組み合わせています。
弊社でもハイブリッド型で**暗号化したデータの決定木による不正検知**を開発した事例がありますが、まだまだ分散型に対する知識は少ないのが現状です。これから分散型のライブラリなども勉強をし、研究界隈のハイブリッド型のようなアプローチがもっと取れるよう、頑張っていきたいと思います。


もし参考になった、秘密計算面白そう、興味がある！というかたは「いいね」や「コメント」よろしくお願いいたします！！