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
240
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)
LangGraph Templatesによる効率的なワークフロー構築
knishioka
0
61
AIエージェントの開発に特化した統合開発環境 LangGraph Studio
knishioka
0
97
LangGraphを用いたAIアプリケーションにおけるメモリ永続化の実践
knishioka
1
250
Text-to-SQLをLangSmithで評価
knishioka
0
160
効果的なLLM評価法 LangSmithの技術と実践
knishioka
1
320
LangGraphのノード・エッジ・ルーティングを深堀り
knishioka
1
440
LangGraphでマルチエージェントワークフローを構築
knishioka
0
350
LLMアプリケーションで使用するVector Databaseの比較
knishioka
0
2.1k
LLMアプリケーションの デバッグ・テスト・評価・監視を楽にするLangSmith
knishioka
0
290
Other Decks in Technology
See All in Technology
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
2
520
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
Lambdaと地方とコミュニティ
miu_crescent
2
370
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
3
220
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
410
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
180
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
Terraform Stacks入門 #HashiTalks
msato
0
350
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Become a Pro
speakerdeck
PRO
25
5k
The Pragmatic Product Professional
lauravandoore
31
6.3k
Building Adaptive Systems
keathley
38
2.3k
Code Reviewing Like a Champion
maltzj
520
39k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Scaling GitHub
holman
458
140k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Building Your Own Lightsaber
phodgson
103
6.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
96
Six Lessons from altMBA
skipperchong
27
3.5k
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を作成