PGP完整性验证

Linux 专栏收录该内容
2 篇文章 0 订阅

基于PGP非对称密匙的文件完整性验证

 Windows下PGP工具安装与使用

工具下载与安装

  • gpg4win-3.1.12下载
  • -装gpg4win
  • 默认安装即可

密匙对创建

  • - 启动kleopatra(安装后的启动程序)
  • - 新建密匙对
  • - 选择OpenPGP密匙对,不要选择X.509密匙,后者需要发送到CA机构
  • - 输入名字以及邮件地址,高级设置中可以选择密匙类型、长度、有效期等,保持默认即可。
  • - 确定后,会开始生成密匙对,期间会弹出提示框需要设置密匙的密码
  • - 密匙对生成后,会默认添加到当前界面中
  • - 邮件证书,点击认证,对密匙进行认证,按提示操作即可

对文件进行签名

  • - 对文件进行签名,注意不是加密,不要勾选加密
  • - 自动会生成.sig签名文件
  • - 导出公匙
  • - 签名文件与sig文集可以发布给第三方
  • - 公匙通过邮件等当时单独传给第三方
  • - 第三方根据公匙和sig文件即可对文件完整性进行校验

 对文件进行完整性校验

  • - 导入公匙
  • - 选择校验文件进行校验
  • - 校验结果会弹窗中给出,如果校验通过,提示内容为绿色,否则为红色
  • - 点击详情,可以看到Good signature为通过,否则为不通过

 Linux下PGP工具安装与使用

工具安装

  • - 先检查是否安装了gnupg2
  • - 如果没有安装,则通过dnf安装即可
  • - 如果已经安装,查看版本
gpg --version
gpg (GnuPG) 2.2.9
libgcrypt 1.8.3
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: /root/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

生成密匙对

gpg --full-generate-key
gpg (GnuPG) 2.2.9; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection?
  • - 选择加密算法,输入1,回车
  • - 选择密匙长度
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
  • - 默认为2048,如果使用4096长度,则输入4096后回车
  • - 选择密匙有效期
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 months
   <n>y = key expires in n years
Key is valid for? (0)
  • - 0为永不过期,直接回车即可
  • - 如果选择0,会再次提示确认,输入y回车
  • - 接下来依次输入用户ID相关资料,包括名字、email等,名字至少5个字符
  • - 确认所输入的名字、邮箱、注释,输入O(字母O不是数字0)回车
  • - 输入密匙密码,并再次确认密码
  • - 密匙对创建成功,类似以下输出:
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 517C158C2A3F33A6 marked as ultimately trusted
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/F4999B7534C9E703704D5383517C158C2A3F33A6.rev'
public and secret key created and signed.
pub   rsa2048 2020-08-11 [SC]
      F4999B7534C9E703704D5383517C158C2A3F33A6
uid                      testpgp (test soft verify) <123456@qq.com>
sub   rsa2048 2020-08-11 [E]

 

  • - 所生成的key以及公匙ID以实际为准

生成撤销证书

  • - 生成撤销证书,以后密匙作废时使用
gpg --gen-revoke 517C158C2A3F33A6

 

  • - 选择撤销原因
  • - 输入描述信息 空行回车结束
  • - 输入密匙密码
  • - 把生成的撤销密匙内容复制到文件中备份即可

输出密匙

  • - 输出公匙
gpg --armor --output public-key.txt --export [用户ID]

 

  • - 用户ID这里可以直接使用公匙ID,不用方括号,这样会把公匙输出到public-key.txt中,在其他电脑上验证一致性的时候,需要先导入公匙,就是该文件
  • - 输出私匙
gpg --armor --output private-key.txt --export-secret-keys
  • - private-key.txt中就是私匙

上传公匙

  • - 公匙可以上传到公匙服务器上,供他人使用;也可以通过邮件等其他方式分发给使用方
  • - 常用的公匙服务器列表:
hkp://keys.gnupg.net
hkp://subkeys.pgp.net
hkp://pgp.mit.edu
hkp://pool.sks-keyservers.net
hkp://zimmermann.mayfirst.org
  • - 可以通过send-keys参数将公匙上传到公匙服务器
gpg --send-keys [用户ID] --keyserver hkp://keys.gnupg.net
  • - 上面的命令就会把公匙上传到hkp://keys.gnupg.net上,公匙服务器之间会交换公匙,因此,如果上传成功,等待一段时间后,其他公匙服务器上也会有你的公匙
  • - 公匙服务器无法保证公匙的可靠性,因此,非面向公共用户的公匙没必要上传到公匙服务器

对文件签名

  • - 在当前目录生成一份【不包含】文件内容的签名文件且签名内容为ASCII码
gpg --detach-sign --armor filename
  • - 会在当前目录下生成.asc的签名文件,如果设置有密匙密码,会提示输入密码
  • - 如果要生成非ASCII码的签名文件,去掉--armor参数即可,生成的签名文件后缀为.sig

验证签名

  • - 首先要导入公匙,公匙可以通过邮件等方式获取
gpg --import public-key.txt
  • - 验证签名
gpg --verify filename.asc filename
  • - 如果验证通过,会显示Good signature字样;否则验证失败
  • - 也可以使用gpgv命令验证,但需要获取非ASCII码的公匙文件,通常名为pubring.kbx
gpgv --keyring pubring.kbx filename.asc filename


 

  • 0
    点赞
  • 1
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值