Top
首页 > 老文章 > 正文

金钥、密钥、公钥和私钥的名词小解

我想大家一定常常听到"金钥、密钥、公钥和私钥"这些名词被提起,搞得很头痛,搞的那么难干吗?!我当初也是如此;希望藉由解译这些名词的意思,对有兴趣的朋友也有帮助
发布时间:2004-12-27 11:26        来源:        作者:好一朵美丽的茉莉花
所谓金钥是我国港台地区是对称密钥和不对称密钥的一种总称,这和习惯的说法有点不同,具体可以参见一个论坛(javaworld)中节选出的一段问答... 发贴人(好一朵美丽的茉莉花!):自1979年DH提出了"金钥交换"和"公钥"的机制后,这样的安全性确保的方法就一直蛮被大家所使用的,尢其是在安全性四大块"验证(鉴别)、授权、保密性、完整性"中"保密性"上更是使用的如痴如狂呀!而在这其中我想大家一定常常听到"金钥、密钥、公钥和私钥"这些名词被提起,搞得很头痛,搞的那么难干吗?!我当初也是如此;希望藉由解译这些名词的意思,对有兴趣的朋友也有帮助! 金钥(Key):就是所有 Key 的总称! 密钥(Secret Key):加密/解密都是用这一把 Key! 公钥和私钥,必需一起用才有加解密的效用,而且彼此互相都是唯一性的! 也就是说,一把"私钥"只有相对应的一把"公钥"可以使用来解密,以型成一组"金钥对(Keypair)"!也可以想成此把"公钥"是由此把"私钥"所产生出来的! 公钥(Public Key):解密用 (但在 RSA 上是加密用)!私钥(Private Key):加密用 (但在 RSA 上是解密用)!仿真的程序代码有点如下://用同一把"密钥"来做加/解密密文 = 加密的函式(明文, 密钥);明文 = 解密的函式(密文 ,密钥);//"私钥"加密,"公钥"解密密文 = 加密的函式(明文, 私钥);明文 = 解密的函式(密文, 公钥); 回帖人(计算机篮球唱歌):公钥其实是用来加密/验章用的私钥才是用来解密/签章首先就Key的所有权来说,私钥只有个人拥有,公钥则是可以公开给大众其次就保密性而言,所以当A ->B资料时,A会使用B的公钥加密,这样才能确保只有B能解开,否则普罗大众都能解开加密的讯息,就是去了资料的保密性。验证方面则是使用签验章的机制,A传资料给大家时,会以自己的私钥做签章,如此所有收到讯息的人都可以用A的公钥进行验章,便可确认讯息是由 A 发出来的了。就完整性而言,一般就是采取 Hash 的方式,一般常用的就是 SHA-1 和早期的 MD5(被破了)。实际上 RSA 的应用通常是混在一起的,最典型的例子: 1. A 用 B 的公钥加密 data => Edata 2. A 对 Edata 做 Hash => HashCode(a) 3. A 用 A 的私钥对 Hash-code 签章 => A-Sig 4. A 将 Edata + A-sig 一起传给 B 5. B 对 Edata 做 Hash => HashCode(b) -> 会等于HashCode(a) 6. B 用 A 的公钥和 HashCode(b)、A-Sig 进行验章 -> 若HashCode(b) = HashCode(a),且公钥无误,验章会成功(验证讯息以及资料完整性) 7. B 用 B 的私钥对 Edata 做解密 => data (只有B有自己的私钥,所以可确保资料保密性)实际上运作的机制,还会牵涉到公钥的"信任问题",所以会有所谓的CA和凭证,那又是更复杂的机制了。 若有错误,请给予指正,谢谢。 回帖人(好一朵美丽的茉莉花):其实不管"公钥"或"私钥"是使用在加密或解密,都是由所使用的算法来决定的!我在例子上用的是DH的算法它是"公钥"解密、"私钥"加密的!但它的缺点是没有"鉴别"的机制在内,所以很可能受"中间人攻击"!所以RSA算法出现了!RSA有更佳的加密性和鉴别的机制在里面,也就成了现在大家最常用的算法了,X.509 就是用这为基础算法!而 RSA 的算法它用是"公钥"加密、"私钥"解密,再加上一个彼此可以鉴别的签章,来确保不受"中间人攻击"!但 RSA 也是有缺点的!就是效率不太好
加载更多

专题访谈

合作站点
stat