计网09——HTTP(应用层)1

106 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

HTTP和HTTPS有什么区别?

  1. 端口不同:HTTP使用的是80端口,HTTPS使用443端口;

  2. HTTP使用明文传输信息

  3. HTTPS通信需要证书,以 HTTP为基础,运行在SSL之上添加了传输加密和身份认证机制;)

  4. 证书一般需要向证书颁发机构(CA)购买

    SSL(Secure Socket Layer)

Https的连接过程?

  1. 客户端向服务器发送请求,同时发送客户端支持的一套加密规则(包括对称加密、非对称加密、摘要算法);
  2. 服务器从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥(用于非对称加密),以及证书的颁发机构等信息(证书中的公?钥只能用于服务器端进行解密);
  3. 客户端验证服务器的合法性,包括:证书是否过期,CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配;
  4. 如果证书受信任,或者用户接收了不受信任的证书,浏览器会生成一个随机密钥(用于对称算法),并用服务器提供的公钥加密(采用非对称算法对密钥加密);使用Hash算法对握手消息进行摘要计算,并对摘要使用之前产生的密钥加密(对称算法);将加密后的随机密钥和摘要一起发送给服务器;
  5. 服务器使用自己的私钥解密,得到对称加密的密钥,用这个密钥解密出Hash摘要值,并验证握手消息是否一致;如果一致,服务器使用对称加密的密钥加密握手消息发给浏览器;
  6. 浏览器解密并验证摘要,若一致,则握手结束。之后的数据传送都使用对称加密的密钥进行加密

总结:非对称加密算法用于在握手过程中加密生成的密码对称加密算法用于对真正传输的数据进行加密HASH算法用于验证数据的完整性

数字签名、报文摘要的原理

  • 发送者A用私钥进行签名,接收者B用公钥验证签名。因为除A外没有人有私钥,所以B相信签名是来自A。A不可抵赖,B也不能伪造报文。
  • 摘要算法:MD5、SHA。

加密

1. 对称密钥加密

对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。

  • 优点:运算速度快;
  • 缺点:无法安全地将密钥传输给通信方

2.非对称密钥加密

非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥

加密公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密接收方收到通信内容后使用私有密钥解密。(发送方用公开密钥加密,接收方用私有密钥解密

签名:非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否可靠。

  • 优点:可以更安全地将公开密钥传输给通信发送方
  • 缺点:运算速度慢。

3. HTTPS 采用的加密方式

img

上面提到对称密钥加密方式的传输效率更高,但是无法安全地将密钥 Secret Key 传输给通信方。而非对称密钥加密方式可以保证传输的安全性,但运算速度慢不适合加密大量数据,因此我们可以利用非对称密钥加密方式将 (对称密钥)Secret Key 传输给通信方,具体数据再使用对称加密传输。HTTPS 采用混合加密机制,正是利用了上面提到的方案:

  • 使用非对称加密来传输对称密钥的密钥,保证安全性;
  • 获取到 Secret Key 后,再使用对称加密进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key)

使用了证书后:进行 HTTPS 通信时,服务器会把证书公钥发送给客户端。客户端取得其中的公开密钥(数字签名)之后,使用(内置的)CA的公钥解数字证书中服务器的真实公钥如果该真实公钥是服务器的公钥则验证通过,就可以开始通信了。

消息摘要算法

  • (明文+签名)

消息摘要算法:MD5、SHA (级别比MD5高)

特点:不可逆。消息签名,保证消息的完整性。

  • (密文)

对称加密:DES、DES3、AES

特点:可逆。双方持有同一把秘钥

非对称加密:RSA

特点:可逆。两把钥匙,先生成私钥,一般为1024个长度,推荐2048,秘钥长度越长,破解难度更大。再用私钥生成公钥。两把钥匙均可加密和解密。公钥加密私钥解密,私钥加密公钥解密。

  • Https = Http + SSL(证书)

Http 发送的都是明文,安全性低。