M1lo 2017-10-25 18:45 采纳率: 0%
浏览 1512
已采纳

https能否省掉hash过程,直接对整个证书进行CA私钥加密,能解密则为真,不能则未假?

https通过根证书公钥解密摘要信息,然后和证书信息做hash后的值做了对比,从而判断证书的真伪。这里为什么不能直接省掉做hash的过程,直接对整个证书内容进行CA私钥加密,如果客户端用根证书中的公钥能解密则证书是真的,当然这里的能解密不是严格意义上的能解密,而是解密后的格式和正常格式一致,就认为能解密。而不能解密则认为证书是假的。
我自己的猜测:
1.数字证书需要找到这个证书的颁发者来验证证书真假,意味着颁发者一定是不能加密传输的,所以造成证书一部分加密,一部分非加密。很不整齐,虽然现在也是一部分加密,一部分非加密,但是加密部分仅是摘要信息,除摘要信息外部分是没有加密的。
2.如果整个证书加密,那客户端解密时根本不确定这个证书是真还是假,相比较对hash解密而言,对整个证书解密效率肯定会差很多。
3.如果整个证书加密,意味者证书发送到客户端,客户端完全不发看到证书的任何信息,除证书的颁发者。对维护、问题定位造成很大困难。
4.如果证书恰巧被篡改,而且篡改完的用户名和用户公钥随便通过一个私钥加密后传给客户端,客户端此时拿着本地CA公钥解密恰好解密出一个和正常公钥用户信息格式一样的数据,会骗过所有认证。客户端误认为这个证书是真的。虽然这种情况发生后,客户端拿到的公钥一定是不正确的(因为被篡改的证书不是通过CA私钥加密的),但客户端依然会用这样的一个错误公钥加密信息传递数据。这样的数据即无法被服务器解析也无法被篡改者解析,直接造成了https不可用。

  • 写回答

3条回答 默认 最新

  • oyljerry 2017-10-26 01:51
    关注

    hash是为了防止传输过程中被篡改,你公钥能解只能说明是这个私钥加密的,但是内容是否正确,要用解密后hash比较来验证

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?