欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

RPM-GPG-KEY详解

程序员文章站 2022-03-05 12:03:05
GPG在Linux上的应用主要是实现官方发布的包的签名机制 GPG分为公钥及私钥 公钥:顾名思意,即可共享的密钥,主要用于验证私钥加密的数据及签名要发送给私钥方的数据 私钥:由本地保留的密钥,用于签名本地数据及验证用公钥签名的数据 实现原理(以Red Hat签名为例): 1>RH在发布其官方的RPM ......

gpg在linux上的应用主要是实现官方发布的包的签名机制

gpg分为公钥及私钥

公钥:顾名思意,即可共享的密钥,主要用于验证私钥加密的数据及签名要发送给私钥方的数据

私钥:由本地保留的密钥,用于签名本地数据及验证用公钥签名的数据

 

实现原理(以red hat签名为例):

1>rh在发布其官方的rpm包时(如本地rhel光盘及ftp空间包),会提供一个gpg密钥文件,即所谓的公钥

2>用户下载安装这个rpm包时,引入rh官方的这个rpm gpg公钥,用来验证rpm包是不是rh官方签名的

 

导入gpg-key:

可以去https://www.redhat.com/security/team/key/或/etc/pki/rpm-gpg查找相应的gpg密钥,并导入到rpm:rpm --import /etc/pki/rpm-gpg/rpm-gpg-key

 

签名及加密概念:

签名与加密不是一个概念

签名类似于校验码,用于识别软件包是不是被修改过,最常用的的就是我们的gpg及md5签名,原方使用一定的字符(md5)或密码(gpg私钥)与软件进行相应的运算并得到一个定长的密钥

加密是用一定的密钥对原数据进行修改,即使程序在传输中被截获,只要它不能解开密码,就不能对程序进行修改,除非破坏掉文件,那样我们就知道软件被修改过了

 

rpm验证方法:

1>验证安装的整个软件包的文件rpm -v crontabs-1.10-8

2>验证软件包中的单个文件

rpm -vf /etc/crontab

如果文件没有被修改过,则不输出任何信息

3>验证整个软件包是否被修改过

rpm -vp adobereader_chs-7.0.9-1.i386.rpm

.......t /usr/local/adobe/acrobat7.0/reader/globalprefs/reader_prefs

s.5....t /usr/local/adobe/acrobat7.0/bin/acroread

4>验证签名

rpm -k adobereader_chs-7.0.9-1.i386.rpm

adobereader_chs-7.0.9-1.i386.rpm: sha1 md5 ok

 

验证结果含意:

s :file size differs

m :mode differs (includes permissions and file type)

5 :md5 sum differs

d :device major/minor number mis-match

l :readlink(2) path mis-match

u :user ownership differs

g :group ownership differs

t :mtime differs

 

 

原文地址: