非对称、Https

非对称加密:用公钥对数据进行加密,用私钥对数据进行解密

非对称加密用到的复杂的数学技巧,在古典密码学中没有对应的原型,和对称加密不同

为什么要非对称加密?

对称加密有一个缺陷:双方需要商量出一个密钥,从没有加密通信到建立加密通信,必须要商量出一个密钥,商量就会传输,传输(在一个不可靠的网络环境下)就可能泄露

在非对称加密中,通信双方生成各自的加密密钥、解密密钥对,只把加密密钥传输给另一方,网络中间人截取也只能截取到加密密钥,截取不到解密密钥,避免了密钥在传输过程中泄露最终导致破解的问题

 

但上面这样不防止中间人拦截加密密钥,造成中间人攻击。

解决办法就是在非对称加密通信的过程中,通信者不仅要对所发送的数据进行加密,还要进行 签名,加密的作用是防偷窥,签名的作用是防伪造

 

数字签名

非对称加密是传的加密密钥,数字签名是私钥(解密密钥)做签名。

别人拿着我的公钥对密文再次做非对称加密计算,就能把数据还原,从而就验证了签名的真伪。如果解密成功,就确认了数据来源,因为公钥只能解它成对私钥加密的数据,所以签名的用途是确认数据来源,验证数据没有被第三方伪造。为了确认解密成功,发送方会把原文附上,解密方如果解密出的数据与原文相同,则确认解密成功,确认发送方。附原文省去了解密方核对解密数据是否合法的过程,也支持了发送非文本格式的其他文件,如图片、音频等等。

8181771912436_.pic_hd

8191771913776_.pic

 

Https

Client Hello

Server Hello

然后服务器把自己证书发给客户端,

证书:公钥 + 一些身份信息 + 签名 的文件/ 数据结构,具体包括:

  • 这个公钥属于谁(域名或组织);

  • 谁签发的这个证书(CA);

  • 证书有效期;

  • 签名(保证公钥没有被篡改);

  • CA 的公钥;

签名是 CA 签的,目的就是防止公钥被篡改

 

浏览器拿到证书之后怎么验证数据没有被篡改:浏览器要根据证书里声明的签名算法(具体的hash算法和非对称加密算法)来先对证书内容做 hash,然后再对证书里的签名做非对称加密拿到签名还原出来的 hash,然后对比两个 hash。CA 的公钥是随着服务器证书一起发过来的,所以这个 CA 的公钥也有可能被伪造,怎么办呢?要再有另外的机构给 CA 的公钥签名,并把签名发过去,这会形成一条签名链,这个链的头就是根证书机构。

 

posted on 2026-02-26 13:46  __Roxas  阅读(1)  评论(0)    收藏  举报