📝
【技術】秘密計算とは

はじめに
本記事では、秘密計算という技術について紹介します。
秘密計算とは
秘密計算とは「データを暗号化したまま計算できる技術」です。秘密計算によって計算結果以外のデータは誰も見ることができないようになります。したがって、今まで機密であるがために提供されなかったデータを分析できるようになります。特に複数組織間でのデータを用いた統合分析において大きな力を発揮することが期待されています。
秘密計算方法の紹介
秘密計算の方法として主に3つの方法が存在します。
完全準同型暗号を用いる方法、TEEを用いる方法、MPCを用いる方法があります。それぞれについて簡単に解説をします。
完全準同型暗号を用いる方法

完全準同型暗号とは「暗号化したまま足し算と掛け算が行える暗号」です。完全準同型暗号の「準同型」は、ある操作をしてから足したり掛けたりしたデータが、足したり掛けたりしてからある操作をしたデータと同じである性質のことをいいます。
完全準同型暗号ではデータを暗号化したまま計算できるため、提供したデータ自体を第三者に知られることなく安全に計算ができます。上の図で言うと、組織A、Bが提供したデータを誰も知ることができません。もちろん、処理結果を復号する分析者も組織A、Bが提供したデータを知ることはできません。
完全準同型暗号は前提として、暗号化に用いる鍵を安全に管理しておく必要があります。逆に、鍵さえ厳重に管理していれば安全に計算を行うことが可能であると言えます。
「足し算と掛け算だけでデータを分析できるの?」と思ってしまいますが、足し算と掛け算ができるだけで計算機上では任意の処理を行うことができます。
足し算を暗号化したまま行うのは比較的簡単ですが、掛け算を暗号化したまま行うには複雑な操作が必要になり処理に時間がかかります。処理速度の効率化が進んではいるものの、完全準同型暗号は実用するにはまだ難しいと言われています。
TEEを用いる方法

TEEはTrusted Execution Environmentの略です。デバイスのメモリ上に暗号学的に保護された領域「Enclave」を構築し、その中で機密情報の計算を行うことが可能になります。保護された領域で計算を行うため、安全に計算を行えます。TEEの魅力として、保護された領域で暗号化せずに平文のまま計算を行えるため処理速度が速いことがあります。
魅力的に思えるTEEですが、サイドチャネル攻撃に弱いという弱点もあります。サイドチャネル攻撃とは、暗号を処理しているコンピュータの物理的な特性を外部から観察や測定を行うことで、内部情報の取得を試みる攻撃です。例えば、処理時間や消費電力の変化、外部に発生する電磁波、音、熱などを観測して情報を得ます。また、TEEの実装自体に脆弱性がある場合、安全に計算を行えないという一面もあります。
MPCを用いる方法

MPCはMulti-Party Computationの略で、MPCは複数のサーバが協力して計算を行う技術です。
まず、入力のデータa に「秘密分散」という特別な処理を施します。秘密分散によって生成された分散データx 、y 、z はそれぞれ秘密計算サーバに送信されます。この時それぞれのサーバの管理者は受け取ったデータから元の入力データや計算結果を求めることはできません。
秘密分散は完全準同型暗号などのように鍵を使って暗号化をするものではありません。詳しい説明はここでは省略しますが、秘密分散にも様々な方法があります。
例えば、秘密分散法の1つであるシャミアの秘密分散法は、n 次の多項式f(x) の切片k は多項式f(x) 上の点をn + 1 個集めないと求めることができないという性質が用いられています。このとき切片k が機密データであり、分散データは多項式上の点です。多項式f(x) 上の点一つからは切片k を求めることができないので、第三者に機密データ(切片k )を知られることなく安全に計算を行えます。
脱線しましたが、話を戻します。分散データが秘密計算サーバに分散された後、それぞれのサーバは受け取った分散データを使って、何らかの計算処理を行います。それぞれのサーバが計算した結果を設定された個数以上集めることで、計算結果を復元できます。
MPCは1980年代にその理論が確立されたものの、複数のサーバが大量にやりとりを行う必要があるため計算に時間がかかることが課題でした。しかし近年、処理の高速化が図られ実用化されています。
また、MPCは完全準同型暗号やTEEと違い複数人で協力して計算を行います。したがって、全ての参加者が正しく行動をすることが求められます。しかし、現実的に全ての参加者が正しい行動をとるという保証はないため、別途検証をする仕組みが必要になります。
まとめ
以上、秘密計算と秘密計算を行う3つの方法について解説しました。秘密計算は「データを暗号化したまま計算できる技術」であり、秘密計算を行う方法として、完全準同型暗号、TEE、MPCを用いる方法がありました。また、それぞれの方法にメリットとデメリットがあるので、使用用途に合わせて検討をする必要があります。