Files
nexus/wiki/concepts/dm-verity.md

2.7 KiB
Raw Blame History

title, type, tags, sources, last_updated
title type tags sources last_updated
dm-verity concept
Security
Linux Kernel
Integrity
public-cloud-learning-sessions-eks-optimization-part-2-of-3-running-containers-w
2026-04-24

dm-verity (Device Mapper Verity)

dm-verity 是 Linux 内核的块设备完整性验证机制通过在块设备层面计算并验证加密哈希树cryptographic hash tree确保根文件系统的任何未授权篡改都能被立即检测。

工作原理

块设备(底层)
    ↓
[哈希树计算层]
    ↓
根哈希Root Hash存储在可信位置
    ↓
与预期值对比 → 一致 = 验证通过 | 不一致 = 检测到篡改
  1. 哈希树构建:文件系统的每个块(通常 4KB计算 SHA-256 或其他哈希值,形成树状结构
  2. 根哈希存储最顶层哈希Root Hash存储在可信位置如 TPM、引导加载程序验证后的内存区域
  3. 块设备访问拦截每次读取块设备时dm-verity 内核模块实时计算路径哈希并与预期值比对
  4. 透明验证:验证过程对上层应用完全透明,性能开销通常 < 5%

在 Bottlerocket 中的应用

Bottlerocket OS 在构建时为根分区生成 dm-verity 哈希树:

  • 根文件系统镜像在构建时生成根哈希
  • 引导加载程序在启动时验证根哈希
  • dm-verity 模块在运行时验证每个块设备读取操作
  • 任何对根文件系统块的篡改都会导致 I/O 错误或验证失败

与其他技术的对比

技术 作用 层级
dm-verity 块设备完整性验证(防篡改) 块设备层
dm-crypt 块设备加密(防窃取) 块设备层
IMA/EVM 文件级完整性度量 文件系统层
Secure Boot 引导加载程序验证 固件层

安全价值

  • 运行时防篡改检测:即使攻击者获得 root 权限,也无法在不触发验证失败的情况下修改系统文件
  • 完整性保证:确保启动后的系统与构建时的镜像完全一致
  • 信任链建立:与 Secure Boot 结合,构建从固件到应用层的完整信任链

局限性

  • 不防窃取dm-verity 不加密数据(配合 dm-crypt 使用可同时实现完整性和保密性)
  • 只读保护:无法防止拒绝服务攻击(通过损坏块设备导致验证失败)
  • 验证失败处理:检测到篡改后的行为取决于配置,可能是返回 EIO 错误或让系统崩溃

相关技术