TEE (Intel SGX)
libos
opensource tee
sdk
projects
oasis
https://www.youtube.com/watch?v=xF50qCIYwpQ
これベースらしい
enigma
https://www.youtube.com/watch?v=VCW1STJfRVs
sealing
intel生成のユニークなdec keyをenclave内にuntrusted partには暗号化して保持
remote attestation
https://gyazo.com/c3ce355257cdb8b51da45a907cd6e793
安全なenclaveであることのattestationをintelに。
enclaveごとに1回、reportをethereumに記録
chainlink
https://www.youtube.com/watch?v=Zu6uZ1PnRU4
Graphene
hyperledger private data objects
https://www.youtube.com/watch?v=I1HbFPwo4gg
substrate tee
corda
Copy protection
CyberLink PowerDVD
vulnerabilities
Foreshadow
EnclaveはEPC(Enclave Page Cache)に保存。
https://gyazo.com/3318d7cca9f7f47a3628b74bb99fc3fb
EPCM(Enclave Page Cache Map)
EPCのsecurity attributes を管理
DRAMはPRM(Processor Reserved Memory)を含み、PRMはEPCを含む
https://gyazo.com/ba6850676a2f53ae72c0e40d365f843b
MEE(Memory Encryption Engine)
唯一、CPU内のデータを復号化可能
https://gyazo.com/3c3e8cedf3406e52bee010ccfe893ea9
Trusted component(protected memory)にアクセス
provessorがenclave modeで動作
https://gyazo.com/d566d479d2a0ab622071d188e1c6d3a0
AE (Architectual Enclave)
ユーザーが直接処理の命令やデータのやり取りを行えない特殊なEnclave群
PvE
QE
LE
など
PvE (Provisioning Enclave)
e-fuge
CPU固有のID(Provisioning Secret)が保存され、IPS(Intel Provisioning Service)のデータベースにも同様に保持。
PvEはEGETKEY命令によりe-fuge内のProvisioning secretをreadし、IPSと通信しEPID keyを取得するEnclave。
EPID:マスター公開鍵に対し複数のメンバ秘密鍵を対応
EPID KEYを取得するのがPvEのミッションなので初回利用時で役目を終える
Sealing: EPIDメンバ秘密鍵を再びe-fugeにストアする
https://gyazo.com/6aea756d040dd29fdda93d9a803276df
ここで取得したEPID memebr private keyはattestationで用いられる。
QE (Quoting Enclave)
PvEがSealingしたEPID member private keyに対して唯一アクセス可能なEnclave
remote attestation時にEGETKEY命令によりmember private keyを取得し、REPORT構造体(Enclave検証用の公開情報)にEPID member private keyで署名しQUOTE構造体を生成。
Sealing
Enclave内で扱う機密性の高いデータを不揮発性メモリに保存するための操作。
PvEによってe-fuseにストアされた鍵を用いてEnclave内のデータを128bit AES/GCMで暗号化し、Enclave外で不揮発性メモリ上に保存。
Sealing用の鍵はMRENCLAVEポリシーかMRSIGNERポリシーにしたがってSGXが生成。
MRENCLAVE
Config file、Enclave image, Enclave署名ツールのversionに依存するハッシュ値
同じconfig fileで同じ環境で同じソースコードでビルドすれば同一のMRENCLAVEが得られる。
MRSIGNER
署名情報に依存するハッシュ値
configファイルやソースコードが異なっていても、署名鍵が一致しているとunsealing可能。
シーリング鍵はCPU固有のIDに依存して生成されるのでどちらのポリシーでもSealing dataを別のマシンにコピーしてunsealingすることはできない。
proxy
The Intel SGX SDK’s solution to this problem is to copy the contents of data buffers into and out of enclaves, and have the ECALLs and OCALLs operate on these copies of the original memory buffer.