最近回顾以前接触却没能理解的技术问题,逐步恢复博客高产出的习惯~
问题描述:
可能大家都遇到过软件在下载过程中由于网络原因导致下载的软件体积与实际软件体积不符。最常见的办法是对待下载文件附加一个摘要文件。这种做法比较常见,也比较容易实现。但是,还是会有一个问题:如果我篡改了网站,改变了文件的内容,并对该文件做了一次摘要,替换了原有的摘要文件。那用户下载的文件就失去了摘要验证的意义。如何避免这种问题呢?
解决方案:
软件提供者对文件做签名,软件使用者对文件做验证。
签名/验证,是一种用于对网络数据传输有效性鉴别的常见方法,属于非对称加密算法领域。
使用私钥对数据进行签名,使用公钥对数据签名做校验。
在这里的理解可以是,私钥由软件提供者保留,而公钥由软件提供者在网站上公布,并且,该公钥经过更权威认证机构的签名。是不是很想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详解——基于gnupg-1.4.12版本》 GPG,全称为GNU Privacy Guard,是GNU项目的一部分,是一种遵循OpenPGP标准(RFC 4880)的免费开源加密软件。在信息安全领域,GPG被视为一个强大的工具,用于保护...
而gpg4win与Maven的结合,主要体现在发布到Maven中央仓库时的签名验证。为了确保发布的库不受篡改,Maven要求所有上传到中央仓库的工件必须使用GPG签名。gpg4win的使用,使得开发者可以轻松地为自己的jar包或pom.xml...
GPG4Win,全称为GNU Privacy Guard for Windows,是一款专为Windows操作系统设计的加密工具包,旨在提供强大的数据安全保护功能。这个软件套件基于自由且开源的GNU Privacy Guard(GnuPG),允许用户对文件、电子...
本文将深入探讨GPG,特别是针对Windows系统的版本——GPG for Windows v3.1.5。 GPG,全称GNU Privacy Guard,是开放源代码的PGP(Pretty Good Privacy)的替代品,遵循OpenPGP标准,用于实现数据的加密和签名。其...
- **gpg.exe**:这是GPG的可执行文件,用于执行加密、解密、签名和验证等操作。 - **FAQ**:常见问题解答,通常包含了关于如何使用GPG的常见问题及其解决方案。 - **gpg.man**:可能是GPG的手册页,提供命令行工具的...
- **签名和验证**:`gpg --sign filename`创建签名,`gpg --verify filename.sig`验证签名。 - **密钥管理**:`gpg --list-keys`查看密钥,`gpg --gen-key`生成新的密钥对,`gpg --delete-key keyid`删除密钥。 4...
- `gpg --verify signed-file.txt.gpg`:验证签名。 **五、GnuPG与其他工具的集成** GnuPG可以与其他应用如Thunderbird(邮件客户端)、Enigmail( Thunderbird 插件)、GPGTools(MacOS工具集)等集成,提供更...
Gnu Privacy Guard(GPG)是OpenPGP标准的一个实现,广泛用于加密、签名和验证数据。本文将详细讲解如何使用GPG来加密文件,以及如何以最佳设置进行操作,特别关注在Unix/Linux环境下通过Shell脚本来实现这一过程。 ...
GPG是一种强大的加密工具,基于公钥加密算法,如RSA或Elgamal,提供数据加密和数字签名功能。而YubiKey则是一种硬件安全设备,可以作为密钥存储和身份验证的物理媒介。 1. **GPG非对称加密**: 非对称加密是信息...
1. `repomd.xml.asc`: 这是一个GPG签名文件,用于验证`repomd.xml`文件的完整性。Gnu Privacy Guard (GPG) 提供了数字签名功能,确保从仓库下载的文件未被篡改。 2. `primary.xml.gz`: 这是仓库的主要数据文件,...
`yum`通过连接到指定的服务器,可以从那里下载并安装RPM包,同时确保系统的安全性,因为每个包通常都会有一个GPG签名来验证其来源。 在配置`yum`服务器时,首先需要确保服务器具备FTP服务。安装FTP服务器软件,如...
7. **GPG签名验证**:为了保证代码的完整性和安全性,pwntools支持GPG签名验证,确保下载的库文件未被篡改。 8. **兼容性**:pwntools兼容Python 2和Python 3,同时支持多种操作系统,如Linux、Windows、MacOS等。 ...
- **gpgcheck**:设置为1表示启用GPG签名检查,确保下载的软件包来自官方且未被篡改。 - **gpgkey**:指定了验证软件包的GPG密钥路径。 ##### 2. [updates] 部分 ``` [updates] name=CentOS-$releasever-Updates ...
GPG签名文件(putty.exe.gpg)的存在则进一步增强了软件的可信度,用户可以通过验证这个签名来确认下载的PuTTY程序未被篡改,保证了软件来源的可靠性。 总的来说,PuTTY 0.75在64位x86平台上的表现强大而稳定,不仅...
- `gpgcheck`:设置为1表示启用GPG签名验证,以确保下载的软件包的完整性和真实性。 - `gpgkey`:指明GPG密钥的位置,用于验证软件包签名。 保存并退出编辑器。 ##### 步骤2:清理和重建Yum缓存 执行以下命令来...
3. **密钥管理**:GPG 使用一对密钥——公钥和私钥。公钥可以公开分享,用于加密数据;而私钥则必须保密,用于解密数据和验证签名。GPGView 使得这个过程对用户更友好。 **GPGView 的特点** 1. **用户友好界面**:...
2. **GPG签名验证**:为了保证软件包的安全性,默认情况下YUM启用了GPG签名验证功能。如果遇到签名验证失败的问题,可以检查GPG公钥文件是否正确,或者考虑暂时禁用该功能(将`gpgcheck`设置为0)以便排查问题。 3....
前者可能是一个ASCII Armor编码的GPG签名文件,用于验证下载的安装包是否完整无篡改,确保用户下载的是官方正品;后者则是实际的安装执行文件,用户双击后按照提示即可完成软件的安装。 总的来说,荣耀电脑管家...
- **RSA签名**:数字签名用于验证消息的来源和完整性,RSA算法可以用于签名。Python的`cryptography`库提供了签名和验证功能。 - **X.509证书**:PKI中的证书用于绑定公钥与身份,X.509标准定义了证书的格式。...