Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Rustで実装された AWS Nitro Enclaves CLIを読む
Osuke
December 07, 2020
Programming
0
170
Rustで実装された AWS Nitro Enclaves CLIを読む
Osuke
December 07, 2020
Tweet
Share
More Decks by Osuke
See All by Osuke
(SCIS2021) Anonify: プライバシーを保護した 検証可能な状態遷移モジュール
osuke
1
220
Rustのパフォーマンスに関するTips
osuke
2
730
ARM TrustZone入門 / ARM TrustZone intro
osuke
3
5.6k
Anonify
osuke
3
610
Rustのasync/awaitとスケジューラの話 / rust-async-await
osuke
9
2.8k
Privacy on Blockchain
osuke
1
1.1k
Secure Coding Practice in Rust
osuke
4
2.5k
Zerochain: A privacy layer for blockchain
osuke
1
570
Zerochain: A privacy-protecting layer on top of Substrate
osuke
1
830
Other Decks in Programming
See All in Programming
Enzyme から React Native Testing Library に移行した経緯 / 2022-07-20
tamago3keran
1
160
夕食断食にTRY!/for-lt-12th
pachikuriii
0
230
設計の考え方とやり方
masuda220
PRO
46
26k
段階的な技術的負債の解消方法.pdf
ko2ic
2
860
Efficient UI testing in Android
alexzhukovich
1
120
Google I/O 2022 Android関連概要 / Google I/O 2022 Android summary
phicdy
0
360
リーダブルテストコード / #vstat
jnchito
46
34k
How to Test Your Compose UI (Droidcon Berlin 2022)
stewemetal
1
130
ZOZOTOWNにおけるDatadogの活用と、それを支える全社管理者の取り組み / 2022-07-27
tippy
0
2.9k
プロダクトの成長とSREと
takuyatezuka
0
120
ちょっとつよい足トラ
logilabo
0
330
ESM移行は無理だけどおれもSindreのライブラリが使いたい!
sosukesuzuki
2
530
Featured
See All Featured
Done Done
chrislema
174
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
351
21k
Building a Scalable Design System with Sketch
lauravandoore
448
30k
Code Review Best Practice
trishagee
44
9.7k
The Pragmatic Product Professional
lauravandoore
19
3.1k
What the flash - Photography Introduction
edds
62
10k
The Art of Programming - Codeland 2020
erikaheidi
32
11k
Six Lessons from altMBA
skipperchong
14
1.4k
Testing 201, or: Great Expectations
jmmastey
21
5.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
980
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
212
20k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
Transcript
1 Rustで実装された AWS Nitro Enclaves CLIを読む Osuke Sudo 2020/12/7 @Rust
LT Online #2
2 @zoom_zoomzo Osuke ソフトウェアエンジニア@LayerX • 暗号技術・TEEを用いたデータのプライバシー保護・改ざん 耐性手法の研究開発(Confidential Computing) • Anonifyの開発
◦ https://github.com/LayerXcom/anonify
3 アジェンダ • AWS Nitro Enclacvesとは • Enclave起動までの処理の流れ • EIFイメージ展開とメモリ割り当て
4 • 高度にセキュアな情報を扱うことを想定し、AWS Nitro Systemにより提供される隔離保護された実行環境 ◦ 軽量なkvmベースのハイパーバイザ + ネットワーク・ストレージのオフロード +
セキュリティチッ プなど • それぞれのEnclaveには、EC2のメモリやCPUリソースを割り当てることができ、独立したカーネルOS上 で動作 • Enclaveは親EC2とのvsockのみでやりとり可能(外部のネットワークやストレージに接続することはでき ず、admin IAM権限でもユーザーアクセスはできない) AWS Nitro Enclavesとは https://aws.amazon.com/jp/blogs/aws/aws-nitro-enclaves-isolated-ec2-environments-to-process-confidential-data/
5 Nitro Enclacve CLI • Nitro-cliでdocker imageからEIF(Enclave Image File)をビルド可能 •
EIFと割り当てるメモリ、vCPUを指定しenclaveを起動
6 enclave起動までの処理 1. 親プロセス:CLIコマンドでコミュニケーションするためのEnclave用デーモンの生成 2. デーモン:コマンドを受け取るためのevent loopを回す 3. 親プロセス:socketにrun-enclaveコマンドを送信 4.
デーモン:nitroデバイスファイルへVM生成コマンド送信 5. デーモン:メモリの割り当てとEIFをメモリに書き込み 6. デーモン:vCPUの割り当て 7. デーモン:nitroデバイスファイルを介しenclaveをスタート 8. 親プロセス:enclaveからのレスポンスを処理し表示 参考: Rustで実装されたAWS Nitro Enclaves CLIの実装を読む https://qiita.com/Osuke/items/81d928bd2a46fab46cbc
7 init_memory(): メモリ領域の確保 • Run-enclaveコマンドの引数として渡したメ モリサイズ分だけメモリ領域を確保 • それぞれのregionがhuge-pageに対応し、 libc::mmap()により割り当て
8 init_memory(): EIFイメージの展開 • NE_GET_IMAGE_LOAD_INFOコマンドでioctlを呼 び、EIFイメージを展開するメモリのオフセットを Nitro Systemから取得 • 確保したメモリ領域とイメージ展開オフセットから
実際にEIFを書き込む • ページごとにNE_SET_USER_MEMORY_REGIONコ マンドでioctlを呼び、デバイスドライバにセット ◦ (KVMでいうところの KVM_SET_USER_MEMORY_REGIONで実行 バイナリをVMにセットしているイメージ)
9 • Rustで実装されたAWS Nitro Enclaves CLIの実装を読む ◦ https://qiita.com/Osuke/items/81d928bd2a46fab46cbc • Nitro
Enclaves Command Line Interface (Nitro CLI) ◦ https://github.com/aws/aws-nitro-enclaves-cli • Deep Dive Into AWS Nitro Enclaves - AWS Online Tech Talks ◦ https://youtu.be/K5PRNHaEdOw • AWS re:Invent 2019: Powering next-gen Amazon EC2: Deep dive into the Nitro system (CMP303-R2) ◦ https://youtu.be/rUY-00yFlE4 References