https基本原理解析

来源:互联网 发布:上传下载网站源码 编辑:程序博客网 时间:2024/05/18 00:33

文章简单回答https数据传输原理。

非对称加解密技术

加密就是一钟映射与变换。

密文 = f(明文,key1)明文 = g(密文,key2)

如果key1==key2,则叫对称加密。如DES
如果key1!=key2,则叫非对称加密。如RSA

因为是非对称的,所以可以一个key给别人,称为公钥,一个key自留着,称为私钥。

当然,数学原理和算法上保证了两点。

  • 公钥加密的数据,只有私钥能正确解出。
  • 私钥加密的数据,只有公钥能正解解出。

这两点性质是后面的基础。

数字摘要

数字摘要 = hash(数据)

这个过程也有三点性质

  • 数据有任何微小的改变,数字摘要就会发生变化。
  • 同一份相同的数据,生成的数字摘要是相同的。
  • 可由数据变换成数字摘要,但无法由数字摘要推导或反解出数据。

这个性质可以保证数据完整和不被篡改。
比如,发一份数据的同时,后面再跟一串这个数据的数字摘要。
收到数据的人,用同样的hash函数对数据处理,得到摘要。
与后面的摘要进行对比。若相同,则表明数据是完整的未被改动过。
至于数据是不是真实的,就是后面的事了。

常用的hash函数有:MD5sha1

数字签名

就是把上面两项组合下。
发送者:

附加数据 =f(hash(数据),私钥)[数据+附加数据]

[数据+附加数据]传给接收者后

接收者:

hash(数据) ?= g(附加数据,公钥)

如果相等,则可以认定这个数据是私钥拥有者发的完整天数据。

数字签名有两种功效:

  • 确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。
  • 数字签名能确定消息的完整性,因为数字摘要的存在。

数字证书

数字证书的存在,是为了解决上面过程的一个漏洞。

无法验证公钥的真实性。如果在传输过程中被换掉了呢。
数字签名和数字证书这里面有比较深动的图解。

为了验证公钥的真实性。
需要一个权威的值得信赖的第三方机构(Certificate Authority, CA)。

把公钥和公钥拥有者的信息

数字证书 = [[公钥+公钥拥有者的信息]+f(hash([公钥+公钥拥有者的信息]),CA私钥)]

这样通讯的时候,直接给这个数字证书就可以了。
先通过CA的公钥,把个人的公钥解确认。
再用个人公钥去进行上面的操作。

相当于,如果X信任Y,Y信任Z,X就能信任Z了。

这是一个证书链的原型吧。

SSL/TLS

上面的过程,可以确定发出者的身份,数据的真实性,完整性。但在传输过程中,别人还是可以查看到你发的什么信息呢。

SSL就是基于上面说的原理,定的一个安全传输协议。
详细的过程可以查看Https(SSL/TLS)原理详解

总得来说,就是先用RSA,确认身份,再商量出一个密钥,用DES对数据加密再输出。

https

基本就是就SSL+HTTP。
有空再来补充。

参考

  • 和安全有关的那些事(非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS及其他)
  • wiki 超文本传输安全协议
  • https以及CA机构和颁发证书的问题
  • wiki RSA加密算法
  • RSA算法数学理论
0 0
原创粉丝点击