搜索

GPG简要介绍

GNU Privacy Guard(GnuPG或GPG)是一个密码学软件,用于加密、签名通信内容及管理非对称密码学的密钥。GnuPG是自由软件,遵循IETF订定的OpenPGP技术标准设计,并与PGP保持兼容。GnuPG是自由软件基金会的GNU计划的一部分,曾受德国政府资助。

对称加密和非对称加密的区别

  1. 对称加密

    • 举个简单的例子,当A用密码将压缩包进行加密,B使用相同的密码进行解密,两者使用一个相同的密钥(密码)对信息进行加解密,这就是对称加密。但其中有一个严重的问题:如何保证密钥交换过程的安全性?换而言之,如果A给B和C发送信息,如果使用相同的密钥,那么A给B发送的信息,C也可以解密,反之亦然。在这种情况下,A只能使用不同的密钥和B、C进行联系,但密钥一旦增多,管理将会变得越来越困难。
    • 示例:压缩包加密
  2. 非对称加密

    • 同样的情况下,A想到了一个办法。为了和B进行联系,A让B给自己一把打开了的锁(锁是属于B的)(公钥),A把信息保存在一个箱子里,再用B的锁把箱子锁上。这样一来,如果C在运送过程中得到了箱子,没有B的钥匙(私钥),他是无法打开的。
    • 假设A已经用一种安全的方法将自己打开了的锁(锁是属于A的)发送给了B,那么当B给A回复时,只需用A提供的锁加密即可。当信息到达A时,A再用自己的钥匙开锁。所以,非对称加密的关键在于:在信息传递过程中,加解密使用的密钥是不同的(公钥加密,私钥解密)。
    • 非对称加密还有一个优点:A在把信息发送给B之前,还在信息的末尾按下了自己的指纹(签名)。这样,当收到消息时,B就知道这个消息一定是A发出的。
    • 示例:GPG加密

软件安装与使用

Windows (GPG4Win)

由于Kleopatra默认不支持Windows,所以我们需要使用GPG4Win中已编译好的用于Windows的Kleopatra。

软件简介

Gpg4win是用于Microsoft Windows上的电子邮件与文件的加密软件, 使用了GnuPG 公钥加密。Gpg4win最初得到了德国联邦信息安全办公室的资助。Gpg4win及其所有包含的工具都是自由及开放源代码软件,Windows平台上典型的非商用选择。

gpg4win-logo.webp

下载与安装

  1. 打开GPG4Win官网下载页面
  2. 下载完成之后自行安装。GNU隐私助理可选安装。

Linux

如果你使用KDE Plasma桌面,安装kleopatra程序包即可。Gnome桌面也可以使用,不过视觉体验不太好,而且还要安装一大堆依赖。

Kleopatra 的使用

  1. 密钥创建

    • 安装完成之后在开始菜单或桌面找到Kleopatra,点击「新建密钥对」,输入你的姓名和电子邮件(注意:如果你需要上传密钥至密钥服务器,你的输入的名字将被公开)。
    • 输入完成之后,点击右下角的「高级设置」,你可以选择使用RSA、DSA,或者ECC加密算法。我建议选择521位密钥长度的ECC算法(NIST P-521),因为在加解密速度和密钥大小上,ECC比RSA更具有优势,而521位的密钥长度也比较安全。
    • 在下方的「证书用途」,你可以选上「验证」标签,视情况选择有效期(我一般不设置有效期,即永久有效)。
    • 选择完成之后,就可以创建密钥了。(注意:强烈建议输入复杂的密码来保护你的密钥。
      密钥创建.webp
  2. 分享自己的公钥

    • 在你创建的密钥上点击右键,选择「导出...」,会生成公钥文件(*.asc),接下来你就可以把公钥文件发送给其他人了。(注意:一定要把密钥的指纹发给他人,否则无法验证密钥的真实性。

      • 在密钥上右键,「细节」,可以看到密钥的指纹。用指纹可以验证密钥是否可信。
        指纹.webp
    • 你也可以选择「在服务器上发布」,它会将你的密钥发送至公开的密钥服务器。注意:上传至服务器后,你设置的名字和电子邮件都会公开。同时,如果你没有设置密钥的有效期,必须上传密钥的吊销证书才能撤销密钥。
  3. 导入其他人的公钥
    有两种方法获取密钥并导入。

    • 从文件或剪贴板导入密钥

      • 点击菜单栏的「文件」,再点击「导入...」,选择他人的公钥文件即可导入。
      • 也可以将公钥内容复制到Kleopatra自带的记事本(notepad)中,然后点击「导入 记事本内容」。
        记事本导入密钥.webp
      • 导入后,一定要向密钥的所有人核对密钥的指纹,防止公钥被篡改。之后,建议对你所导入的密钥更改证书信任级别(Change owner trust)。
    • 从密钥服务器导入密钥

      • 为了下载密钥,我们需要访问一个公开的密钥服务器,例如OpenPGP Keyserver
      • 在搜索框中填写欲搜索密钥的电子邮件地址或指纹。搜索指纹时,要在指纹前面加上「0x」才是密钥ID,例如搜索「0x42F878C6B7ED7C60C52719A0CB292CC0ADF36DFF」。
      • 在搜索出的结果中,点击keyID对应的值即可查看密钥内容,再按照上面的方法复制到剪贴板,然后在notepad中导入。
        密钥服务器.webp
  4. 加密

    • 当你确定密钥真实有效后,就可以使用他人的公钥加密数据。
    • 若要加密纯文本内容,使用Kleopatra自带的记事本即可。当你在记事本里输入了待加密的内容后,点击选栏的「收件人」,可以选择「为我加密」和「为他人加密」(如果你不选择「为我加密」,那么你就无法使用自己的密钥解密内容,适合在不安全的设备上使用),强烈建议对内容进行签名以保证有效性。签名并加密后,便可以将密文安全且准确地发送出去。
    • 若要加密文件,在工具栏里点击「签名/加密」,选择你要加密的文件,之后的操作和上文一样。加密完成后,会在源文件的目录下生成加密后的文件(*.pgp)。
  5. 解密

    • 若要解密纯文本内容,将文本粘贴到记事本中,点击「解密/验证记事本内容」即可。
    • 若要解密文件,在工具栏里点击「解密/校验」,选择加密了的文件解密,然后点击「Save All」保存文件即可(默认保存在加密文件的同目录)。
    • 注意:如果加密的文件具有签名,在解密的同时也会进行签名验证,但如果没有导入签名方的公钥就无法校验,所以若提示无法完成校验,需要先导入签名方的公钥(可以在密钥服务器上搜索证书ID或者从文件导入)。
  6. 仅签名

    • 若要只进行签名而不加密(发送的信息是明文,只能保证信息不被篡改),在记事本或文件加密的「收件人」一栏中,勾选「签名身份」,取消勾选「为我加密」和「为他人加密」即可。
    • 文本加密后,会生成包含原文本的签名信息。文件加密后,会在原目录生成签名文件(*.sig)。
  7. 仅验证

    • 验证和解密的方法大致相同。输入包含签名信息的文本到记事本或校验一个签名文件(*.sig)即可。

Android (OpenKeyChain)

待补充

注意事项

  • 既然都用GPG了,为了保证安全性,一种可行的方法是安装Linux的虚拟机,在虚拟机里加解密,毕竟哪个人的电脑里没点窃取隐私的东西呢╮(╯▽╰)╭ ?
  • 如果导入公钥后,签名仍校验失败,请及时联系发件人核实情况,并检查互联网连接是否安全。

后记

  • 这篇教程是本博客的第一篇文章,写了好久。。。又因为没有Android手机,OpenKeyChain的教程只能先鸽着了(其实就是懒得写)。之后陆陆续续应该会有其它的教程文章发布,敬请留意。

最后修改于2021年2月3日 11:54

加密 Windows Linux Android 计算机

版权属于:Liups233
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
12
查看目录

目录

来自 《通过GPG将数据进行非对称加密》
评论

Liups233

我本可以忍受黑暗,如果未曾见过光明