9.4. 加密

9.4.1. 概述

9.4.1.1. 为什么要加密数据?

加密是保密的同义词。在备份的上下文中,加密可能非常有用,例如,如果您需要将备份数据放在您无法控制访问的地方,例如您的提供商的服务器。

除此之外,加密也可以应用于电子邮件:通常,邮件是不加密的,并且经常在网络或互联网上以明文形式发送。如果您的消息包含敏感信息,最好对其进行加密。

9.4.1.2. GNU 隐私保护

在 Linux 系统上,您会找到 GnuPG,即 GNU 隐私保护,它是一套与 PGP(良好隐私密码法)工具兼容的程序,这些工具是商业上可用的。

在本指南中,我们将仅讨论加密工具的非常简单的用法,并展示您需要什么才能生成加密密钥并使用它为您自己加密数据,然后您可以安全地将其存储在公共场所。更高级的用法说明可以在各种命令的 man 手册中找到。

9.4.2. 生成密钥

在您可以开始加密数据之前,您需要创建一对密钥。该密钥对由一个私钥和一个公钥组成。您可以将公钥发送给 корреспонденты,他们可以使用它为您加密数据,您可以使用您的私钥解密这些数据。您始终保留私钥,永远不要与其他人分享,否则他们将能够解密仅供您使用的数据。为了确保不会发生意外,私钥受到密码保护。密钥对是使用以下命令创建的

willy@ubuntu:~$ gpg --key-gen
gpg (GnuPG) 1.4.2.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions.  See the file COPYING for details.

gpg: directory `/home/willy.gnupg' created
gpg: new configuration file `/home/willy/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/willy/.gnupg/gpg.conf' are not yet
 active during this run
gpg: keyring `/home/willy/.gnupg/secring.gpg' created
gpg: keyring `/home/willy/.gnupg/pubring.gpg' created
Please select what kind of key you want:
    (1) DSA and Elgamal (default)
    (2) DSA (sign only)
    (5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n month
      <n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the
user ID from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Willy De Wandel
Email address: wdw@mvg.vl
Comment: Willem
You selected this USER-ID:
    "Willy De Wandel (Willem) <wdw@mvg.vl>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
					 
Passphrase:

现在输入您的密码。这可以是一个短语,越长越好,唯一的条件是您应该始终能够记住它。为了验证,您需要再次输入相同的短语。

现在,密钥对由一个程序生成,该程序生成随机数,并且除其他因素外,还使用系统的活动数据进行馈送。因此,现在启动一些程序,移动鼠标光标或在终端窗口中键入一些随机字符是一个好主意。这样,生成包含许多不同数字的数字的机会将更大,并且密钥将更难以破解。

9.4.3. 关于您的密钥

创建密钥后,您将收到有关指纹的消息。这是一个 40 个十六进制数字的序列,它非常长,以至于在任何计算机上都很难两次生成相同的密钥。您可以相当肯定这是一个唯一的序列。此密钥的简短形式由您的姓名以及最后 8 个十六进制数字组成。

您可以按如下方式获取有关您的密钥的信息

willy@ubuntu:~$ gpg --list-keys
/home/willy/.gnupg/pubring.gpg
------------------------------
pub     1024D/BF5C3DBB 2006-08-08
uid                    Willy De Wandel (Willem) <wdw@mvg.vl>
sub     4096g/A3449CF7 2006-08-08

此密钥的密钥 ID"BF5C3DBB"。您可以将您的密钥 ID 和您的姓名发送到密钥服务器,以便其他人可以获取有关您的此信息并使用它为您加密数据。或者,您可以将您的公钥直接发送给需要它的人。您的密钥的公共部分是您在使用以下命令时看到的长串数字--exportgpg 命令的选项

gpg--export -a

但是,就本指南而言,我们假设您只需要您的密钥即可为自己加密和解密数据。如果您想了解更多信息,请阅读 gpg man 手册。

9.4.4. 加密数据

现在您可以加密一个.tar存档或压缩存档,然后再将其保存到备份介质或传输到备份服务器。像这样使用 gpg 命令

gpg-e -r (部分)uid 存档

选项-e告诉 gpg 进行加密,选项-r指示为谁加密。请记住,只有以下用户名的用户-r选项将能够再次解密数据。一个例子

willy@ubuntu:~$ gpg -e -r Willy /var/tmp/home-willy-20060808.tar

9.4.5. 解密文件

使用-d选项,您可以解密已为您加密的文件。数据将在您的屏幕上滚动,但是加密的副本将保留在磁盘上。因此,对于纯文本以外的文件格式,您将需要保存解密的数据,以便您可以使用适当的程序查看它们。这是使用-ogpg 命令的选项

willy@ubuntu:~$ gpg -d -o /var/tmp/home-willy-decrypt.tar /var/tmp/home-willy-20060808.tar.gpg

You need a passphrase to unlock the secret key for
user: "Willy De Wandel (Willem) <wdw@mvg.vl>"
4096 ELG-E key, ID A3449CF7, created 2006-08-08 (main key ID BF5C3DBB)

gpg: encrypted with 4096-bit ELG-E key, ID A3449CF7, created 2006-08-08
        "Willy De Wandel (Willem) <wdw@mvg.vl>"

Warning没有密码 = 没有数据
 

如果您不记得密码,则数据将丢失。甚至系统管理员也无法解密数据。这就是为什么有时将重要密钥的副本保存在银行的密封金库中的原因。