📚 技术文档 · 完整指南

理解它,
才能信任它

从加密原理到性能调优,从隐藏卷到避坑指南——读完它,你将真正理解你正在使用的工具。

§ 01

加密原理

VeraCrypt 使用实时加密(On-the-Fly Encryption)技术。加密与解密发生在数据写入/读取硬盘的瞬间,由操作系统内核驱动完成,对你和所有应用程序完全透明。

创建加密卷时,VeraCrypt 会:

  • 🔐 在硬盘上分配一段连续空间(文件型)或占用一个分区(分区型)
  • 🧬 在空间头部写入"卷头"(Volume Header),包含用你的密码加密的主密钥
  • 🌊 卷头之外的所有空间填充随机数据,看起来与未使用空间无异
  • 🗝️ 挂载时用密码解密卷头,取出主密钥,建立内存中的加密映射

此后所有读写都经过映射层:写入 → 加密 → 落盘读取 → 解密 → 返回。主密钥从不写入硬盘明文区域,只在内存中存在,卸载时被安全清零。

💡 关键点

你的密码不是直接加密数据的密钥。密码解密卷头,卷头里才是真正加密数据的主密钥。这意味着换密码不需要重新加密整个卷,只需重新加密卷头(仅 128KB)。

§ 02

密钥派生函数

用户密码通常熵不足。VeraCrypt 使用 PBKDF2 配合 HMAC-SHA-512,把弱密码"拉伸"成 512 位强密钥。核心机制是迭代——同一哈希函数反复应用成千上万次:

# 简化的 PBKDF2 流程 derived_key = "" for i in iterations: # 通常 500,000 次 derived_key = HMAC_SHA512(password, salt + derived_key) # 最终 derived_key 用于解密卷头

每次迭代约需 1 微秒。50 万次迭代意味着每次尝试密码需 0.5 秒——对你输入正确密码几乎无感,对暴力破解者意味着每秒只能尝试 2 次。

迭代次数因哈希算法而异

  • RIPEMD-160: 327,661 次(旧默认,仍支持)
  • SHA-512: 500,000 次(当前默认)
  • Whirlpool: 500,000 次
  • SHA-256: 200,000 次
§ 03

隐藏卷与合理否认

解决一个现实问题:在胁迫下交出密码时,如何保护最重要的数据?

隐藏卷的逻辑:在一个加密卷(外层)的空闲空间里,再创建一个加密卷(内层)。两者使用不同密码。输入外层密码只能看到外层数据,输入内层密码才能看到内层数据。

关键在于——从外部无法证明内层卷的存在。外层空闲空间本就是随机数据,内层数据与之在统计学上无法区分。

⚠️ 使用要点

使用隐藏卷时,必须使用"保护隐藏卷"模式挂载外层卷——否则写入外层数据可能覆盖并破坏内层卷。永远不要在外层卷里放太多重要数据。

典型场景

边境检查时被要求交出密码。你交出外层密码,检查员看到一些"敏感但不致命"的内容——几封邮件、一些照片。他们不知道,在这片数据深处,还藏着另一份真正重要的数据。

§ 04

算法级联

VeraCrypt 允许把多种加密算法串联使用——数据先用算法 A 加密,再用算法 B 加密,再用算法 C 加密。读取时反向解密。

可用级联组合:

  • AES-Twofish
  • AES-Serpent
  • Twofish-Serpent
  • AES-Twofish-Serpent(三层)
  • Serpent-Twofish-AES(三层,反向)

级联的优势在于纵深防御:即使某种算法未来被发现漏洞,其余层仍守护数据。代价是性能——三层级联吞吐量约为单层的三分之一。

💡 实用建议

对绝大多数用户,单层 AES-256 已足够安全。级联更适合高威胁模型(记者、活动家、跨国企业高管)。不要盲目选择三层——它会让备份和迁移变复杂。

§ 05

性能调优

VeraCrypt 性能高度依赖硬件加速。现代 CPU 大多支持 AES-NI 指令集,可将 AES 加密速度提升 5-10 倍,达到每秒数 GB。

影响性能的因素

  • 🔧 算法选择:AES 最快(有硬件加速),Serpent 次之,Twofish 最慢
  • 🧬 级联层数:每多一层,吞吐量约下降至 1/n
  • 💿 存储介质:SSD 远快于 HDD,NVMe 远快于 SATA
  • ⚙️ CPU 核心:多线程加密,多核有明显优势

性能基准

# Intel i7-12700K + NVMe SSD AES-256 (硬件加速) : 5.2 GB/s ⚡ Twofish : 1.1 GB/s Serpent : 0.9 GB/s AES-Twofish-Serpent : 0.6 GB/s # 日常使用中 - 文件复制: 几乎无感 (AES, SSD) - 视频播放: 几乎无感 (任何算法) - 大型游戏: 略有延迟 (级联模式)
§ 06

术语表

加密卷
VOLUME
VeraCrypt 管理的加密数据单元,可以是文件型、分区型或系统型。
卷头
VOLUME HEADER
加密卷开头的 128KB 区域,包含主密钥等元数据,用密码加密。
主密钥
MASTER KEY
真正用于加解密数据的密钥,由随机数生成器产生。
SALT
随机字符串,与密码一起输入 KDF,防止彩虹表攻击。
挂载
MOUNT
将加密卷映射为操作系统可见的盘符,使其内容可被读写。
合理否认
PLAUSIBLE DENIABILITY
通过隐藏卷实现——即使被强迫交出密码,也无法证明还存在另一层数据。
§ 07

最佳实践

🗝️

使用强密码,且每个卷不同

至少 20 字符,或 6-8 词随机口令短语。不同卷使用不同密码——某个泄露不影响其他。

💾

备份卷头

卷头损坏 = 数据永久丢失。使用 VeraCrypt 内置的"备份卷头"功能,存到独立位置。

🔑

使用关键文件作为二次因子

密码 + 关键文件比单纯密码强得多。关键文件可以是任何文件,但确保不会被修改或删除。

🚪

使用完毕立即卸载

挂载状态下内存中存在主密钥。养成"用完即卸载"的习惯,缩短暴露窗口。

🔄

定期升级到最新版本

开源软件安全修复持续发布。升级前务必先卸载所有挂载的卷,并备份卷头。

§ 08

常见陷阱

😵

忘记密码 = 永久丢失数据

VeraCrypt 没有密码找回机制,官方团队也无法解密。务必备份密码到安全的物理位置。

📦

把加密卷放在云盘同步

云盘同步会监控文件变化,每次写入都重新上传整个卷——浪费带宽且可能损坏。建议关闭同步。

🔍

挂载状态下被读取内存

挂载时主密钥在内存中。若电脑被攻击者获取,主密钥可能被读取。用完立即卸载。

🔄

升级时未先卸载所有卷

升级前必须卸载所有挂载的卷,否则安装程序可能无法替换系统驱动。

🕳️

隐藏卷使用不当导致数据丢失

向外层卷写入数据时,若不开启"保护隐藏卷"模式,可能覆盖隐藏卷。你必须自己记得它的存在。

SSD 全盘加密忽略 TRIM

SSD 的 TRIM 功能会泄露哪些区域空闲——可能暴露隐藏卷的存在。高敏感场景考虑在 HDD 上存放。