浅析https

基本属性定义

对称加密

  对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)

非对称加密

  非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。经典的非对称加密算法有RSA算法。原理是利用了乘法不可逆和大数因子很难分解,2个大质数。

2种加密算法的优缺点

  对称加密,加密效果很好,速度快。但是在传输中如何安全是个问题。


  非对称加密,利于传输,但是速度慢,消耗性能,且加密内容不能超过公钥长度。

数字证书

  数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份,简单来说就是包含服务器方基本信息和公钥信息和数字签名的证书。

数字签名

  将报文按双方约定的HASH算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。
  将该报文摘要值用发送者的私人密钥加密,然后连同原报文一起发送给接收者,而产生的报文即称数字签名,简单来说就是对证书的基本信息进行摘要缩减后再用ca的公钥生成的一个签名。

https的诞生

aaa


  A和B进行通信,如果不加密这个hello信息会被中间人直接获取到,如果是账号密码信息,这将是一场灾难。
  加密分为对称加密和非对称加密,显然,对称加密速度快一点,那么我们使用对称加密来给我们的信息加密
aaa
  那么又有问题了,对于服务器端和客户端进行消息传递,我是如何把对称密钥s交给你,就算交给你了,别人来向我请求消息时,我如果也用密钥s,那么加密将毫无意义,如果每个客户端都存一个特定的密钥,那么服务器内存也将不够。
aaan
  那么我们只能用非对称加密来进行加密了,你瞧,就算中间人截取到了消息,用公钥打开后能开到信息,也无法得到私钥来修改,那么客户端得到的将是安全完整的消息。但是我们一直用非对称加密是不是太慢了。
aaan
  你看,我们可以先用非对称加密把随机生成的对称加密密钥发送到客户端,这样除了一开始我们使用非对称加密,后面的整个会话都用对称加密来处理,完美。
aaan
  咦,又出现问题了,客户端向服务器端请求公钥时,整个公钥直接被掉包,那么后续的岂不是都不行了。
还好,你有张良计我有过墙梯。
aaan
  我们服务器端可以向公证处请求证书,也就是数字证书,数字证书如何保证通信安全呢。第一:证书里面有个报文,包含了服务器端信息,域名,摘要算法,以及公钥,第二:有一个是对这些信息摘要后用CA私钥加密生成的数字签名。


  客户端得到证书后用报文信息中的摘要算法对报文进行进行摘要,获取到的摘要和用CA公钥解开的数字签名一致,那么这个证书是安全的了,否则不安全。对了CA的公钥就在本地浏览器的证书里面。


  为什么这样做?


  如果报文有了一丝丝的修改,那么生成的摘要就会发生变化。通过这个来判断报文是否修改。
  为什么不直接对报文加密?


  因为非对称加密是有限制的,加密的信息不能比公钥长,报文信息可能会比较多,那么最好就是生成一个摘要,对摘要进行加密。


  各位大佬,如果对上面的有问题,发我邮箱验证。[email protected]

图片取自网络

猜你喜欢

转载自www.cnblogs.com/donghang/p/9233841.html