SSL安全套接字协议

关于加密,主要有两大类算法:

对称加密:    常见的DES算法,其包含一个密钥,加密和解密过程使用的是同一个密钥。

非对称加密:常见的RSA算法,存在一组public key 和 private key  即一组公钥和私钥

  • 采取公钥加密的数据通过私钥解密
  • 采取私钥加密的数据通过公钥解密。

 

Hash算法:常见的MD5 SHA 用于生成一段序列的摘要,密码数据库基本都是Hash存储。

Hash是这样一类函数,能够将原始序列经过一些列Hash散列运算生成一个消息摘要,其主要特点是不可逆:

  • 给定一个Hash结果,没有确切办法获知其原文。
  • 给定Hash结果R,即使某个序列S的Hash摘要也为R  也不能断定原文就是S  (因为存在Hash冲突)

 

早期的网络数据传输采取明文传输,其内容很容易被中间窃取和篡改,而后有了对称加密的意思,提出了DES加密算法,其通过一个56bit的密钥进行加密解密,需要事先通信双方确认对称密钥,随着计算水平的提高,暴力破解成为可能,逐渐演变出AES256bit对称加密算法。

对称加密的局限性和不安全性使得非对称加密算法逐渐流行,其基本过程如下:

  • 首先双方都产生自己的一组私钥,公钥。同时将公钥移交给对方(公钥可能被窃取)
  • 甲方将待发送的数据的hash值,用自己的私钥加密。
  • 甲方将待发送的数据用乙方提供的公钥加密。
  • 甲方将加密后的数据和加密后的Hash值一起发送给乙方
  • 乙方使用甲方的公钥解密Hash值
  • 乙方使用自己的私钥解密数据,并运行一个Hash算法
  • 通过比对两个Hash值,确认数据确实是由甲方发出(因为途中甲乙双方私钥和公钥都参与了过程)

 

可以看到非对称加密传输过程,双方的私钥公钥都参与了计算,似乎完美无缺,但仍然有安全风险。即:双方在交换公钥public key的时候,被第三方劫持,并伪造成自己的public key,和甲乙双方通信。

解决此类问题,出现了CA数字证书技术,其本质是通过权威机构验证public key的身份。

  • 甲方乙方将自己的public key交由CA机构,
  • CA通过自己的私钥加密public key,加密完的数据即为数字证书
  • 双方交换数字签名后,使用CA的公钥解密成功,即可确认这是经过CA认证的public key

数字证书无法被伪造,因为伪造的证书无法通过CA公钥解密,而CA公钥解密通常内嵌在浏览器中

 

因此一个安全的SSL套接字传输过程为:

 

  • 首先发送数字证书,获取到可信的public key
  • 通过public key发送对称秘钥,接收方用私钥解密。
  • 通信双方使用仅仅对方可知的对称秘钥进行加密传输

 

SSL协议使用最多在HTTPS协议中,其通过在HTTP外层添加SSL协议层,通过TCP 443端口实现身份认证和传输加密

 

https建立过程

 

由此可见HTTPS主要特点如下:

  • 通过数字证书确认服务器身份,获知服务器公钥
  • 将对称加密密钥通过非对称进行传输沟通
  • 之后的通信过程采取对称加密

另外,由于采取HTTPS需要建立安全连接,因此会带来一定的性能开销。另外服务器的数字证书需要第三方权威机构CA认证,需要一定的成本,https握手阶段的耗时对一些低延迟要求的网站也不太可取。

 

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页