GPG和RPM-GPG-KEY详解

GPG在Linux上的应用主要是实现官方发布的包的签名机制。
GPG分为公钥及私钥。
公钥:顾名思意,即可共享的密钥,主要用于验证私钥加密的数据及签名要发送给私钥方的数据。
私钥:由本地保留的密钥,用于签名本地数据及验证用公钥签名的数据。
GPG基本命令

生成秘钥:gpg --gen-key
列出系统中已有的秘钥:gpg --list-keys
将公钥上传到服务器:gpg --send-keys [用户ID] --keyserver hkp://subkeys.pgp.net 
使用上面的命令,你的公钥就被传到了服务器subkeys.pgp.net,然后通过交换机制,所有的公钥服务器最终都会包含你的公钥。
生成公钥指纹:gpg --fingerprint [用户ID]
由于公钥服务器没有检查机制,任何人都可以用你的名义上传公钥,所以没有办法保证服务器上的公钥的可靠性。通常,你可以在网站上公布一个公钥指纹,让其他人核对下载到的公钥是否为真
导入公钥:gpg --import [密钥文件]
加密:gpg --recipient [用户ID] --output demo.en.txt --encrypt demo.txt
解密:gpg --decrypt demo.en.txt --output demo.de.txt
签名:gpg --sign demo.txt
运行上面的命令后,当前目录下生成demo.txt.gpg文件,这就是签名后的文件。
如果想生成单独的签名文件,与文件内容分开存放,可以使用detach-sign参数。
gpg --detach-sign demo.txt
运行上面的命令后,当前目录下生成一个单独的签名文件demo.txt.sig。

RPM-GPG-KEY实现原理

实现原理(以Red Hat签名为例):
1>RH在发布其官方的RPM包时(如本地RHEL光盘及FTP空间包),会提供一个GPG密钥文件,即所谓的公钥。
2>用户下载安装这个RPM包时,引入RH官方的这个RPM GPG公钥,用来验证RPM包是不是RH官方签名的。
导入GPG-KEY:
可以去https://www.redhat.com/security/team/key/或https://www.centos.org/keys/或/etc/pki/rpm-gpg查找相应的GPG密钥,并导入到RPM:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY
RPM-GPG-KEY-xxx是公钥文件,可以从官网下载

签名和加密概念

  • 签名与加密不是一个概念。
  • 签名类似于校验码,用于识别软件包是不是被修改过,最常用的的就是我们的GPG及MD5签名,原方使用一定的字符(MD5)或密码(GPG私钥)与软件进行相应的运算并得到一个定长的密钥。
  • 加密是用一定的密钥对原数据进行修改,即使程序在传输中被截获,只要它不能解开密码,就不能对程序进行修改,除非破坏掉文件,那样我们就知道软件被修改过了。

猜你喜欢

转载自blog.csdn.net/qq_36412715/article/details/83186617
gpg
今日推荐