跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 安全和强化指南 / 本地安全性 / 加密分区和文件
适用范围 SUSE Linux Enterprise Server 15 SP5

12 加密分区和文件

加密文件、分区和整个磁盘可以防止有人未经授权访问您的数据,并保护您的机密文件和文档。

您可以选择的加密方案如下:

加密硬盘分区

可在安装期间或在已安装的系统中使用 YaST 创建加密分区。有关更多信息,请参见第 12.1.1 节 “在安装过程中创建加密分区”第 12.1.2 节 “在正在运行的系统上创建加密分区”。此选项还可用于可移动媒体(如外部硬盘),如第 12.1.3 节 “加密可移动媒体的内容”中所述。

使用 GPG 加密单个文件

要快速加密一个或多个文件,可以使用 GPG 工具。有关更多信息,请参见第 12.2 节 “使用 GPG 加密文件”

使用 Rage 加密单个文件

可以使用 Rage 加密工具来加密一个或多个文件。有关更多信息,请参见第 12.3 节 “使用 Rage 加密文件”

警告
警告:加密提供的保护有限

本章中所述的加密方法无法防范运行中系统的安全性受到损害。成功挂载加密卷后,具有适当权限的任何人都可以访问它。不过,加密媒体在计算机丢失或被窃的情况下会很有用,它还可以防止未经授权的人员读取您的机密数据。

12.1 使用 YaST 设置加密文件系统

使用 YaST 在安装期间或已安装的系统中加密分区或部分文件系统。不过,在已安装的系统中加密分区更加困难,因为这需要重新调整分区大小并更改现有分区。在此情况下,创建一个指定大小的加密文件来存储其他文件或文件系统的某些部分可能更加方便。要加密整个分区,需要在分区布局中提供一个专用于加密的分区。默认情况下,YaST 的标准分区建议并不包括加密分区。请在分区对话框中手动添加加密分区。

12.1.1 在安装过程中创建加密分区

警告
警告:口令输入

确保牢记加密分区的口令。没有这个口令将无法访问或恢复加密数据。

用于进行分区的 YaST 专家对话框提供了创建加密分区所需的选项。要创建新的加密分区,请执行以下操作:

  1. 单击系统 › 分区程序运行 YaST 专家分区程序。

  2. 选择一个硬盘,单击添加,然后选择主分区或扩展分区。

  3. 选择分区大小或者要在磁盘上使用的区域。

  4. 选择文件系统以及此分区的挂载点。

  5. 选中加密设备复选框。

    注意
    注意:需要其他软件

    选中加密设备后,可能会出现一个弹出窗口,要求您安装其他软件。请确认安装全部所需的软件包,以确保加密分区正常工作。

  6. 如果仅在必要的情况下才需要挂载加密文件系统,请在 Fstab 选项中启用不挂载分区,否则请启用挂载分区并输入挂载点。

  7. 单击下一步,并输入用于加密此分区的口令。不会显示该口令。为防止键入错误,您需要输入口令两次。

  8. 单击完成以完成该过程。现已创建新加密的分区。

在引导过程中,操作系统会在挂载 /etc/fstab 中设置为自动挂载的任何加密分区之前要求您输入口令。此类分区在挂载后可供所有用户使用。

要在启动期间跳过挂载加密分区的步骤,请在提示输入口令时按 Enter。然后,再次拒绝输入口令的提示。在此情况下,不挂载加密文件系统,并且操作系统继续引导并阻止对您的数据的访问。

要想挂载引导期间未挂载的加密分区,请打开文件管理器,然后在列出文件系统上公用位置的窗格中单击该分区项。系统会提示您输入口令并装载分区。

在已存在分区的计算机上安装系统时,您还可以决定是否在安装期间加密现有分区。在此情况下,请遵循第 12.1.2 节 “在正在运行的系统上创建加密分区”中的说明并注意此操作将会损坏现有分区中的所有数据。

12.1.2 在正在运行的系统上创建加密分区

警告
警告:在正在运行的系统上激活加密

还可以在正在运行的系统上创建加密分区。但是,加密现有分区会损坏分区中的所有数据,并需要重新调整现有分区的大小及结构。

在运行中的系统上,于 YaST 控制中心选择系统 › 分区程序。单击继续。在 Expert Partitioner 中选择要加密的分区,并单击编辑。其余过程与第 12.1.1 节 “在安装过程中创建加密分区”中描述的过程相同。

12.1.3 加密可移动媒体的内容

YaST 将可移动媒体(例如外部硬盘或闪存盘)当作任何其他存储设备一样处理。您可按上述方法加密外部媒体上的虚拟磁盘或分区,但应禁止引导时挂载,因为系统仅在已启动并运行时才会连接可移动媒体。

如果您已使用 YaST 对可移动设备进行加密,GNOME 桌面会自动识别加密分区并在检测到该设备时提示输入口令。如果您在运行 GNOME 时插入 FAT 格式的可移动设备,输入口令的桌面用户将自动成为该设备的拥有者。对于文件系统不是 FAT 的设备,请显式更改非 root 用户的所有权,以授予其对设备的读写访问权限。

12.2 使用 GPG 加密文件

可以使用 GNU Privacy Guard (GPG) 加密软件来加密单个文件和文档。

要使用 GPG 加密文件,首先需生成一个密钥对。为此,请运行 gpg --gen-key 并遵循屏幕上的指导操作。生成密钥对时,GPG 将会基于您的真实姓名、注释和电子邮件地址创建一个用户 ID (UID) 用于标识密钥。指定用于加密文件的密钥时需要用到此 UID(或只是它的一部分,例如您的名字或电子邮件地址)。要查找现有密钥的 UID,请使用 gpg --list-keys 命令。要加密文件,请使用以下命令:

> gpg -e -a --cipher-algo AES256 -r UID FILE

请将 UID 替换为 UID 的一部分(例如,您的名字),并将 FILE 替换为要加密的文件。例如:

> gpg -e -a --cipher-algo AES256 -r Tux secret.txt

此命令会创建可通过 .asc 文件扩展名识别的指定文件(在本示例中为 secret.txt.asc)的加密版本。

-a 用于将文件的格式设置为 ASCII 文本,使内容可复制。省略 -a 会创建二进制文件,在上面的示例中,该文件为 secret.txt.gpg

要解密加密文件,请使用以下命令:

> gpg -d -o DECRYPTED_FILE ENCRYPTED_FILE

请将 DECRYPTED_FILE 替换为想让解密的文件使用的名称,并将 ENCRYPTED_FILE 替换为要解密的加密文件。

请记住,只能使用加密时所用的相同密钥来解密加密文件。要与其他人共享加密文件,必须使用此人的公共密钥来加密该文件。

12.3 使用 Rage 加密文件

Rage 是用于加密文件的安全文件加密软件。其密钥可轻松与其他人共享,并提供安全的默认设置,以防止意外误用或泄露敏感数据。我们建议使用 Rage 来加密文件。

可以使用以下命令安装 Rage:

> sudo zypper install rage-encryption

接收人必须首先生成一个密钥对才能使用 Rage 加密文件:

> rage-keygen -o ~/rage.key 2 ~/rage.pub

将创建两个文件:rage.pubrage.key

rage.pub example
> cat file.pub
    Public key: age17e4g67cs07jk3lmylyq6gduv26uf7tz7nm9jrsaxn8xxx9uc9amsdg4a5e
rage.key example
>  cat file.key
    # created: 2023-05-30T16:29:20+05:30
    # public key: age17e4g67cs07jk3lmylyq6gduv26uf7tz7nm9jrsaxn8xxx9uc9amsdg4a5e
重要
重要

file.key 是私用密钥,应将其保密。

加密

要加密文件,需要提供生成的公共密钥:

> rage -e -r PUBLIC_KEY -o ENCRYPTED_FILE FILE

例如:

> rage -e -r age17e4g67cs07jk3lmylyq6gduv26uf7tz7nm9jrsaxn8xxx9uc9amsdg4a5e -o test.txt.age test.txt
解密

加密的文件只能由拥有相应私用密钥的接收人解密。要与其他人共享加密文件,必须使用此人的公共密钥来加密该文件。

> rage -d -i ~/rage.key -o DECRYPTED_FILE ENCRYPTED_FILE FILE

例如:

> rage -d -i ~/rage.key -o test.txt.decrypted test.txt.age
通行口令

可以使用 -p--passphrase 参数结合通行口令来加密文件。默认情况下,Rage 会自动生成安全的通行口令,但您也可以选择输入通行口令。

> rage -e -p -o ENCRYPTED_FILE FILE

例如:

> rage -e -p -o test.txt.age test.txt
SSH

可以使用 SSH(安全套接字外壳)密钥而不是 Rage 密钥来加密文件。Rage 支持 ssh-rsassh-ed25519 公共密钥,并可以使用相应的私用密钥文件进行解密。不支持 ssh-agentssh-sk(FIDO)

> rage -e -p -o ENCRYPTED_FILE FILE

例如:

> rage -e -p -o test.txt.age test.txt

例如:

>  ssh-keygen -t ed25519

要进行加密,请运行:

>  rage -e -a -R PUBLIC_KEY_FILE -o ENCRYPTED_FILE FILE

例如:

>  rage -e -a -R id_ed25519.pub -o test.txt.age test.txt

要进行解密,请运行:

>  rage -d -i SSH_PRIVATE_KEY_FILE -o DECRYPTED_FILEENCRYPTED_FILE

例如:

>  rage -d -i id_ed25519 -o test.txt.decrypted test.txt.age
重要
重要

必须输入密钥和文件的路径。

多个身份

Rage 可以同时加密多个身份。任何接收人的私用密钥都可用于解密文件。

rage -e -a -R FIRST_SSH_PUBLIC_KEY-r FIRST_RAGE_PUBLIC_KEY... -o ENCRYPTED_FILE FILE

例如:

rage -e -a -R id_ed25519.pub -r age1h8equ4vs5pyp8ykw0z8m9n8m3psy6swme52ztth0v66frgu65ussm8gq0t -o -r age1y2lc7x59jcqvrpf3ppmnj3f93ytaegfkdnl5vrdyv83l8ekcae4sexgwkg test.txt.age test.txt
提示
提示

可以使用 -h--help 参数列出所有 Rage 命令参数。

12.3.1 其他资源