首页/安全/加密与证书速查/AES-XTS 磁盘加密模式
加密算法基础95 条

AES-XTS 磁盘加密模式

为块设备设计的可调(tweakable)模式(NIST SP 800-38E / IEEE 1619):以扇区号为 tweak,同一明文在不同扇区得到不同密文,是 LUKS 等全盘加密的常用选择。

加密与证书速查安全更新于 2026-10-13

XTS 是什么

AES-XTS 是为块存储设计的可调模式,来源是 IEEE 1619 与 NIST SP 800-38E。它的关键设计是把数据位置(扇区号)作为 tweak 参与运算:同一份明文写在不同扇区会得到不同密文,而同一扇区反复读写的结果保持稳定,正好契合磁盘按固定块随机读写的特性。LUKS、BitLocker 等全盘加密方案普遍采用它作为默认算法。

基本信息

标准NIST SP 800-38E 与 IEEE 1619
tweak扇区号,与 I/O 位置相关
密钥两把 AES 密钥拼接,512 位表示 AES-256-XTS
密钥使用每个数据单元共用同一对密钥,靠 tweak 区分位置
完整性不提供,需由上层校验机制负责
适用边界块设备与全盘加密;不适合需要去重的对象存储

LUKS 使用 AES-XTS

LUKS 使用 AES-XTS
# 512 位密钥长度表示 AES-256-XTS(两把 256 位密钥)
cryptsetup luksFormat --cipher aes-xts-plain64 --key-size 512 --hash sha256 /dev/sdb
cryptsetup open /dev/sdb cryptdata    # 映射为 /dev/mapper/cryptdata
cryptsetup status cryptdata           # 确认 cipher 与 key size 实际生效
# 查看卷头信息与所用算法
cryptsetup luksDump /dev/sdb

常见疑问

疑问结论说明
密文为何与明文等长XTS 是分组模式,不追加认证标签因此不提供完整性保护
同扇区重复写会怎样产生相同密文这是设计目标,便于原地更新
能用于文件级加密吗不建议缺少位置语义,tweak 的设计优势无从发挥
能防篡改吗不能需上层校验或 dm-verity 之类机制
适合去重存储吗不适合相同明文跨位置密文不同,去重无从下手
XTS 的设计目标是让同一扇区读写结果稳定、跨扇区密文随机;它不防篡改,数据完整性要靠上层文件系统或校验机制。
密钥长度的对应关系容易记错:--key-size 512 对应 AES-256-XTS,实现上拆成两把 256 位密钥分别参与数据与 tweak 运算;256 位参数对应的是 AES-128-XTS。
更换口令不等于重新加密数据:LUKS 头可以单独换口令或调整密钥槽;只有确认主密钥泄露时,才需要执行全量重新加密流程。

易错点

  • XTS 对同一扇区重复读写产生相同密文,这是设计目标,因此它不适用于对象存储等需要去重的场景
  • 备份加密卷要连同 LUKS 头一起备份,只复制数据分区无法恢复
  • 把 XTS 当通用加密模式用于消息或文件级加密,会失去位置语义带来的安全性
  • 误以为 XTS 有完整性保护:攻击者可在扇区粒度篡改数据而它无法发现
  • 换口令时误删密钥槽会导致卷永久无法解锁,操作前先备份卷头

数据来源与参考

  • NIST SP 800-38E(XTS-AES)
  • cryptsetup 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌