公开密钥体系

/ 网络 / 没有评论 / 324浏览

1.确认服务器的身份
客户机请求通信并传送一明文让服务器签名,服务器用私钥签名后传输给客户机,客户机用公钥对签名数据解密,如解密后数据和明文不等,则确认不是服务器。(实际上服务器并不对客户机的明文直接加密,因为攻击者可以将有规律的字符串发送给服务器,如服务器直接加密返回,会威胁私钥的安全,所以服务器在加密时是对明文进行 hash计算得出一个hash值,将该hash值加密后发送给客户机,客户机用公钥解密得出hash值,再比较是否和自己字符串的hash值相等)

2. 确认客户机的身份
因为公钥是公开的,任何人都可以对私钥加密后的密文解密,所以不能保证只有授信客户机才能对密文进行解密。
解决方法:1后采用对称密钥体系,基于ssl协议生成会话秘钥,此后通信采用该会话秘钥,即对称密钥体系。

3.服务器如何将自己的公钥传递给客户机
客户机在和服务器通信时,通信内容被截获,由攻击者生成一对公钥和密钥,并将公钥发送给客户机,进而达到伪造服务器的目的。
解决方法:数字证书(CA发布;组织申请;用户安装)
数字证书里有指纹和指纹算法,确保数字证书未被篡改。其中指纹采用CA私钥加密,用安装在用户电脑中的CA的数字证书公钥进行解密。同时用指纹算法重新计算数字证书的指纹,解密后指纹与计算得到指纹一致则数字证书未被篡改,数字证书中的公钥可用。

4.传输过程中确保密文未被修改
虽然攻击者不能对密文进行解密,但可以进行篡改,客户和服务器需要有对密文是否篡改的机制。
解决方法:数字签名。将明文经过hash计算得到一hash值,用私钥将该hash值加密即数字签名,任何数据和用户私钥组合产生相同数字签名的可能性为0。