GPG操作——签名验证
问题描述:
可能大家都遇到过软件在下载过程中由于网络原因导致下载的软件体积与实际软件体积不符。最常见的办法是对待下载文件附加一个摘要文件。这种做法比较常见,也比较容易实现。但是,还是会有一个问题:如果我篡改了网站,改变了文件的内容,并对该文件做了一次摘要,替换了原有的摘要文件。那用户下载的文件就失去了摘要验证的意义。如何避免这种问题呢?
解决方案:
软件提供者对文件做签名,软件使用者对文件做验证。
签名/验证,是一种用于对网络数据传输有效性鉴别的常见方法,属于非对称加密算法领域。
使用私钥对数据进行签名,使用公钥对数据签名做校验。
在这里的理解可以是,私钥由软件提供者保留,而公钥由软件提供者在网站上公布,并且,该公钥经过更权威认证机构的签名。是不是很想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操作——签名验证的更多相关文章
- 有关linux的GPG签名验证错误的解决方法。
GPG签名验证错误:由于没有公钥,下列签名无法进行验证: NO_PUBKEY 6AF0E1940624A220 找了下原因,虽然不知道原理,不过大概意思还是能才出来的,解决方法如下: gpg --ke ...
- gpg的一些常用操作
(1)列出keys # gpg --list-keys /root/.gnupg/pubring.gpg ------------------------ pub 2048R/98681A63 2 ...
- C#调用GPG命令进行加密解密文件操作
public void GPG() { string password = "1234567890"; System.Diagnostics.ProcessStartInfo ps ...
- GpG使用指南
1. 简介 1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP.这个软件非常好用,迅速流传开来,成了许多程序员的必备工具.但是,它是商业软件,不能自由使用.所以,自 ...
- 加密和数字签名工具GPG
转载: 源文件位置:http://blog.chinaunix.net/uid-9525959-id-2001824.html GPG [功能] GPG是加密和数字签名的免费工具,大多用于加密信息的 ...
- GPG入门
GPG入门 摘自https://www.jianshu.com/p/1257dbf3ed8e Nitroethane 关注 2016.07.19 17:36* 字数 1003 阅读 6560评 ...
- GPG终极指南(加密/签名)
我们平时都听过非对称加密,公钥和私钥,签名验证,但这些证书都是怎么得到的呢?本篇文章会解答这些问题. 背景介绍 加密的一个简单但又实用的任务就是发送加密电子邮件.多年来,为电子邮件进行加密的标准一直是 ...
- WebApi安全性 使用TOKEN+签名验证
首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面临着许多的安全性问题, ...
- 开放api接口签名验证
不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...
随机推荐
- Hark的数据结构与算法练习之插入排序
算法说明: 先是拿语言进行一下描述: 假如是做降序排序,那么从头开始扫描每个数字,使每个数字与它前面的若干数字进行比较,直接找到小于当前数字a(当前数字以a代替)的数字b(小于a的数字以b代替). 然 ...
- sssssssss
构造函数new A 和new A()的区别,都是A类的实例化,后者可以向构造函数传参数. a=f(),指向window a=new f()指向当前函数的实例. Return b和return b()区 ...
- 洛谷 P1541 乌龟棋 Label:O(n^4)的dp
题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...
- 短语密码(blowfish_secret)的设置
简单的说,phpmyadmin就是一种mysql的管理工具,安装该工具后,即可以通过web形式直接管理mysql数据,而不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者,下面 ...
- RestSharp用法小结
今天有空,小结一下RestSharp的用法. RestSharp内置了XML和JSON的反序列化(deserializers ). application/json – JsonDeserialize ...
- Java泛型总结
1. 什么是泛型?泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的 ...
- OC中属性及方法
1.声明式属性 a.实例变量 b.声明属性 自动生成setter/getter方法 .h ->@property 属性类型 属性名; .m ...
- [IT扫盲]软件测试时期版本的称呼
有时候搞不懂,还没发布时的软件怎么会就有那么多版本,今天彻底想了解一下. 早有人写好了. 请参考这里: http://baike.baidu.com/view/707808.htm#1_2 测试版 α ...
- Archlinux 简明安装指南
archlinux是在distrowatch里位于top 10的发行版中,唯一采用roll release的distribution. pacman和yaourt双剑合壁,使得在archlinux安装 ...
- DS实验题 sights
算法与数据结构实验题 6.3 sights ★实验任务 美丽的小风姑娘打算去旅游散心,她走进了一座山,发现这座山有 n 个景点, 由于山路难修,所以施工队只修了最少条的路,来保证 n 个景点联通,娇弱 ...