Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS暗号コンピューティング - C3Rを使って暗号化したまま処理を実行

AWS暗号コンピューティング - C3Rを使って暗号化したまま処理を実行

機械学習の社会実装勉強会第23回 (https://machine-learning-workshop.connpass.com/event/283439/) の発表で使用した資料です。

More Decks by 西岡 賢一郎 (Kenichiro Nishioka)

Other Decks in Technology

Transcript

  1. 自己紹介 • 名前: 西岡 賢一郎 ◦ 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) ◦ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
  2. データエンハンスメント • 機械学習に限らず、より精度の高い分析をするためには、様々なデータを結合した い (データエンハンスメント) • しかし、自社データだけでなく他社のデータを結合するとなると、プライバシー保 護の観点でデータの取扱が極端に難しくなる • その問題を解決するために出てきた技術が、第22回勉強会で紹介したData

    Clean Room (参考: https://youtu.be/BwqSqnsZb_o) • 今回紹介する暗号コンピューティングは、Data Clean Roomのセキュリティレベル をさらに高める技術として使える データ提供するときに 個人情報をマスクできるかが課題 3rd Party 3rd Partyデータを用いて 詳細な分析ができる
  3. 機械学習視点 • 第三者データの結合にData Clean Roomというソリューションを使うことができる • ただし、第三者データを結合する時に使われるキーは、Data Clean Roomで丸められたり、 SELECTできなかったりするため、モデル作成に影響が生じる可能性がある

    • 暗号化したデータを結合に使うことはありえるが、暗号化したデータを演算する必要がある場面は 少ない • 暗号コンピューティング x 機械学習自体はまだまだ実務では使われていないのが現状 ◦ 機械学習に暗号化を組み込んだPrivacy-Preserving XGBoost Inferenceなども出てきている
  4. 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 準同型暗号スキーム向けの準同型回路を設計す るプロセスを簡素化するためのツール
  5. クリーンルーム用暗号コンピューティング (C3R) • 暗号化されたデータは、復号化されることなく暗号化されたまま処理が実行 される • 暗号化されたデータ ◦ できること ▪

    他データと結合するためのJOINのキーとして使う ▪ COUNT, COUNT(DISTINCT)とGROUP BYなどの集計 (条件あり) ◦ できないこと ▪ WHERE句やSUMやAVERAGEなどの集約関数の適用
  6. 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文で使用するために暗号化されていないカラム
  7. 3. Fingerprintカラム名の制限を緩和するかどうか • デフォルトでは、暗号化されたFingerprintカラムを利用して2つのテーブル を結合 ◦ Fingerprintカラムを暗号化するときに、共通秘密鍵とカラム名の組み合わせから作られた鍵 を利用する ◦ 異なるカラム名の場合、結合ができなくなる

    • Fingerprintカラム名の制御をなくす場合 ◦ すべてのFingerprintカラムに対して単一の鍵を使うこととなる ◦ 異なるFingerprintカラムで同じ値を導出してしまうこととなる ▪ 例:県名と市名が同じ場合、暗号化したあとも同じ値となる
  8. 4. Nullを保持するかどうか • Nullを他の値と同様に暗号化することで、データの保護レベルを高めること ができる • Nullを暗号化した場合 ◦ IS NULLなどが使用できなくなる

    ◦ GROUP BYでグループ化できる • 値がNullであることが元データの推定に使われることがある ◦ 例: ミドルネームカラムがNullの場合
  9. C3Rを使用した暗号コンピューティングの流れ • AWS Clean RoomsでCollborationを作成 (暗号化にcollaboration idが必要なので暗号化よりも前に 作成が必要) • ローカルで暗号化

    ◦ 共通鍵の作成 ◦ C3Rのjarファイルを使ってSchemaおよび暗号化されたカラムを含むデータの作成 (CSV, Parquet形式) • 暗号化されたカラムを含むデータをS3へ保存 • AWS Glue カタログを作成 • AWS Clean Roomsにテーブルを登録 出典: AWS Console ここで暗号化をする
  10. 参考: デモで実行したコマンド • 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 <collaboration id> \ --output=<暗号化後のcsv> # 暗号化されたカラムを含む csvを作成