片外內(nèi)存攻擊面
- 攻擊者通過操縱片外的未保護的內(nèi)存
- 直接觀察
- 解決方案:內(nèi)存加密
- 篡改數(shù)據(jù)
- 任意修改(spoofing),拼接(splicing),重放(replay)
- 解決方案:完整性保護和防重放
- 觀察地址總線的訪問模式
- 側(cè)信道
- 解決方案:ORAM
AES分組算法保護機密性
- 內(nèi)存加密模式
- AES+ECB/CBC/CTR/XTS/GCM
- 可調(diào)分組密碼:QARMA
1.ECB模式(電子密碼本模式)
用相同的密鑰分別對明文組加密;各個分組獨立加密和解密。
優(yōu)點:
算法簡單,加解密速度快。
易于并行計算,因此在硬件中實現(xiàn)時非常高效。
缺點:
不支持并行加解密,因此安全性較差。
明文塊內(nèi)部存在重復,容易受到攻擊。
2.CBC模式(密碼分組鏈接模式)
當前明文分組先和前一個密文異或,再加密;初始向量IV,不必保密,但需要保存并占據(jù)空間
優(yōu)點:
相鄰的明文塊加密后的密文塊是不同的,增加了加密的安全性。
可以處理變長的明文,適用性更廣。
缺點:
加密過程是串行的,無法并行,不適合硬件加速。
初始向量IV必須是隨機的,否則容易受到攻擊。
3.CTR模式(計數(shù)器模式)
CTR模式是一種通過將逐次累加的計數(shù)器進行加密來生成密鑰流的流密碼。最終的密文分組是通過將計數(shù)器加密的到的比特序列,與明文分組進行XOR而得到的。
優(yōu)點:不泄露明文;僅需實現(xiàn)加密函數(shù);無需填充;可并行計算。
缺點:需要瞬時值IV,難以保證IV的唯一性。
4.CFB模式(密碼反饋模式)
在CFB模式中,前一個密文分組會被送回到密碼算法的輸入端。所謂反饋,這里指的就是返回輸入端的意思。類似于CBC,可以將塊密碼變?yōu)樽酝降牧髅艽a;工作過程亦非常相似,CFB的解密過程幾乎就是顛倒的CBC的加密過程:
優(yōu)點:
支持加密和解密的輸出反饋模式,因此可以進行流加密。
可以處理變長的明文,適用性更廣。
缺點:
加密過程是串行的,不適合硬件加速。
密鑰流的產(chǎn)生需要時間,因此加解密的時延較大。
5.OFB模式(輸出反饋模式)
可以將塊密碼變成同步的流密碼。它產(chǎn)生密鑰流的塊,然后將其與明文塊進行異或,得到密文。與其它流密碼一樣,密文中一個位的翻轉(zhuǎn)會使明文中同樣位置的位也產(chǎn)生翻轉(zhuǎn)。這種特性使得許多錯誤校正碼,例如奇偶校驗位,即使在加密前計算,而在加密后進行校驗也可以得出正確結(jié)果。
密碼反饋模式也需要一個初始量,無須保密,但對每條消息必須有一個不同的初始量。
優(yōu)點:
支持加密和解密的輸出反饋模式,因此可以進行流加密。
可以處理變長的明文,適用性更廣。
缺點:
加密過程是串行的,不適合硬件加速。
密鑰流的產(chǎn)生需要時間,因此加解密的時延較大。
需要注意的是,以上模式中,ECB模式安全性最差,CBC、CFB和OFB模式相對安全性更高,因此在選擇加密模式時需要根據(jù)實際情況和安全需求進行選擇。
6.XTS
- 明文和密鑰之外,算法包括一個tweak作為輸入
- 相比CBC、CTR等模式,不需要額外的存儲IV和counter
- 整體與ECB類似,例如可以并行
- 但規(guī)避了ECB的缺點:頻率分析攻擊,密文替換攻擊
- 但規(guī)避了ECB的缺點:頻率分析攻擊,密文替換攻擊
保護完整性
- MAC
- SHA1/SHA3……
- 認證加密模式
- CTR+GMAC
- Counter需要保存、不能重復
Xom
Architectural Support for Copy and Tamper Resistant Software ASPLOS 2000
- 機密性
- CTR模式
- cipher = plain ⊕ encryptedkey(address || seq)
- plain = cipher ⊕ encryptedkey(address || seq)
- key = XOM ID
- address = virtual address of data/instruction
- seq = mutating sequence number
- encryptedkey(address + seq)的計算可以與內(nèi)存訪問并行,最終的計算只需要1個cycle進行異或
為什么需要address作為counter的一部分?
防止從一個內(nèi)存地址復制合法的密文,替換到另外一個內(nèi)存地址
- cipher = plain ⊕ encryptedkey(address || seq)
- plain = cipher ⊕ encryptedkey(address || seq)
Xom的問題:無法提供新鮮性保證
使用同一地址的舊的數(shù)據(jù)替換該地址的新的數(shù)據(jù)–>需要防重放攻擊
新鮮性,Merkel Tree 防重放
Caches and Merkle Trees for Efficient Memory Integrity Verification. HPCA 2003優(yōu)化
- 若每次都計算到根節(jié)點
- 4GB內(nèi)存,128-bit hash,性能損失可以達到10倍
- 專門的cache結(jié)構(gòu),緩存了最近使用的內(nèi)部hash塊
- 不需要計算到根節(jié)點,只需要計算到查找到的中間節(jié)點
- 若中間節(jié)點被換出,則將其父節(jié)點放入cache,并更新父節(jié)點
- 平均22%,最壞52%
優(yōu)化:Counter的壓縮模式
Improving Cost, Performance, and Security of Memory Encryption and Authentication. ISCA 2006
-
CTR的問題
- 每次cache write back需要增加一次counte
- 每個chuck一個counter+addr
- 當counter溢出時,需要換一個AES key
- 但整個內(nèi)存加密只有一個key,因此需要重新加密整個物理內(nèi)存 – freeze the system
- 但整個內(nèi)存加密只有一個key,因此需要重新加密整個物理內(nèi)存 – freeze the system
- 每次cache write back需要增加一次counte
-
Counter = Major Counter || Minor Counter
- Major Counter
- 每個加密的頁面內(nèi)所有的數(shù)據(jù)塊共享一個major counter
- 在系統(tǒng)的生命周期內(nèi)都不會溢出(64 bit)
- Minor Counter
- 頁面內(nèi)每個數(shù)據(jù)塊具有的獨立的counter
- 長度較短,容易溢出,但溢出時只需要更換一個major counter,并重新加密該頁面,而不是全部的物理內(nèi)存
- Major Counter
-
Stored together in a counter cache line
- 存儲開銷為1/64=1.6%
- 存儲開銷為1/64=1.6%
-
使用GMAC優(yōu)化完整性保護
優(yōu)化:AISE
Using address Independent Seed Encryption and Bonsai Merkle Trees to Make Secure Processors OS- and Performance-Friendly. MICRO 2007
motivation
- 內(nèi)存加密
- CTR模式可以隱藏內(nèi)存訪問關(guān)鍵路徑的延遲,但是該模式下要求counter是唯一的
- 之前的工作,采用了地址(spatial uniqueness,va或pa)作為counter的一部分
- 每次write操作,counter+1,用于保證temporal uniqueness
- CTR模式可以隱藏內(nèi)存訪問關(guān)鍵路徑的延遲,但是該模式下要求counter是唯一的
- 問題
- 使用物理地址,則每次page swapping都需要重新加密和解密
- 且需要增加額外的完整性保護機制
- 使用虛擬地址,但不同的進程可以使用同樣的虛擬地址
- 若把每個進程的ID也作為counter的一部分
- 無法支持shared memory based IPC和shared library – process fork的copy on write的優(yōu)化不可用,原因是parent/child的counter是不一樣的
- 進程ID是由不信任的OS指定的
- 若把每個進程的ID也作為counter的一部分
- 使用物理地址,則每次page swapping都需要重新加密和解密
主要優(yōu)化
- Address Independent Seed Encryption (AISE)
- 為每個頁分配一個邏輯識別碼(logical identifiers);與虛擬地址或物理地址無關(guān),在整個系 統(tǒng)的生命周期確保對所有的內(nèi)存頁都是不同的
- 可以避免page swapping等的性能問題
- 可以支持shared memory/shared library等機制
- 為每個頁分配一個邏輯識別碼(logical identifiers);與虛擬地址或物理地址無關(guān),在整個系 統(tǒng)的生命周期確保對所有的內(nèi)存頁都是不同的
- LPID
- 在頁分配時分配的唯一值(unique value)
- 在生命周期(系統(tǒng)啟動到關(guān)閉)內(nèi)與頁綁定,包括物理頁和交換空間頁
- Global Page Counter:64比特
- 無法篡改,幾乎不會溢出
- LPID的存儲:與壓縮counter結(jié)合
- 以1個4KB的頁為例,每個block為64字節(jié),每個block的LPID長度為64比特,每個 block分配一個7比特的counter
- 若block counter溢出,則為該頁分配一個新的LPID,并重新加密該頁
- 存儲開銷為1/64=1.6%
其他優(yōu)化方向
-
1.Merkle Tree的目的是防止replay attack,而CTR模式為每個block提供了一個 counter
- 如果我們能夠保證counter的新鮮性(freshness),則可以保證數(shù)據(jù)的新鮮性
- 因此,只需要使用Merkle Tree保護counter的新鮮性
-
2.counter要比data小的多(64B v.s. 4KB),因此一個Tree node可以容納更多的 counter
- cache壓力更小,查詢更快
- cache壓力更小,查詢更快
-
3.VAULT. ASPLOS 2018:增加可以支持的受保護內(nèi)存大小
- EPC hit: 200 cycles;EPC miss 40K cycles
- SGX中樹的每一層8個節(jié)點,VAULT使用了16到64個可變節(jié)點
- 壓縮MAC的存儲
- 16 GB受保護內(nèi)存
-
4.Morphable Counters. MICRO 2018
- 根據(jù)應用程序的特點,每個cache line中的counter數(shù)量是動態(tài)可變的(counter的大小可變,之 前的方案都是固定的64個)
- 通過對counter做壓縮,降低Merkle tree的大小以及占用的cache大小,減少counter溢出后的 重加密代價
- 16GB受保護內(nèi)存
-
5.Synergy. HPCA 2018
- 將MAC放在ECC區(qū)域,對MAC的存取不需要額外的一次memory transaction
-
6.Compact Leakage-Free Support for Integrity and Reliability. ISCA 2020
- 對integrity tree中的metadata布局的優(yōu)化,降低metadata miss的概率
現(xiàn)有TEE完整性保護
Intel SGX
A Memory Encryption Engine Suitable for General Purpose Processors文章來源:http://www.zghlxwxcb.cn/news/detail-817435.html
- 只對counter進行完整性保護
- counter:包括時間和空間counter,沒有做壓縮
SGX V2/Scalable SGX
- 移除了基于Merkle Tree的完整性檢查
- 利用ECC比特表明每個cache line是否屬于某個enclave
- 降低了對片外存儲的完整性保護
- 無法防御memory bus replay attacks
Intel TDX/MLTME/AMD SEV
- 使用XTS加密模式
- 使用物理地址作為tweak
- 同樣的明文,在不同的物理地址,其密文是 不同的
- SEV
- 除加密外,不包含任何可以保護完整性的metadata
- 不知道密鑰的情況下的任何修改,會使得其變?yōu)殡S機值
- 仍然可以被利用(*)
- 僅適用于AMD SEV-SNP之前的版本
- 逆向tweak后,可以使用已知的明文覆蓋目標的物理地址
- 僅適用于AMD SEV-SNP之前的版本
- SEV-SNP防止了基于軟件的完整性破壞
- 但是無法防御基于物理的內(nèi)存完整性攻擊(包括bus replay attack)
- 允許對加密數(shù)據(jù)進行讀取,通過觀察數(shù)據(jù)是否改變同樣泄露信息
- TDX
- 為每個64B自動生成28-bit的截斷的sha-3輸出作為MAC
- MAC存儲在DRAM ECC-bit之內(nèi),提供完整性保護
- 1個額外比特用于表明cache line是否屬于某個TD
參考文獻:
[1] https://zh.wikipedia.org/wiki/分組密碼工作模式#
[2] https://heartever.github.io/files/understanding_tee_design.pdf文章來源地址http://www.zghlxwxcb.cn/news/detail-817435.html
到了這里,關(guān)于【TEE】片外內(nèi)存保護:AES分組算法+MAC完整性驗證的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!