以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XML安全 』  (http://bbs.xml.org.cn/list.asp?boardid=27)
----  非对称加密用私钥还是公钥进行加密[原创]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=27&rootid=&id=37249)


--  作者:flyfoxs
--  发布时间:8/27/2006 9:40:00 AM

--  非对称加密用私钥还是公钥进行加密[原创]
经常看到类似的说法:公钥[私钥]一般用来加密,私钥[公钥]一般用来解密。也一直没有仔细去考虑,只是留下了一个用于加密,另外一个用于解密的印象。用公钥加密的数据,只有用私钥才能解密。用私钥加密的数据,也只有公钥才能解密。

昨天看书时,又遇到了这个问题,仔细思考之后,才发现公钥与私钥都可以用来加密,他们的应该场景同样都很常见和很重要,它们公别用于加密与签名。

1)公钥用于加密(私钥解密)。
   这种场景是向特定的人发送秘密信息,所以消息加密后,只有私钥的拥有者才能解密。

2)公钥用于解密(私钥加密)。
   这种场景是向公众发布一个签名。要求任何人都可以对加密之后的信息进行解密,所以要使用公钥来进行解密,解密之后的数据如果符合预期则证明私钥拥有者处理过了签名数据。


--  作者:admin
--  发布时间:8/27/2006 11:51:00 PM

--  
是的。前者用于信息保密(即只有私钥持有者可以看到被加密的信息),后者用于身份验证(可以确认,信息是否来自私钥持有者,而不是别人伪造的)
--  作者:sduzzx
--  发布时间:9/15/2006 4:17:00 PM

--  
公钥和私钥都是固定长度的二进制比特串(如目前常用的RSA公私钥长度为1024比特),从性质上来讲,他们都可以加解密,只是人们根据使用的方式不同,将他们进行了区分,有些称为私钥,有些称为公钥。

另外,根据公私钥使用方式的不同,它们在数据加密和签名时的管理方式也不一样。

(1)数字签名
一个用户拥有一个数字证书(签名证书),里面包括一对密钥(公钥和私钥),私钥用于签名,公钥用于验证签名。如果私钥被攻击者知道,就可以用你的私钥伪造你的签名,所以私钥的安全性要求较高,不允许进行备份(包括CA中心),私钥丢失时,只能重新生成密钥对,旧的签名可以用备份的公钥进行验证。另外,用户可以自己生成密钥对,在证书注册时提交给CA中心即可。

(2)加解密
一个用户也拥有一个数字证书(加密证书),里面也包括一对密钥(公钥和私钥),私钥用于解密信息,公钥用于加密信息。当用户A给用户B传送数据时,用户A以外带的方式(如从CA中心)获取用户B的公钥,并用其加密,加密后的数据传送给用户B,用户B收到后用私钥解密。加解密私钥要进行备份,否则,当私钥丢失时,以前加密的数据将无法解密。另外,密钥对只能在注册时由CA中心产生,这个是国家安全政策的原因,国家必须能解密每个用户加密的所有信息。

注:加解密证书和签名证书虽然在本质上一样(密钥对的产生方式及结果一样,即从数学算法的角度考虑一样),但因其用途的不同导致其安全策略的不同,所以不能混用。


--  作者:flyfoxs
--  发布时间:9/18/2006 7:39:00 AM

--  
楼上的文采真不错,汉一个。

比我理解的深刻,讲的也清楚多了。


--  作者:yongjieguo
--  发布时间:4/18/2007 4:39:00 PM

--  

--  作者:Qr
--  发布时间:5/18/2007 11:42:00 AM

--  
呵呵,非对称加密早已应用到偶的XML相关系统中,效果不错。
--  作者:mengchen
--  发布时间:6/9/2007 11:41:00 AM

--  
不过,非对称加密主要用在完成身份识别以便建立会话密钥,
真正的数据保密还是通过会话密钥,利用对称加密算法实现
--  作者:laserman
--  发布时间:9/27/2007 5:41:00 PM

--  
第二点有点问题,CA应该不负责帮用户发放公钥的,因为用户的公钥已经包含在证书里面了,所以A给B发数据之前,首先向B索取证书,然后从B的证书中获得其公钥就行了。如果每个人都向CA索取其他人的公钥,那CA会忙坏的。
--  作者:dunkerlc
--  发布时间:9/30/2007 6:34:00 PM

--  
学习学习再学习呵呵
--  作者:JOC
--  发布时间:9/4/2008 10:57:00 AM

--  
考虑安全问题涉及到三个方面:机密性、完整性、不可抵赖性(身份鉴别)。

这三方面都可能会用到非对称密钥。

机密性需要加密解密,对称或非对称密钥都可以,原则是:对称密钥加密普通数据信息,非对称密钥加密对称密钥。因为对称密钥加密解密性能是非对称密钥的近1000倍,都用非对称密钥处理是不现实的。这个原则非常重要,也解决了对称密钥传输安全的问题。

完整性需要做摘要,摘要加密用对称、非对称密钥都可以。

不可抵赖性需要做数字签名,数字签名一般用非对称密钥的私钥加密,接受方用公钥验证。


--  作者:真不准
--  发布时间:9/19/2008 10:31:00 PM

--  
真正传输数据的时候,无论使用公钥还是私钥,加密全文都代价太大,实际的正文加密还是对称的多,只不过对称加密的密钥用非对称传而已。JAVA里非对称加密的API真是慢。。。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
7,281.250ms