数字证书是一个电子文档,其中包含了持有者的信息、公钥以及证明该证书有效的数字签名。
证书签名与验签:
签名: 上级证书拥有者,搜集到下级证书申请信息后,将整体信息使用私钥签名;
验签: 使用上级证书的公钥对签名信息完成;
签名函数: signdata = encrypty(privateKey, hash(data))
验签函数: hash(data) == decrypty(publicKey,(signdata))
https://www.cnblogs.com/feng9exe/p/8056801.html
数字证书的工作原理:
客户端--------证书颁发机构——————服务器
《—根证书—- ———》签名证书 + 私钥
—————我要和服务器通话———〉
〈——————签名证书—————
本地验证通过
————————通信—————————-〉
一、证书拷贝下发:
能够通过身份认证,但是因为手里没有私钥,所以不能完成通信;
没有持有者的同等能力;
相当于偷了别人的身份证和学位证,但是没有专业技能;
二、证书伪造:修改身份信息里的公钥,生成自签名证书
无法通过证书认证;
相当于拷贝了别人的身份证、毕业证,同时修改了专业信息,但是没有通过学位办的认证;
三、本地根证书篡改
在第一步证书伪造的的基础上,修改本地的根证书;
能够通过认证,从而完成信息窃取;
相当于拷贝了别人的身份证、毕业证,同时修改了专业信息,同时给了一个假的认证机构通过了认证;
四、完整的证书验证
客户端本身拥有服务器证书,完成证书比对;
此方案可以杜绝证书伪造+根证书攻击的攻击;
同时它不再需要证书验证体系的支持;