← 全部笔记

9 加密与凭据 · 文件与磁盘加密

硬盘解锁以后,文件还能再加一层锁

磁盘加密保护设备离线时的数据;文件加密让文件复制出去后仍是密文。谁能读到内容,取决于哪一层已经解锁。

约 15 分钟 · 截至 2026-11-06,Ubuntu 26.04 LTS · 文件实验在 Debian 13 实测;Ubuntu 安装与磁盘实验未实测

关机 · LUKS 未解锁

别人拆走硬盘磁盘里的数据:密文没有解锁材料 → 读不了

开机 · LUKS 已解锁

程序读到:明文内容自动解密磁盘里的数据:仍是密文内核已持有磁盘密钥有权限的程序 → 能读明文

开机 · 文件另行加密

复制到网盘 / U 盘note.txt.age · 密文文件口令还没有输入只拿到密文 → 读不了内容
  • 磁盘加密:存储层
  • 文件加密:单个文件
  • 解锁材料:口令、私钥、恢复密钥
图 1 假设对方没有解锁材料:关机未解锁的加密盘读不了;开机解锁后程序按权限读明文;另行加密的文件仍需自己的解锁材料。

学完你能

先看边界

登录密码挡不住别人拆盘读取

没有加密时,登录密码只管“这个系统让谁登录”。别人拆下硬盘,接到另一台电脑,就有机会直接读取文件。文件权限由正在运行的系统执行,不能代替对离线数据的加密。

明文是工具能够直接解释的原始内容;密文是经过加密、必须有正确解锁材料才能还原的内容。图 1 的三种状态,区别在于数据是否加密,以及解密能力现在交给了谁。

一台没开磁盘加密的笔记本已关机,登录密码很长。别人拆下硬盘后,密码还能阻止他读普通文件吗?

不能。另一台电脑不必经过原系统的登录界面。要防这种离线读取,需要让磁盘本身保存密文;磁盘损坏或文件删除则是另一类问题,仍需要备份。

磁盘这一层

解锁让读写透明,盘上仍然是密文

全盘加密(Full Disk Encryption,FDE)在文件系统之下保护存储区域,因此文档、配置和凭据可以一起受到保护。Ubuntu 的传统口令方案使用 LUKS;开机时用磁盘口令解锁,随后才进入普通的文件访问流程。官方机制说明把这两层分得很清楚。

“开机解锁后能读明文”是指程序看到的内容。系统不会把整盘永久改写成明文:每次读数据时内核解密,每次写数据时内核加密。你的编辑器因此可以像往常一样打开文件。

这台电脑 · 读写路径 应用程序 / 文件系统 内核 · dm-crypt磁盘加密的读写接口 磁盘 · 加密区域始终存密文 关机:没有可用的磁盘密钥 启动:等待磁盘口令 口令解开受保护的卷密钥 密钥可用 → 建立解锁后的入口 读密文给明文 写明文存密文
  1. 关机后,加密区域只留下密文。这里讨论口令解锁方案。先猜:仅打开电源,系统就能读文件吗?
  2. 启动程序等待磁盘口令,此时加密区域还没有打开。
  3. 正确口令解开受保护的卷密钥。卷密钥才是实际加解密磁盘数据的材料。
  4. 内核拿到密钥,建立解锁后的设备入口。文件系统可以从这里读写。先猜:编辑器读到的是密文,还是明文?
  5. 读文件时,内核把磁盘密文解成明文,再交给文件系统和有权限的程序。
  6. 写文件时,内核把明文加密后再落盘。使用体验透明,盘上的加密仍在。
图 2 解锁改变的是内核能否完成加解密,普通程序不必自己理解 LUKS 格式。

在安装器里选择加密方式

截至 2026-11-06,Ubuntu 26.04 LTS 的官方安装教程说明:选择 Erase disk and install Ubuntu 后,可选择 Encrypt with a passphrase(口令加密),或受硬件条件限制的 Use hardware-backed encryption(硬件支持的加密)。传统口令选项结合 LVM 与磁盘加密;LVM 是管理存储卷的工具,只开 LVM 不等于加密。其他高级选项见磁盘设置文档。

安装器 / LUKS 未实测

选择“擦除磁盘并安装”会清除所选磁盘的数据。先备份,建议在虚拟机里试安装;本页不提供格式化真实磁盘的命令。这里的“全盘”指受加密保护的数据区域,不保证启动所需的每个分区也加密;其他硬盘和复制出去的文件需要分别安排。

硬件自动解锁,还需要恢复密钥吗?

需要。TPM(Trusted Platform Module,可信平台模块)是电脑里的硬件安全组件。符合条件时,它能在预期的启动状态下帮助自动解锁磁盘,也可以配合额外的 PIN 或口令。硬盘移到别的电脑、启动环境变化等情况可能要求恢复密钥。

安装结束后,把显示的恢复密钥存到这台电脑之外的安全位置,并确保那里能独立访问。不要把“每次启动不输磁盘口令”理解成没有加密;也不要把普通口令方案误当成一定会发一串单独的恢复码。参见Ubuntu TPM 安装说明与恢复密钥说明。

磁盘已解锁时,登录和文件权限继续决定谁能访问明文。屏幕锁定通常不会关闭磁盘解锁入口;有读取权限的后台程序仍可工作。发给 AI 协作者的文件也按同样的权限边界读取。加密本身不会阻止已获准的读取、复制或删除。

电脑开机且 LUKS 已解锁。你把屏幕锁住后,一个本来就有权限读取文档的后台程序还能读吗?

锁屏限制交互登录,不等于卸载文件系统并关闭加密卷。

盘上仍是密文;内核在读取过程中提供明文。

选“能”是因为解密能力仍在内核运行环境里。磁盘加密主要保护离线存储;运行中的访问需要登录、权限和隔离共同管理。

文件这一层

文件单独加密,复制出去仍是密文

age 是专门加密文件的工具;gpg 是 GnuPG 的命令,支持 OpenPGP 格式的加密和签名。签名用于验证来源与改动,加密用于隐藏内容。本节用口令模式:加密和解密使用同一个文件口令,不需要先建立公钥体系。

note.txt明文原件仍保留 age -p 加密输入文件口令 note.txt.age密文可复制到网盘 age -d 解密同一个文件口令 restored.txt新的明文副本 note.txt明文原件仍保留 age -p文件口令 note.txt.age密文可复制到网盘 age -d同一口令 restored.txt新的明文副本
图 3 独立加密只保护生成的密文文件,原件与解密后的副本仍是明文。

用 age 做一次加密与恢复

只用练习数据。下面文件实验实测于 Debian GNU/Linux 13、bash、age 1.2.1、GnuPG 2.4.7,日期为 2026-11-06;不是 Ubuntu 26.04 的终端记录。除安装命令外不需要 sudo。先确认有 age;Ubuntu 上若需安装,可按下面命令操作,建议在虚拟机或容器里试。

sudo apt update
sudo apt install age gnupg

先用 mktemp -d 创建新的临时目录,进入它以后再操作;umask 077 让之后新建文件默认仅当前用户有权限。目录路径每次不同,不在这里预填。-p 表示交互式输入口令,-o 指定输出文件,-d 表示解密。详细参数可随时问 AI 或查 age --help。

mktemp -d
# 进入上一条命令实际返回的目录:cd 后粘贴该路径
umask 077
printf 'only a practice note\n' > note.txt
age -p -o note.txt.age note.txt
# 按提示设置并确认练习用口令;不要把口令写进命令
age -d -o restored.txt note.txt.age
# 按提示输入同一个文件口令
cmp note.txt restored.txt
cat restored.txt
only a practice note

cmp 比较两个文件的字节;本次一致,因此没有输出且退出状态为 0。最后的 cat 显示恢复内容。加密后的 note.txt.age 才适合用于“只交付密文”的场景;note.txt 与 restored.txt 都仍可直接阅读。扩展名只是名称,单纯把文件改成 .age 不会加密。

网盘只能收到密文。这次实验的三个文件中,应上传哪一个?

文件名:

note.txt.age 是加密输出;另外两个是明文。复制密文不会自动删除本机原件,解密也会新建明文输出。

已有 OpenPGP 工作流时,用 gpg 做同样的事

gpg 的 --symmetric 也是用口令加密;--decrypt 解密。以下在同一练习目录实测;交互提示可能由终端或密码窗口显示。gpg 可能缓存口令,所以刚加密完立即解密不一定再次提问,这不代表别人只拿密文就能读。

gpg --output note.txt.gpg --symmetric note.txt
gpg --output restored-gpg.txt --decrypt note.txt.gpg
cmp note.txt restored-gpg.txt

它生成的是 OpenPGP 文件,不是 age 格式;对应工具和口令都要能找到。这里也保留原件。参见GnuPG 命令说明。

给别人加密时,公钥和私钥各做什么?

age 也支持收件人模式:公钥是可以公开、让别人给你加密的收件地址;私钥是你保管的解密材料。用可信渠道核对收件人公钥,密文交给对方,私钥不用发送。本例仅用新建的练习密钥,不复用 SSH 私钥。

age-keygen -o key.txt
age-keygen -y key.txt > recipient.txt
age -R recipient.txt -o note-public.age note.txt
age -d -i key.txt -o restored-public.txt note-public.age
cmp note.txt restored-public.txt

key.txt 含私钥,应备份并保密;recipient.txt 只含公钥。公钥能加密,不能在私钥丢失后把历史密文解开。若用 gpg 的公钥模式,同样要备份私钥及其保护口令;本节的 gpg 口令模式则没有这对密钥。

恢复这一层

备份密文,也要备份能打开它的材料

恢复要同时满足两件事:有完好的数据副本,有匹配且能取出的解锁材料。磁盘口令方案要保管口令;TPM 方案要保管安装时提供的恢复密钥;age/gpg 文件要保管其口令,或者公钥模式对应的私钥及保护口令。它们不能互相替代。

位置 A · 数据备份note.txt.age 位置 B · 独立保管匹配的文件口令 取回密文取出口令 两者齐全 → 实际解密验证
图 4 口令不要只存在它所保护的加密盘里;换设备也能取出材料,才形成独立的恢复路径。

把一份受保护的解锁材料存进可独立访问的密码管理器,或放到安全保管的离线介质中;不要把未保护的私钥与密文一起交给同一个接收方。另存一份密文备份,应对硬盘损坏。用练习数据在另一个临时目录或设备上恢复一次,再确认内容完整;“复制成功”本身不能证明“恢复成功”。

如果所有可用的解锁方式都丢了,也没有独立的明文备份,加密数据就无法恢复。重置 Ubuntu 登录密码、换一把新私钥、找管理员提权,都不能替代原来的解密材料。反过来,如果电脑此刻还解锁且文件还能读取,应趁仍有访问能力时做好可恢复的备份。

把下面材料按“可公开”与“要保密且安排恢复”分类。

  • age 收件人公钥
  • age 私钥文件 key.txt
  • age/gpg 的文件口令
  • TPM 磁盘恢复密钥
可公开
保密并安排恢复

公钥只用于加密;其余三项都属于解锁材料。密文可交给存储方,但也可能透露文件名、大小等信息;不要把密文的存放权限与内容保密混为一谈。

密文备份在网盘里,文件口令却只保存在已经丢失的加密笔记本上。用两句话解释:缺了什么?下次如何安排?

有数据副本,但没有能独立取出的解锁材料,仍然无法解密。下次把文件口令存到可从另一台设备访问的安全位置,并实际做一次恢复。

  • 区分数据副本与解锁材料
  • 指出恢复材料不能只放在被保护的设备里
  • 提到独立访问与实际恢复验证

选择与回顾

选加密层次,先问数据会离开哪里

你在已解锁的 LUKS 笔记本上整理文档,要把备份交给只负责存储的网盘。哪种安排能让网盘读不到内容,同时你换电脑后仍能恢复?

读取已解锁文件系统得到的是明文,原电脑的磁盘加密不会随普通文件复制出去。

网盘读不到内容,但原笔记本丢失后,你也可能失去口令。

需要同时保密和可恢复。密文把文件保护带到网盘;独立保管的口令让你在失去原设备后仍能解密;恢复验证检查这条路径确实可用。

再往下一页,问题从“离线数据怎样保存”转向“运行中的环境怎样分开”:隔离的层次会继续比较用户权限、容器与虚拟机各自隔开什么。

本页依据的官方资料与实测记录

  1. Ubuntu Desktop:Install Ubuntu Desktop,26.04 LTS 安装教程,磁盘擦除、加密选项与口令保管。
  2. Ubuntu Desktop:Advanced disk setup features,口令加密、LVM 与其他高级选项。
  3. Ubuntu security:Full disk encryption,LUKS、卷密钥及读写映射。
  4. Linux kernel:dm-crypt,块设备的透明加解密。
  5. Ubuntu Desktop:Encrypt your disk with TPM;Hardware-backed disk encryption,硬件要求、自动解锁与恢复密钥。
  6. age 官方项目与age(1) 手册,口令模式、收件人与私钥、输出选项。
  7. GnuPG:Operational GPG Commands,口令加密、解密与口令缓存。
  8. 核对日期:2026-11-06。文件实验环境:Debian GNU/Linux 13,bash,age 1.2.1、GnuPG 2.4.7;所有示例仅使用练习文件。Ubuntu 安装器、LUKS、TPM 及 apt 安装未实测,以链接中的官方文档为依据。