使用gpg进行安全签名来验证下载的文件是否完整
2014-04-04 02:34
495 查看
/*********************************************************************
* Author : Samson
* Date : 04/04/2014
* Test platform:
* Linux ubuntu 3.2.0-58-generic-pae
* GNU bash, version 4.2.39
* *******************************************************************/
数字签名是什么?
数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
数字签名是非对称密钥加密技术与数字摘要技术的应用。
主要功能是什么?
保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名是个加密的过程,数字签名验证是个解密的过程。
下面将用一个例子来说明如何来进行签名的验证,以确保下载的文件是没有经过修改的,防止被非作者进行修改后重新打的包(这里面的文章可大了,你懂的:_()
如何使用gpg进行安全签名来验证下载的文件是否完整,以mediawiki为例:
首先,到mediawiki official web download:
mediawiki-1.22.5.tar.gz
再得到上版本的签名文件,再得到pubkey,网页上的获取点如下图:
得到MediaWiki 1.22.5 GPG安全签名文件:mediawiki-1.22.5.tar.gz.sig
能过上图的
MediaWiki的GPG的公钥 得到pubkey文件,并保存到文件mediawiki_pubkey.txt中;
导入公钥到当前系统中:
fuckids@debian-IDS:~/wiki$ gpg --import mediawiki_pubkey.txt
gpg: /home/fuckids/.gnupg/trustdb.gpg: trustdb created
gpg: key 7F901A30: public key "Mark A. Hershberger <mah@everybody.org>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: no ultimately trusted keys found
//列出当前的公钥,检查 是否导入 成功
fuckids@debian-IDS:~/wiki$ gpg -k
/home/fuckids/.gnupg/pubring.gpg
--------------------------------
pub 2048R/7F901A30 2009-07-01 [expires: 2019-06-29]
uid Mark A. Hershberger <mah@everybody.org>
sub 2048R/84896BEA 2009-07-01 [expires: 2019-06-29]
//使用签名文件对下载的文件进行验证:
fuckids@debian-IDS:~/wiki$ gpg --verify mediawiki-1.22.5.tar.gz.sig mediawiki-1.22.5.tar.gz
gpg: Signature made Fri 28 Mar 2014 08:21:11 AM CST using RSA key ID 7F901A30
gpg: Good signature from "Mark A. Hershberger <mah@everybody.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: 3CEF 8262 806D 3F0B 6BA1 DBDD 7956 EE47 7F90 1A30
其中 gpg: Good signature from "Mark A. Hershberger <mah@everybody.org>" 这一行表示签名文件是正确的,表示下载的包并没有被中间修改过;
关于gpg相关的请参考:
http://www.gnupg.org
http://www.ruanyifeng.com/blog/2013/07/gpg.html
http://hi.baidu.com/hs_fish/item/8eb09d0b1bab79006c9048c9
* Author : Samson
* Date : 04/04/2014
* Test platform:
* Linux ubuntu 3.2.0-58-generic-pae
* GNU bash, version 4.2.39
* *******************************************************************/
数字签名是什么?
数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。
数字签名是非对称密钥加密技术与数字摘要技术的应用。
主要功能是什么?
保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
数字签名是个加密的过程,数字签名验证是个解密的过程。
下面将用一个例子来说明如何来进行签名的验证,以确保下载的文件是没有经过修改的,防止被非作者进行修改后重新打的包(这里面的文章可大了,你懂的:_()
如何使用gpg进行安全签名来验证下载的文件是否完整,以mediawiki为例:
首先,到mediawiki official web download:
mediawiki-1.22.5.tar.gz
再得到上版本的签名文件,再得到pubkey,网页上的获取点如下图:
得到MediaWiki 1.22.5 GPG安全签名文件:mediawiki-1.22.5.tar.gz.sig
能过上图的
MediaWiki的GPG的公钥 得到pubkey文件,并保存到文件mediawiki_pubkey.txt中;
导入公钥到当前系统中:
fuckids@debian-IDS:~/wiki$ gpg --import mediawiki_pubkey.txt
gpg: /home/fuckids/.gnupg/trustdb.gpg: trustdb created
gpg: key 7F901A30: public key "Mark A. Hershberger <mah@everybody.org>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: no ultimately trusted keys found
//列出当前的公钥,检查 是否导入 成功
fuckids@debian-IDS:~/wiki$ gpg -k
/home/fuckids/.gnupg/pubring.gpg
--------------------------------
pub 2048R/7F901A30 2009-07-01 [expires: 2019-06-29]
uid Mark A. Hershberger <mah@everybody.org>
sub 2048R/84896BEA 2009-07-01 [expires: 2019-06-29]
//使用签名文件对下载的文件进行验证:
fuckids@debian-IDS:~/wiki$ gpg --verify mediawiki-1.22.5.tar.gz.sig mediawiki-1.22.5.tar.gz
gpg: Signature made Fri 28 Mar 2014 08:21:11 AM CST using RSA key ID 7F901A30
gpg: Good signature from "Mark A. Hershberger <mah@everybody.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: 3CEF 8262 806D 3F0B 6BA1 DBDD 7956 EE47 7F90 1A30
其中 gpg: Good signature from "Mark A. Hershberger <mah@everybody.org>" 这一行表示签名文件是正确的,表示下载的包并没有被中间修改过;
关于gpg相关的请参考:
http://www.gnupg.org
http://www.ruanyifeng.com/blog/2013/07/gpg.html
http://hi.baidu.com/hs_fish/item/8eb09d0b1bab79006c9048c9
相关文章推荐
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- [Publish AAR To Maven] 使用GPG对文件进行签名加密
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- [Publish AAR To Maven] 使用GPG对文件进行签名加密
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- linux下如何使用sftp命令进行文件上传和下载
- [nginx]统计文件下载是否完整思路(flask)
- 使用struts2进行文件下载以及下载权限控制的例子
- 对下载文件是否完整的判断方法
- Windows 服务器使用FTP出现“当前的安全设置不允许从该位置下载文件" 警告
- 3种下载文件程序的思考,为何使用NIO进行异步网络通讯
- WebClient实现下载txt文件并与用户输入进行匹配 WebClient实现用户序列号验证 txt文件在服务器端密文存储 RSA解密加密
- 使用数据流进行文件下载
- SecureCRT使用sz和rz命令进行文件的上传和下载
- Java使用MD5对文件进行签名
- 使用Loadrunner进行文件的上传和下载
- 邮件安全之使用PGP软件对邮件信息进行加密和签名(转载)
- 使用GPG非对称加密文件,保证数据安全
- 关于PPC或PDA无法打开文件。可能它不是使用可信证书进行签名的,或找不到它的某个组件