HTTP安全通讯原理简述

中间人攻击威胁


中间人攻击(英语:Man-in-the-middle attack,缩写:MITM)在密码学和计算机安全领域中,是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。在许多情况下这是很简单的(例如,在一个未加密的Wi-Fi 无线接入点的接受范围内的中间人攻击者,可以将自己作为一个中间人插入这个网络)。

风险

(1) 窃听风险(eavesdropping):第三方可以获知通信内容。
(2) 篡改风险(tampering):第三方可以修改通信内容。
(3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。

对称加密


对称加密就像图上这把锁一样,上锁的时候需要用钥匙锁上,开锁的时候也需要用同一根钥匙来解锁

凯撒密码

加密

假如我们的要加密的明文是abcdefg,我们将明文的字母往后推移三个字母顺序,那就得到了加密后的密文defghi

解密

得知密文是defghi,而且我们也知道加密的方案,即密码为往后推移三位,那么解密的密码就是往前推移三位,很简单的我们就得到了明文abcdefg

AES加密算法

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
AES-256位加密算法目前公认是足够安全的。

不对称加密


对比对称加密,不对称加密更像是一把每个人都可以简单的一推就可以锁上的锁头,但是打开的时候必须使用钥匙来解锁

不对称加密的设计目的就是,当用户A用秘钥A加密后的内容,只能使用与A配对的秘钥B来进行解密,反之亦然,使用B进行加密的内容,只能使用A来进行解密

RSA加密算法

RSA加密算法计算原理

SSL/TLS协议(HTTPS)

设计目的

(1) 所有信息都是加密传播,第三方无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充。

基本运行过程

SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。

但是由于使用公钥加密长报文所需要的时间较长,所以每一次对话(session),客户端和服务器端都生成一个”对话密钥”(session key),用它来加密信息。由于”对话密钥”是对称加密,所以运算速度非常快,而服务器公钥只用于加密”对话密钥”本身,这样就减少了加密运算的消耗时间。

基本流程为:
(1) 客户端向服务器端索要并验证公钥。
(2) 双方协商生成”对话密钥”。
(3) 双方采用”对话密钥”进行加密通信。

建立TLS通讯流程

1.客户端发出请求(ClientHello)

客户端向服务器提供自己支持的协议版本,如TLS1.0,1.1,1.2,1.3
一个安全随机数用于生成对称加密的密钥
支持的加密方法,例如使用RSA
支持的压缩方法

2.服务器响应(SeverHello)

确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
一个服务器生成的随机数,稍后用于生成对称加密的密钥
确认使用的加密方法,比如RSA
提供服务器证书

3.客户端回应

客户端收到服务器回应以后,首先验证服务器证书。如果证书不是可信机构颁布、或者证书中的域名与实际域名不一致、或者证书已经过期,就会向访问者显示一个警告,由其选择是否还要继续通信。
(1) 一个随机数。该随机数用服务器公钥加密,防止被窃听。
(2) 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。

4.服务器的最后回应

(1)编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
(2)服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

双向认证

双向认证

参考资料

SSL/TLS协议运行机制的概述-阮一峰
如何用通俗易懂的话来解释非对称加密-(刘巍然-学酥,匿名用户)
维基百科