はじめに
先日、Acompany様の主催するConfidential Computing x LLM Ideathonというイベントに参加させていただきました。
自分は「秘密計算って何ぞや??」ぐらいの認識でいたのですが、わかりやすいレクチャーをAcampanyの方々がしてくださり、今回知ったことをアウトプットすべく記事を書きました!
この記事を読めば、「秘密計算ってこんな感じの技術なんやな~~」がなんとなくつかめるようになります。
数学的なところや安全性の担保方法は解説しないので、もっと詳しく書かれている記事や論文を参考にしてください。
筆者は秘密計算についてズブの素人です。
何か間違っていることがあればコメントで指摘していただけると嬉しいです!
自己紹介
はじめまして!愛知県でプログラマーをしている大学生のどきみきと申します!
最近はアプリ開発にドはまりしています。はまりすぎて単位が怪しい。
暗号学は何もわからず、数学のレベルは中学校で止まっているのでなんも分かりません![]()
そもそも秘密計算って何?
データを暗号化したまま、中身を見ずに計算処理ができる技術です。
なんで秘密計算したいの? / 秘密計算ができると何がうれしい?
秘密計算を用いることでサービス提供者に中身を知られることなくデータ処理を行わせることができます。
例を見てみましょう。
すごく機密で誰にも知られたくない情報をもつAさんがいます。
Aさんはこの情報をBサービスを使って解析がしたいです。
もちろん機密情報なのでHTTPSを使って経路を守り、中間者攻撃を防ぎます。

ですがどうでしょう。Aさんが秘密にしたがっていた情報は、Bサービスの管理者権限を奪取した攻撃者や、管理者権限を持つ内部犯が処理中のデータを覗くことで知れ渡ってしまいます。

そこで秘密計算の出番です。外部から処理内容を一切解読できないようにすることで、Bサービスへの直接攻撃による情報奪取を防ぐのはもちろん、内部犯による攻撃もできなくなるのです。

現実世界での使われ方としてはAcompany様のAutoPrivacy AI CleanRoomなどがあります。
このサービスは利用者がChatGPTやGeminiなどの生成AIへデータを投げる際、プロンプトを一度 AutoPrivacy AI CleanRoom を通して秘密計算環境で個人名や会社名などの機密情報をマスキングをするサービスです。
機密情報のマスキングを秘密計算環境で行うことによって管理者権限を持つ人でさえデータを盗めなくなり、利用者は情報漏洩を気にせずにAIを使うことができます。
秘密計算の種類
秘密計算の種類は主に3つあり、
- TEE(ハードウェア型)
- MPC(秘匿マルチパーティ計算)
- HE(準同型暗号)
が使われています。それぞれの特徴を表にすると、
| TEE(ハードウェア型) | MPC(マルチパーティ計算) | HE(準同型暗号) | |
|---|---|---|---|
| 説明 | ハードウェア上の安全な領域で処理を行うことで秘密計算を実現する | 複数の参加者がそれぞれ自身の入力値を秘匿したままで多入力関数の値のみを計算する | 入力を暗号化したまま計算を行い、出力を得ることができる |
| 使用例 | プロンプトをサービス提供者に知られることなく生成AIを使用する | 従業員の団体が各個人の年収を明かすことなくその団体内の最高年収を知る | 暗号化したまま電子マネーの残高を編集する |
今回はその中でも、TEE(Trusted Execution Environment)を用いた秘密計算について詳しく説明していきます。
TEE を解説
TEE(Trusted Execution Environment)は、日本語訳すると「信頼された実行環境」であり、CPU上で計算している内容を管理者でさえ見られないようにする技術です。詳しく見ていきましょう。
TEEを使うには、TEEを利用できる特別なCPUを用意する必要があります。
上の図にもある通り、TEEは「保護領域」と呼ばれる領域をCPU内に作り、その中でプログラムを実行していきます。
保護領域はすごく難しい数学の知識によって絶対に破られないことがわかっているので、それを安全性の基盤としているのがTEEです。
さらに、このTEEを使っているかどうかをユーザーが確認できる仕組みもあるんです。
それが「コンフィデンシャルコンピューティング」です。TEEを使っているもの同士で信頼をしあうことで、信頼の鎖(Chain)を繋げていき、最終的にユーザーは安心して機密情報を渡せるのです。
最後に
秘密計算、人間関係みたく複雑。
