Slide 1

Slide 1 text

AWS暗号コンピューティング C3Rを使って暗号化したまま処理を実行 2023/05/27 第23回勉強会

Slide 2

Slide 2 text

自己紹介 ● 名前: 西岡 賢一郎 ○ Twitter: @ken_nishi ○ note: 西岡賢一郎@研究者から経営者へ (https://note.com/kenichiro) ○ YouTube: 【経営xデータサイエンスx開発】西岡 賢一郎のチャンネル (https://www.youtube.com/channel/UCpiskjqLv1AJg64jFCQIyBg) ● 経歴 ○ 東京大学で位置予測アルゴリズムを研究し博士 (学術) を取得 ○ 東京大学の博士課程在学中にデータサイエンスをもとにしたサービスを提供する株式会社ト ライディアを設立 ○ トライディアを別のIT会社に売却し、CTOとして3年半務め、2021年10月末にCTOを退職 ○ CDPのスタートアップ (Sr. PdM)・株式会社データインフォームド (CEO)・株式会社ディース タッツ (CTO) ○ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験

Slide 3

Slide 3 text

本日のお話 ● 機械学習と暗号コンピューティング ● AWS暗号コンピューティング ● クリーンルーム用暗号コンピューティング (C3R) ● C3Rを使ったデータ暗号化のデモ

Slide 4

Slide 4 text

機械学習と暗号コンピューティング

Slide 5

Slide 5 text

データエンハンスメント ● 機械学習に限らず、より精度の高い分析をするためには、様々なデータを結合した い (データエンハンスメント) ● しかし、自社データだけでなく他社のデータを結合するとなると、プライバシー保 護の観点でデータの取扱が極端に難しくなる ● その問題を解決するために出てきた技術が、第22回勉強会で紹介したData Clean Room (参考: https://youtu.be/BwqSqnsZb_o) ● 今回紹介する暗号コンピューティングは、Data Clean Roomのセキュリティレベル をさらに高める技術として使える データ提供するときに 個人情報をマスクできるかが課題 3rd Party 3rd Partyデータを用いて 詳細な分析ができる

Slide 6

Slide 6 text

Data Clean Roomで安全に結合し分析 ● ローデータを分析者に公開することなく結合 (ここでは結合キーをPIDとしている) し、分析できる環境を提供 ● 集計結果に制約を設けることで、個人情報漏洩のリスクを下げることが可能 (完璧に防げるわけではない) ● 個人情報の第三者提供をくぐり抜けるための銀の弾丸ではない Data Clean Roomの分析イメージ

Slide 7

Slide 7 text

暗号コンピューティングを使いたい場面 ● Data Clean Roomを利用する時、自社データをクラウド環境に置く必要がある ● 設定ミスなどでデータが漏洩した場合に備えて、社外にデータを置く場合は暗号化 したい (暗号化の対象はPIDに限らない)

Slide 8

Slide 8 text

機械学習視点 ● 第三者データの結合にData Clean Roomというソリューションを使うことができる ● ただし、第三者データを結合する時に使われるキーは、Data Clean Roomで丸められたり、 SELECTできなかったりするため、モデル作成に影響が生じる可能性がある ● 暗号化したデータを結合に使うことはありえるが、暗号化したデータを演算する必要がある場面は 少ない ● 暗号コンピューティング x 機械学習自体はまだまだ実務では使われていないのが現状 ○ 機械学習に暗号化を組み込んだPrivacy-Preserving XGBoost Inferenceなども出てきている

Slide 9

Slide 9 text

AWS暗号コンピューティング

Slide 10

Slide 10 text

AWS暗号コンピューティング ● 「暗号コンピューティングは単一のものではありません。むしろ、使用中の データを保護するための方法論であり、機密データを他人に知られることな く計算するための一連の技術なのです。」Bill Horne, Principal Product Manager, AWS Cryptography (出典: Amazon Web Services ブログ) ● オープンソースツールを提供 (AWS 暗号コンピューティング) ○ クリーンルーム用暗号コンピューティング (C3R): 秘匿性を維持したままその入力に対して 合同で関数を計算する技術を提供するライブラリ ← 今回紹介する内容 ○ Privacy Preserving XGBoost Inference: プライバシー保護 XGBoost のプロトタイプ ○ Lattigo 準同型暗号ライブラリの C++ バインディング: 準同型暗号ライブラリの部分的な C++ バインディング ○ Homomorphic Implementor’s Toolkit: CKKS 準同型暗号スキーム向けの準同型回路を設計す るプロセスを簡素化するためのツール

Slide 11

Slide 11 text

クリーンルーム用暗号コンピューティング (C3R)

Slide 12

Slide 12 text

クリーンルーム用暗号コンピューティング (C3R) ● 暗号化されたデータは、復号化されることなく暗号化されたまま処理が実行 される ● 暗号化されたデータ ○ できること ■ 他データと結合するためのJOINのキーとして使う ■ COUNT, COUNT(DISTINCT)とGROUP BYなどの集計 (条件あり) ○ できないこと ■ WHERE句やSUMやAVERAGEなどの集約関数の適用

Slide 13

Slide 13 text

C3Rのカラムの種類 ● Fingerprintカラム ○ JOINなどで使用するために暗号的に保護されているカラム ○ HMACによる保護 ○ 使用可能な構文 ■ 他のFingerprintカラムとJOINまたはINNER JOIN ■ SELECT COUNT() ■ SELECT COUNT(DISTINCT ) ■ GROUP BY (NULLの保持が許可されている場合のみ) ● sealedカラム ○ SELECT文で使用するために暗号化されたカラム ○ AES-GCMによる保護 ○ 使用可能な構文 ■ SELECT ■ SELECT ... AS ■ SELECT COUNT() ● cleartextカラム ○ JOIN文やSELECT文で使用するために暗号化されていないカラム

Slide 14

Slide 14 text

Fingerprintカラムが保護される仕組み AWS Clean Rooms上でFingerprintカラムが漏洩しないような保護が行われる ● 第三者とのデータの結合には、Fingerprintカラムを暗号化したまま使う ● Fingerprintカラムを直接SELECTすることはできない ● どのデータが結合されたかを使用者は知ることができない ● 集計結果がしきい値以下の場合は削除

Slide 15

Slide 15 text

AWS Clean Roomsの特徴 ● 自分AWSを含め最大で5つのAWSアカウントでデータの連携が可能 ● クエリの実行および結果の受け取りができるのは1つのAWSアカウントのみ ● 集計結果に対して最小閾値を設定し、少ない集計結果による元データの推定 を防ぐ事が可能 ● 自分が開始したクエリと自分のデータを含むクエリのログを受け取り可能 ● 暗号コンピューティングにより、データを暗号化したまま保存・転送・処理 が可能

Slide 16

Slide 16 text

データの保護レベルの4つのトレードオフ ● データの保護レベルと利便性はトレードオフとなる ● トレードオフとして考えられるもの 1. cleartextの混在を許可するかどうか 2. Fingerprintカラムの重複を許可するかどうか 3. Fingerprintカラム名の制限を緩和するかどうか 4. Nullを保持するかどうか

Slide 17

Slide 17 text

1. cleartextの混在を許可するかどうか ● すべてのカラムを暗号化すると、データを最大限に保護することができる ● 一方で、暗号化されたデータはSUMなどの集計関数などが使えなくなるとい う欠点がある ● データを暗号化しても、cleartextカラムから元データを推定できる可能性が ある ○ 例: 県を暗号化して、市を暗号化していない場合

Slide 18

Slide 18 text

2. Fingerprintカラムの重複を許可するかどうか ● Fingerprintカラムがすべてユニークな値である場合、C3Rによって暗号化さ れた値から元の値を推測することは不可能 ● ただし、分析によっては、Fingerprintカラムで重複を許さないといけない場 合が出てくる ● 重複を許す場合、統計的推定により、元のカラムを推定される可能性がある ○ 例: 暗号化された地域データで、データ数の違いによって地域を推定

Slide 19

Slide 19 text

3. Fingerprintカラム名の制限を緩和するかどうか ● デフォルトでは、暗号化されたFingerprintカラムを利用して2つのテーブル を結合 ○ Fingerprintカラムを暗号化するときに、共通秘密鍵とカラム名の組み合わせから作られた鍵 を利用する ○ 異なるカラム名の場合、結合ができなくなる ● Fingerprintカラム名の制御をなくす場合 ○ すべてのFingerprintカラムに対して単一の鍵を使うこととなる ○ 異なるFingerprintカラムで同じ値を導出してしまうこととなる ■ 例:県名と市名が同じ場合、暗号化したあとも同じ値となる

Slide 20

Slide 20 text

4. Nullを保持するかどうか ● Nullを他の値と同様に暗号化することで、データの保護レベルを高めること ができる ● Nullを暗号化した場合 ○ IS NULLなどが使用できなくなる ○ GROUP BYでグループ化できる ● 値がNullであることが元データの推定に使われることがある ○ 例: ミドルネームカラムがNullの場合

Slide 21

Slide 21 text

C3Rを使用した暗号コンピューティングの流れ ● AWS Clean RoomsでCollborationを作成 (暗号化にcollaboration idが必要なので暗号化よりも前に 作成が必要) ● ローカルで暗号化 ○ 共通鍵の作成 ○ C3Rのjarファイルを使ってSchemaおよび暗号化されたカラムを含むデータの作成 (CSV, Parquet形式) ● 暗号化されたカラムを含むデータをS3へ保存 ● AWS Glue カタログを作成 ● AWS Clean Roomsにテーブルを登録 出典: AWS Console ここで暗号化をする

Slide 22

Slide 22 text

デモ: C3Rを使ったデータ暗号化 GitHubにあるC3Rを使ってテーブルデータを暗号化するまでのフローを紹介 ● インタラクティブモードを使ったschema定義のJSON作成 ● 暗号化に利用する共通鍵の作成 ● テーブルデータの暗号化

Slide 23

Slide 23 text

参考: デモで実行したコマンド ● wget https://github.com/aws/c3r/releases/download/1.1.3/c3r-cli-1.1.3.jar # C3Rをダウンロード ● java -jar c3r-cli-1.1.3.jar -h # 使用可能なコマンドの確認 ● java -jar c3r-cli-1.1.3.jar schema -i <暗号化前のcsv> # schema jsonの作成 ● openssl rand 32 > secret.key # 共通鍵の作成 ● export C3R_SHARED_SECRET="$(cat secret.key | base64)" # 共通鍵を環境変数に格納 ● java -jar c3r-cli-1.1.3.jar \ encrypt <暗号化前のcsv> \ --schema=<暗号化前のcsv>.json \ --id \ --output=<暗号化後のcsv> # 暗号化されたカラムを含む csvを作成