全盘加密应对的威胁模型、分层设计与实践
最近在整理一些以前写的东西,这里把一些关于全盘加密的想法记录一下。
在构建存储系统时,数据加密往往是一个常见需求,但「加密」本身并不是目的。脱离了具体的威胁模型去讨论加密算法或配置参数,往往容易陷入过度设计,或者在真正需要防御的地方留下盲区。结合FreeBSD下的geli(8) 与ZFS存储栈,我在这里重点梳理一下离线威胁边界、反容量分析的抹盘策略、机械硬盘与闪存缓存的差异化处理、块设备加密与文件系统原生加密的架构取舍,以及数据完整性校验的去重考量。
共2篇文章。
最近在整理一些以前写的东西,这里把一些关于全盘加密的想法记录一下。
在构建存储系统时,数据加密往往是一个常见需求,但「加密」本身并不是目的。脱离了具体的威胁模型去讨论加密算法或配置参数,往往容易陷入过度设计,或者在真正需要防御的地方留下盲区。结合FreeBSD下的geli(8) 与ZFS存储栈,我在这里重点梳理一下离线威胁边界、反容量分析的抹盘策略、机械硬盘与闪存缓存的差异化处理、块设备加密与文件系统原生加密的架构取舍,以及数据完整性校验的去重考量。
读到哪算哪的先记一笔。
geli(8)在启用了数据完整性检测的时候采取的设计是将HMAC数据保存在同一扇区中,换言之它在保存数据时,物理扇区(通常是512字节)中占用了32字节来保存HMAC数据。