最近回顾以前接触却没能理解的技术问题,逐步恢复博客高产出的习惯~
问题描述:
可能大家都遇到过软件在下载过程中由于网络原因导致下载的软件体积与实际软件体积不符。最常见的办法是对待下载文件附加一个摘要文件。这种做法比较常见,也比较容易实现。但是,还是会有一个问题:如果我篡改了网站,改变了文件的内容,并对该文件做了一次摘要,替换了原有的摘要文件。那用户下载的文件就失去了摘要验证的意义。如何避免这种问题呢?
解决方案:
软件提供者对文件做签名,软件使用者对文件做验证。
签名/验证,是一种用于对网络数据传输有效性鉴别的常见方法,属于非对称加密算法领域。
使用私钥对数据进行签名,使用公钥对数据签名做校验。
在这里的理解可以是,私钥由软件提供者保留,而公钥由软件提供者在网站上公布,并且,该公钥经过更权威认证机构的签名。是不是很想CA审核数字证书的系列流程?其实大同小异,只是这种方式更自由一些,也省去了CA认证的费用。 这种开放的数字安全模式有别于我们熟悉的PKI,它属于GunPG/PGP。
实践操作:
用commons-cdec下载为例,上图:
以commons-codec-1.8-bin.tar.gz为例,左边MD5的方式就不说了,看看pgp打开是个什么样的东西。
加有“PGP SIGNATURE”标识的一段BASE64编码的数字签名。
前面说过,要对签名校验,就需要有对应的公钥。那么公钥在那里呢?
就是那个红框的KEYS。
下载公钥:
wget http://www.apache.org/dist/commons/KEYS
接下来,导入公钥,并对commons-codec-1.8-bin.tar.gz进行签名验证。
$ gpg --import KEYS $ gpg --verify commons-codec-1.8-bin.tar.gz.asc commons-codec-1.8-bin.tar.gz
得到如下提示:
gpg: Good signature from "Gary David Gregory (Code signing key) <ggregory@apache.org>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2DB4 F1EF 0FA7 61EC C4EA 935C 86FD C7E2 A112 62CB
gpg: Good signature from "Gary David Gregory (Code signing key) <ggregory@apache.org>"说明这个签名有效。
有个警告,是因为本地密钥库不信任该公钥。
需要对这个公钥签名:
$ gpg --sign-key A11262CB gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 1 trust: 0-, 0q, 0n, 0m, 0f, 1u gpg: depth: 1 valid: 1 signed: 0 trust: 1-, 0q, 0n, 0m, 0f, 0u gpg: next trustdb check due at 2014-05-30 pub 2048R/A11262CB created: 2011-04-12 expires: never usage: SC trust: unknown validity: full sub 2048R/AD3D7F94 created: 2011-04-12 expires: never usage: E [ full ] (1). Gary David Gregory (Code signing key) <ggregory@apache.org> "Gary David Gregory (Code signing key) <ggregory@apache.org>" was already signed by key 23E8E553 Nothing to sign with key 23E8E553 Key not changed so no update needed.
这时候就不会有警告了。
相关推荐
此文档详细介绍使用GPG的签名和加密的原理及过程!推荐!
一种从 node.js 以编程方式对 JSON 对象进行签名和验证的工具。 用法 var jsonGpg = require ( 'json-gpg' ) ; var obj = { hello : 'world' } ; jsonGpg . sign ( obj , /* optional */ key , function ( err , ...
GRUB2签名扩展是一些脚本,可帮助您使用gpg验证,签名和取消签名GRUB2引导加载程序文件。 要求 你需要 GRUB2(sys-boot / grub:2) GNUpg> = 2.1(> = app-crypt / gnupg-2.1) 安装 Arch Linux(AUR) 通过运行...
使用GPG的简单密码管理器
建议改用提交签名验证。建立# Install dependenciesnpm install# Run the botnpm start用法在您的组织和存储库上。 如果要对所有拉取请求强制执行GPG签名,请确保启用。 如果您想运行自己的插件实例,请参阅 。这个...
此类签名的PDF文件可以通过$ gpg --verify file.pgp.asc.pdf轻松地进行验证。 这如何运作? gpg --clearsign用“ \ n--”替换“ \ n-”,这经常使内容混乱。 有时,在clearsign插入之前,最好用不同的替换“ \ n-...
gpg4win-2.2.1 ——Recommanded by Edward Snowden.
maven上传中央仓库是需要用pgp进行签名,pgp4win 2.0之前和之后的版本区别较大,官网都是2。0之后的,之前的需要特殊找一下,这里上传方便他人
GPG非对称加密需要公钥和私钥 :你的公钥的作用 :别人用来给你发加密的信息&别人验证你的签名,即加密&验证(别人来做) 你的私钥的作用 :你用来创建签名&解密别人发给你的信息的,即解密&签名(你来做)
基于GPG的域所有权验证 问题 当前,当站点需要验证域的所有权时,它们会使用几个类似的选项: 将随机标记文件放在网络根目录中的某个位置 需要添加随机DNS记录 ...并通过GPG消息签名提供立即的所有权验证。 这
windows版的gpg
GPG使用的是非对称的密钥体系,用户拥有一对密钥,包括一个公钥和一个私钥。公钥对外公布,私钥则由自己保存。使用公钥加密的数据可以用私钥解密,同样,使用私钥加密的数据可以用公钥解密。非对称的密钥可以用来...
GnuPG,简称 GPG,来自 http://www.gnupg.org,是 GPG 标准的一个免费实现。不管是 Linux 还是 Windows 平台,都可以使用。GPGneng 可以为文件生成签名、管理密匙以及验证签名。
PGP - GPG加密安全
gpg4win是一款基于 GPG 的非对称加密软件。非对称加密方式,简单理解就是用公钥加密文件,用私钥解密文件。如果你需要发送加密信息,首先获取接收者的公钥,然后利用该公钥加密后传递,对方利用对应的私钥就可解密。...
GPG Key 生成与导出,20190513最新版 OpenPGP signature (for gpg4win-3.1.7.exe) SHA256: ba2c4ac4cf9a44e19611f86ece4bafa71a5ef02553a1652a73b9037c74608b69 Changelog More Gpg4win-3.1.7 downloads Gpg4win ...
GiantPlus凌巨2.4液晶屏 GPG48238QS8 307228101 GPG4823011QS1
借助GPG签名,打包人员可以快速,轻松地验证源代码的发布。 所需任务概述: 创建和/或使用进行文件签名 使用作为密钥 将公钥上载到并 每个新的Git并 创建 上载存档的 为您的下载服务器配置 GPGit 旨在将GPG推向...
GPG加密解密工具,windows版本,操作解密友好 gpg4win-3.1版本,带说明书 配套博客说明的软件
关于GPG使用的最基本命令说明,有详细的例子