加密At Rest
加密At Rest
1)為什麼需要它,我們保護的是什麼
定義。Rest加密是對寫入介質(磁盤,snapshot,備份,對象,logi,內存轉儲)的數據的保護,因此未經授權訪問物理介質或「原始」存儲不會泄露內容。
我們涵蓋的內容:- 塊/文件卷、對象存儲、數據庫、隊列/網關、緩存轉儲、邏輯/跟蹤、備份、導出/導入、VM/容器快照、核心/進程轉儲、播客/交換。
- 多目標場景:客戶端/項目/環境之間的隔離。
我們不能完全覆蓋的內容包括:內存中的會話竊取,對實時過程的攻擊,應用程序漏洞,損害憑據。這需要「飛行中」加密,嚴格的身份驗證/授權,最小化權限和監控(請參閱相關文章:「身份驗證和授權」,「請求簽名和驗證」)。
2)威脅模式和控制目標
典型風險:- 媒體丟失/盜竊(磁盤、磁帶、USB、開發人員設備)。
- 未經授權訪問備份/快照/登錄。
- 濫用Platform/Hypervisor/Storaj-nod級別的特權。
- 配置錯誤時租戶交叉。
- 「垃圾」臨時文件和轉儲到工件和圖像中。
1.介質上的數據隱私。
2.租戶/環境的加密隔離。
3.密鑰可管理性(創建,存儲,輪換,撤回)。
4.可審核性(誰以及何時使用密鑰)。
5.將事件中的操作風險降至最低。
3)架構基本原理
默認情況下,將全部加密。Opt-out被禁止,沒有風險級別的例外。
密鑰層次結構(envelope加密)。Root/KEK → DEK(數據加密密鑰)→ 對象/文件/DB頁面。
KMS/HSM作為信任來源。KEK在KMS/HSM中的生成和存儲,密鑰包裝/部署操作在同一位置進行。
Per-tenant/per-dataset鍵。粒度符合隔離和旋轉的要求。
職責劃分。平臺團隊≠租戶密鑰所有者;最低特權(PoLP)。
Crypto-agility.能夠安全地遷移算法/密鑰長度。
輪換為過程而不是事件。密鑰和數據必須支持「滾動」替換。
4)加密算法和模式
對象/文件/記錄:AES-256-GCM或AES-256-SIV(具有身份驗證的AEAD)。
對於塊設備/卷:AES-XTS-256/512(塊置換保護;非AEAD-在文件格式之上使用MAC,其中完整性很重要)。
- TDE (Transparent Data Encryption) движка: Oracle TDE, SQL Server TDE, MySQL/InnoDB TDE и пр.
- 字段/小寫密碼學(FPE/確定性加密)-用於加密字段上的搜索/操縱桿功能;謹慎行事。
- 密鑰生成和存儲:KEK-在KMS/HSM中;DEK-在應用程序內存中壽命短,存儲時僅以包裹形式。
5)密鑰層次結構和KMS/HSM
級別:1.Root key(HSM/KMS中的法定名稱)。不會離開HSM/KMS外圍。
2.KEK (Key Encryption Key).項目/環境/租戶。管理DEK生命周期。
3.DEK (Data Encryption Key).對象/文件/表/段。壽命短,不間斷旋轉。
實踐:- 所有包裝/部署操作均通過KMS API進行審核。
- 政客:誰可以「使用」鑰匙≠誰可以「管理」鑰匙。
- 關鍵地理分配:區域間的pin-to-Region+雙控制。
- 對於高風險操作,可以使用「雙檢查」模型(兩個操作員)。
- 要隔離強層,每個租戶都有單獨的鑰匙戒指。
6)輪換,召回和合規性
DEK輪換:透明且恒定(在對象/頁面級別滾動re-encryption)。
KEK輪換:間歇性(例如,每6至12個月一次)+當懷疑有罪時立即召回。
訪問召回:通過KMS政策;阻止unwrap操作=數據的瞬時「加密銷毀」。
審計日誌:誰、何時、哪些權利使用密鑰;分別存儲和加密。
法規和標準:針對行業需求(例如GDPR/PCI公差/本地監管機構),使用經過認證的加密碼器(例如,符合認證水平)。
7)按存儲類型劃分的模式
7.1塊/文件卷和VM/容器
全盤加密(XTS)+通過KMS控制密鑰(裝載時初始化卷)。
保護交換、崩潰轉儲、tmp 目錄、容器覆蓋層、映像/AMI。
快照/快照-始終以加密,帶有單獨的DEK。
7.2個對象存儲
Envelope加密:每個對象的唯一DEK;標題/元數據-沒有PII泄漏。
通過租戶和環境控制KMS密鑰的訪問。
服務器端加密(帶有本機KMS的SSE)或客戶端端加密(CSE)-通過信任模型進行選擇。
7.3個數據庫
在可用的地方啟用TDE;DB密鑰通過插件/插件綁定到KMS。
對於特別敏感的字段-在進入DB之前的應用程序加密(AEAD)。
Redo日誌/事務日誌、存檔日誌、轉儲分別加密,密鑰分開。
7.4 Logi/Traces/度量
Logs格式-沒有敏感的默認數據(消毒)。
Log Archives-單個密鑰和短存儲TTL。
通過具有A&A和審核的代理服務訪問日誌閱讀。
7.5備份和離線媒體
在寫入磁帶/雲之前,始終在客戶端進行加密。
單獨存儲(外帶),分開控制。
對於緊急情況,分離秘密(例如m-of-n)以恢復主訪問。
8)多範圍(multi-tenant)
租戶的關鍵:KEK-per-tenant+DEK-per-dataset。
策略隔離:KMS名稱空間,IAM邊界,單獨的IDP角色。
應客戶要求刪除:「加密擦除」-召回租戶的KEK並銷毀DEK。
客戶報告:合規工件、密鑰訪問日誌、輪換確認。
9)性能和操作
硬件加速(AES-NI/x86 Crypto Extensions ARMv8)。
熱路分析:使用I/O邊界上的加密,避免雙重加密,無需。
KMS會話池,在內存中緩存包裹的DEK(具有TTL和轉儲保護)。
SLO/度量標準:unwrap的潛在性,「超密」對象的比例,KMS錯誤,備用加密速度。
10)實施過程(參考簡歷)
步驟0-數據清單。編目所有存儲和泄漏路徑(tmp、轉儲、導出、分析箱)。
步驟1-關鍵層次結構設計。我們定義KEK/DEK級別,粒度,區域,角色。
步驟2-選擇模式/庫。認可的算法,密碼庫,版本策略。
步驟3-與KMS/HSM集成。生成/包裝/審計,IAM策略,地理固定。
步驟4-寫入加密。默認情況下啟用,將現有數據遷移到背景重新映射。
步驟5-輪換和緊急情況。法規,「key compomise」測試,「KMS不可用」。
步驟6-監測和審計。Dashbords,Alertes,定期合規報告。
步驟7-學習和「安全代碼」。Gaids for Engineers,禁止將秘密帶入博客/轉儲。
11)測試和驗證
加密單元測試:AEAD(標簽驗證)的正確性,更改字節時的故障驗證。
失敗測試:關閉KMS,過時的密鑰版本,強制撤回KEK。
紅色/藍色測試:嘗試讀取「原始」光盤/snapshot/備用。
兼容性檢查:遷移算法/密鑰長度(crypto-agility)。
圖書館認證:僅使用經過驗證的加密碼器;記錄版本。
12)頻繁的錯誤以及如何避免錯誤
雙重加密沒有意義。多余的潛伏和復雜性。保持一層,提供所需的顆粒和絕緣。
將密鑰存儲在數據旁邊。按鍵-總是分開的,在不同的訪問模型下。
被遺忘的文物。未加密的臨時文件、CSV導出、支持轉儲。在CI/CD和Data Loss Prevention中啟用控制。
缺乏旋轉。使旋轉成為管道/cron的一部分,而非手動操作。
具有敏感數據的日誌。引入博客格式和自動消毒劑的合同。
13)迷你食譜(偽代碼)
對象的Envelope加密:
1) Request unwrap DEK from KMS by tenant KEK id dek = kms. unwrap(kek_id, wrapped_dek)
2) Generate fresh nonce/iv, encrypt payload (AEAD)
ciphertext, tag = aead_encrypt(dek, iv=random(), aad=metadata, plaintext=data)
3) Delete DEK from memory (zeroize), save {ciphertext, iv, tag, wrapped_dek}
無停機的KEK輪換:
For each object:
new_wrapped_dek = kms. rewrap(old_wrapped_dek, old_kek_id -> new_kek_id)
store(new_wrapped_dek)
We do not touch the data: we turn over only DEK
數據集的「加密刪除」:
kms. disable_key (tenant_kek_id) # Deny unwrap kms. schedule_destroy (tenant_kek_id, hold_period_days=7) # Optional hold
14)支票單
在運行到prod之前:- 在所有類型的存儲上啟用默認加密。
- 密鑰層次結構已描述並實現;角色和IAM策略配置。
- KMS/HSM已集成,關鍵操作審計已啟用。
- DEK/KEK輪換是自動的;已制定妥協方案。
- Backaps,snapshots,logi和dumps-加密;密鑰單獨存儲。
- 已將Alerta設置為KMS錯誤,AEAD標簽偏差,未加密工件比例。
- 通過KMS不可用性和密鑰召回測試。
- 關於密鑰使用和訪問嘗試的月度報告。
- crypto-agility計劃和無痛算法遷移窗口。
- 定期紅隊從「原始」媒體中提取數據。
15)問答(FAQ)
問: 全盤加密是否足夠?
答:對於物理風險-是的,但是對於隔離租戶和靈活的輪換,使用DEK對象/撥號更好envelope。
問: KEK損害時該怎麼辦?
答:立即將KEK召回KMS,重新發布新版本,對所有DEK進行重寫,檢查日誌並進行RCA。
問: 如何加密您正在尋找的字段?
答:僅在嚴格的風險評估(模式參考)中使用確定性電路或FPE。最好設計查詢,以使敏感字段不需要索引的開放視圖。
問: 是否需要單獨的密鑰命令?
答:建議將「Crypto/KMS運算符」作為具有單獨權限和程序的角色。
「體系結構和協議」部分的相關材料:- 「密鑰管理和旋轉」
- 「S2S認證」
- ";請求的簽字和核實";
- 「OAuth2/OpenID核心連接」
- 「網絡手冊交付保證」