LUKS磁盘加密技术解析
问题背景
当LUKS磁盘被挂载且密码/密钥已提供时,任何直接访问计算机的用户都可以访问解密后的文件。用户想知道卸载磁盘是否足以使内容对用户不可访问,还是需要卸载并断电/拔掉磁盘才能实现这一点。此外,主机计算机是否需要关机以从内存中清除密钥?
技术解析
数据始终加密
磁盘上的数据始终以加密形式存储。使用LUKS加密时,数据永远不会以解密形式存储在磁盘上:
- 读取时:数据从磁盘读取时,LUKS驱动程序会在内存中解密数据,然后将结果提供给操作系统
- 写入时:操作系统尝试写入磁盘时,LUKS驱动程序会加密数据并将其写入磁盘
这种机制称为实时加密(OTFE),确保即使磁盘在系统运行时被取出,数据在磁盘上也是安全的。
密钥管理
卸载操作不足以清除密钥:
|
|
此时,LUKS卷仍然处于打开状态,密钥仍保留在内存中。可以重新挂载而无需再次提供密码。
完全保护措施
要完全禁用对数据的访问,需要关闭LUKS映射:
|
|
执行此操作后,密钥将从内存中移除,需要重新进行luksOpen并重新提供密钥。
设备架构
在系统中,LUKS会创建一个加密设备映射:
|
|
从该设备读取数据时,系统会从底层分区读取加密数据,并在返回前进行解密。
结论
- 数据在磁盘上始终保持加密
- 解密/加密转换在RAM中由Linux内核介导
- 简单卸载不会移除加密密钥
- 需要执行
cryptsetup luksClose来清除内存中的密钥 - 关机时会自动关闭所有LUKS映射
无需重启计算机,只需执行luksClose操作即可确保数据安全。