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
99
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
Lexical Analysis
shigashiyama
1
150
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
100
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.4k
Can We Measure Developer Productivity?
ewolff
1
150
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
170
The Role of Developer Relations in AI Product Success.
giftojabu1
0
130
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
Featured
See All Featured
Designing Experiences People Love
moore
138
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Optimizing for Happiness
mojombo
376
70k
Building Applications with DynamoDB
mza
90
6.1k
Facilitating Awesome Meetings
lara
50
6.1k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
What's in a price? How to price your products and services
michaelherold
243
12k
Fireside Chat
paigeccino
34
3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
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を作成