Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS暗号コンピューティング - C3Rを使って暗号化したまま処理を実行
Search
西岡 賢一郎 (Kenichiro Nishioka)
May 27, 2023
Technology
0
190
AWS暗号コンピューティング - C3Rを使って暗号化したまま処理を実行
機械学習の社会実装勉強会第23回 (
https://machine-learning-workshop.connpass.com/event/283439/
) の発表で使用した資料です。
西岡 賢一郎 (Kenichiro Nishioka)
May 27, 2023
Tweet
Share
More Decks by 西岡 賢一郎 (Kenichiro Nishioka)
See All by 西岡 賢一郎 (Kenichiro Nishioka)
LLMアプリケーションで使用するVector Databaseの比較
knishioka
0
130
LLMアプリケーションの デバッグ・テスト・評価・監視を楽にするLangSmith
knishioka
0
120
LangChainから学ぶプロンプトエンジニアリングテクニック
knishioka
0
130
チャット履歴と質問を組み合わせLLMの回答精度を高めるLangChain Conversational Retrieval QA
knishioka
0
390
LangChain RetrievalQAとChatGPTでQAツールを作る
knishioka
1
350
LangChainのDocument機能を使って文書処理を柔軟にする
knishioka
0
600
LangChain Agentを使って自社ツールとChatGPTを連携
knishioka
0
280
LLMを使ったサービス開発必須ライブリ 「LangChain」の基礎
knishioka
0
120
データの品質を管理するAWS Glue Data Quality
knishioka
0
70
Other Decks in Technology
See All in Technology
ユーザーストーリーのレビューを自動化したみたの
bun913
1
410
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
200
コンテナセキュリティの基本と脅威への対策
kyohmizu
3
750
On Your Data を超えていく!
hirotomotaguchi
2
660
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
500
Janus
bkuhlmann
1
490
Azure犬駆動開発の記録/GlobalAzureFukuoka2024_20240420
nina01
1
210
ServiceNow Knowledge 24の歩き方 EYストラテジー・アンド・コンサルティング
manarobot
0
190
KubeCon EU 2024 Recap “Kubernetes Policy Time Machine: Where to Next?”
ryysud
0
210
MapLibreとAmazon Location Service
dayjournal
1
150
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
2
1k
一生覚えておきたい「システム開発=コミュニケーション」〜初めての実務案件振り返りLT〜
maimyyym
0
120
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
648
58k
Art, The Web, and Tiny UX
lynnandtonic
289
19k
GraphQLとの向き合い方2022年版
quramy
32
12k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
116
18k
Designing Experiences People Love
moore
136
23k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
GitHub's CSS Performance
jonrohan
1025
450k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
30
6k
Code Reviewing Like a Champion
maltzj
514
39k
Teambox: Starting and Learning
jrom
128
8.4k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Transcript
AWS暗号コンピューティング C3Rを使って暗号化したまま処理を実行 2023/05/27 第23回勉強会
自己紹介 • 名前: 西岡 賢一郎 ◦ 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) ◦ 自社および他社のプロダクト開発チーム・データサイエンスチームの立ち上げ経験
本日のお話 • 機械学習と暗号コンピューティング • AWS暗号コンピューティング • クリーンルーム用暗号コンピューティング (C3R) • C3Rを使ったデータ暗号化のデモ
機械学習と暗号コンピューティング
データエンハンスメント • 機械学習に限らず、より精度の高い分析をするためには、様々なデータを結合した い (データエンハンスメント) • しかし、自社データだけでなく他社のデータを結合するとなると、プライバシー保 護の観点でデータの取扱が極端に難しくなる • その問題を解決するために出てきた技術が、第22回勉強会で紹介したData
Clean Room (参考: https://youtu.be/BwqSqnsZb_o) • 今回紹介する暗号コンピューティングは、Data Clean Roomのセキュリティレベル をさらに高める技術として使える データ提供するときに 個人情報をマスクできるかが課題 3rd Party 3rd Partyデータを用いて 詳細な分析ができる
Data Clean Roomで安全に結合し分析 • ローデータを分析者に公開することなく結合 (ここでは結合キーをPIDとしている) し、分析できる環境を提供 • 集計結果に制約を設けることで、個人情報漏洩のリスクを下げることが可能 (完璧に防げるわけではない)
• 個人情報の第三者提供をくぐり抜けるための銀の弾丸ではない Data Clean Roomの分析イメージ
暗号コンピューティングを使いたい場面 • Data Clean Roomを利用する時、自社データをクラウド環境に置く必要がある • 設定ミスなどでデータが漏洩した場合に備えて、社外にデータを置く場合は暗号化 したい (暗号化の対象はPIDに限らない)
機械学習視点 • 第三者データの結合にData Clean Roomというソリューションを使うことができる • ただし、第三者データを結合する時に使われるキーは、Data Clean Roomで丸められたり、 SELECTできなかったりするため、モデル作成に影響が生じる可能性がある
• 暗号化したデータを結合に使うことはありえるが、暗号化したデータを演算する必要がある場面は 少ない • 暗号コンピューティング x 機械学習自体はまだまだ実務では使われていないのが現状 ◦ 機械学習に暗号化を組み込んだPrivacy-Preserving XGBoost Inferenceなども出てきている
AWS暗号コンピューティング
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 準同型暗号スキーム向けの準同型回路を設計す るプロセスを簡素化するためのツール
クリーンルーム用暗号コンピューティング (C3R)
クリーンルーム用暗号コンピューティング (C3R) • 暗号化されたデータは、復号化されることなく暗号化されたまま処理が実行 される • 暗号化されたデータ ◦ できること ▪
他データと結合するためのJOINのキーとして使う ▪ COUNT, COUNT(DISTINCT)とGROUP BYなどの集計 (条件あり) ◦ できないこと ▪ WHERE句やSUMやAVERAGEなどの集約関数の適用
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文で使用するために暗号化されていないカラム
Fingerprintカラムが保護される仕組み AWS Clean Rooms上でFingerprintカラムが漏洩しないような保護が行われる • 第三者とのデータの結合には、Fingerprintカラムを暗号化したまま使う • Fingerprintカラムを直接SELECTすることはできない • どのデータが結合されたかを使用者は知ることができない
• 集計結果がしきい値以下の場合は削除
AWS Clean Roomsの特徴 • 自分AWSを含め最大で5つのAWSアカウントでデータの連携が可能 • クエリの実行および結果の受け取りができるのは1つのAWSアカウントのみ • 集計結果に対して最小閾値を設定し、少ない集計結果による元データの推定 を防ぐ事が可能
• 自分が開始したクエリと自分のデータを含むクエリのログを受け取り可能 • 暗号コンピューティングにより、データを暗号化したまま保存・転送・処理 が可能
データの保護レベルの4つのトレードオフ • データの保護レベルと利便性はトレードオフとなる • トレードオフとして考えられるもの 1. cleartextの混在を許可するかどうか 2. Fingerprintカラムの重複を許可するかどうか 3.
Fingerprintカラム名の制限を緩和するかどうか 4. Nullを保持するかどうか
1. cleartextの混在を許可するかどうか • すべてのカラムを暗号化すると、データを最大限に保護することができる • 一方で、暗号化されたデータはSUMなどの集計関数などが使えなくなるとい う欠点がある • データを暗号化しても、cleartextカラムから元データを推定できる可能性が ある
◦ 例: 県を暗号化して、市を暗号化していない場合
2. Fingerprintカラムの重複を許可するかどうか • Fingerprintカラムがすべてユニークな値である場合、C3Rによって暗号化さ れた値から元の値を推測することは不可能 • ただし、分析によっては、Fingerprintカラムで重複を許さないといけない場 合が出てくる • 重複を許す場合、統計的推定により、元のカラムを推定される可能性がある
◦ 例: 暗号化された地域データで、データ数の違いによって地域を推定
3. Fingerprintカラム名の制限を緩和するかどうか • デフォルトでは、暗号化されたFingerprintカラムを利用して2つのテーブル を結合 ◦ Fingerprintカラムを暗号化するときに、共通秘密鍵とカラム名の組み合わせから作られた鍵 を利用する ◦ 異なるカラム名の場合、結合ができなくなる
• Fingerprintカラム名の制御をなくす場合 ◦ すべてのFingerprintカラムに対して単一の鍵を使うこととなる ◦ 異なるFingerprintカラムで同じ値を導出してしまうこととなる ▪ 例:県名と市名が同じ場合、暗号化したあとも同じ値となる
4. Nullを保持するかどうか • Nullを他の値と同様に暗号化することで、データの保護レベルを高めること ができる • Nullを暗号化した場合 ◦ IS NULLなどが使用できなくなる
◦ GROUP BYでグループ化できる • 値がNullであることが元データの推定に使われることがある ◦ 例: ミドルネームカラムがNullの場合
C3Rを使用した暗号コンピューティングの流れ • AWS Clean RoomsでCollborationを作成 (暗号化にcollaboration idが必要なので暗号化よりも前に 作成が必要) • ローカルで暗号化
◦ 共通鍵の作成 ◦ C3Rのjarファイルを使ってSchemaおよび暗号化されたカラムを含むデータの作成 (CSV, Parquet形式) • 暗号化されたカラムを含むデータをS3へ保存 • AWS Glue カタログを作成 • AWS Clean Roomsにテーブルを登録 出典: AWS Console ここで暗号化をする
デモ: C3Rを使ったデータ暗号化 GitHubにあるC3Rを使ってテーブルデータを暗号化するまでのフローを紹介 • インタラクティブモードを使ったschema定義のJSON作成 • 暗号化に利用する共通鍵の作成 • テーブルデータの暗号化
参考: デモで実行したコマンド • 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を作成