linux下RPM包的数字签名是干什么的?有什么用?

我用的是CentOS系统.属于YUM机制.
但是在YUM源里面有个密钥.查了一下说是RPM安装包的数字签名
不明白这个有什么用.所以来请教一下.谢谢

签字是基于非对称算法加密文件特征码的一种特殊的算法。就是用非对称算法,加密文件经过不可逆算法计算出来的哈希值,也就是特征码。

这种特征码因为是不可逆算法,你没办法简单的修改了文件后还能保持相同的特征码(当然理论上是存在的,但因为算法复杂而且整个文件都在参与计算,需要保证相同特征码而且文件还起作用几乎不可能,除非有很强的计算机性能强行去猜)。特征码很小,可以作为一种文件正确性的标识符号。
非对称算法,就是加密和解密是两个不同的算法,或者不同的数据,有两个钥匙 A 和 B 。用 A 加密的,可以用 B 解密,相反,用 B 加密的,可以用 A 解密。而且 A、B 不能互相计算出来对方,只能同时生成(当然如果计算机足够多,性能足够强势可以算出来的,不过现在的技术是全球计算机一起跑,也需要几万年)。

作用,就是你计算文件哈希值后,再用你这边的密匙解密加密后的签字数据,获得对方提供的哈希值做比对,来确定你得到的文件是不是被修改了。
你的密匙和对方加密的密匙配套,而且哈希值一致。那么就可以认定这个文件内容签字,这个文件是对方提供的,中间没有经过他人的修改,也没有发生文件的损坏。

这种被修改或者损坏后,签字还能同样的概率太低了。追问

非常详细的解释.这样的话就理解了.说白了.作用就是验证从服务器上下载的软件包是否经过未经许可的纂改!

追答

是的。证明这个软件包来源是可靠的。

不过数字签字还有很多别的用途,有些国家是认可数字签字的。
比如这个数字签字还可以用来签字一些协议文件文本。这样不需要你去手写签字,也不需要打印出来,就可以认为你同意了这个协议。在这些认可数字签字的国家,这个协议就具有法律效力了。

当然,这个数字签字就和 RPM 无关了。

不过有个隐患就是你的系统里面不能被别人恶意安装的钥匙(那个 AB 两把钥匙,一个用来公开,一个用来自己拿着,自己拿着的叫私钥,公开的叫做公钥)。
那么被这个被偷偷安装的钥匙会导致你的检查签字都成为符合签字的,但实际上不是由真正的来源用户提供的签字。
这是一种对付数字签字常用的攻击方法。

不过安装这种钥匙文件不是很容易。因为很多系统安装钥匙文件,需要一个认可的机构把这个钥匙文件再做一次签字,这种认可机构的公钥是很容易找到而且被很多系统默认收录的,让这些机构给你的公钥签字后,有些系统才能使用(公钥文件一般称为证书,这种认可的机构的公钥,一般被称作根证书)。不然就需要用户在一个交互环境下来认可这个签字文件才能使用,而且系统也会区别显示。
对于没有足够的提示信息的软件,这种被恶意安装证书很危险。如果系统直接被放入一个恶意的根证书,那就更危险了。

所以,操作系统本身的来源就需要很可靠,这样再使用了有正确地方签字的 RPM 软件包,才能保证你的系统真正的从头到尾都是安全的。

那些用 GHOST 版 Windows 系统的人,被这么搞很容易,如果坏人在这些 GHOST 版系统里面添加一个根证书,之后就可以通过这个根证书来截获网上银行的加密信息(网上银行的数据传输也是用这种办法加密),自己用公匙解密银行的信息,修改后用恶意放入的根证书签字一个假的银行证书加密,再把这个假的银行数据信息发给你,你的计算机就会认为这个假的银行信息是真的,你和银行所有的数据,都会被中间这个坏人知道,甚至篡改。
这种攻击就是“中间人”攻击。非对称证书本来就是防止这种攻击的。

追问

非常棒的解答!
另外.这位高手你是南方人吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-17
安装外来软件的时候要导入密钥才能安装
为了安全嘛,YUM源理没有的就要导入追问

如果没有密钥的话.不会是就安装不了了吧