Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rustで実装された AWS Nitro Enclaves CLIを読む
Search
Osuke
December 07, 2020
Programming
460
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rustで実装された AWS Nitro Enclaves CLIを読む
Osuke
December 07, 2020
More Decks by Osuke
See All by Osuke
特許データを使ったマルチモーダルAIの検証事例@LLMProd#4
osuke
0
360
dbtを中心に据えた データ分析とプロダクト開発
osuke
1
1.2k
LayerX Privacy Tech事業部紹介 Tech編
osuke
2
280
(SCIS2021) Anonify: プライバシーを保護した 検証可能な状態遷移モジュール
osuke
1
480
Rustのパフォーマンスに関するTips
osuke
4
5.2k
ARM TrustZone入門 / ARM TrustZone intro
osuke
33
11k
Anonify
osuke
3
1.2k
Rustのasync/awaitとスケジューラの話 / rust-async-await
osuke
9
4.2k
Privacy on Blockchain
osuke
1
1.3k
Other Decks in Programming
See All in Programming
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
120
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
170
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
contenteditable と日本語入力に向き合う
colorful12
0
200
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
210
JIS keyboard support in Omarchy
lef237
0
110
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
600
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
490
Featured
See All Featured
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
The Limits of Empathy - UXLibs8
cassininazir
2
720
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
560
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
530
The SEO Collaboration Effect
kristinabergwall1
1
590
Optimizing for Happiness
mojombo
378
71k
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