security

本文最后更新于:2024年5月30日 早上

网络通信安全非常重要,不注重就会造成重大的损失,今天就来梳理一下https请求的全过程。
此处用A代表客户端,B代表服务器端,来模拟一个请求通信的过程

A: 经历TCP三次握手与后端建立链接信号,信道准备完毕,发送请求,表明自己支持加解密的算法信息

B:接受信息,处理请求,并响应,发送数字证书回A,

A:收到B的证书,验证证书,根证书(顶级CA机构验证证书的来源是否可靠),如果可靠,则取出公钥,然后在信道上进行加密传输数据,如果证书不可靠,或者过期,会安全提示。

共享密钥对称加密

A与B都用相同的加密解密方法,且密钥相同,对双方来往的数据加密解密的一种方式。
双发发送消息,A与B都要事先知道加密方式和密钥,就免不了密钥传输的过程。如此,就可以能被
窃取到密钥(网络传输过程),窃取者然后,猜测用何种方式加密数据,然后进行把数据解密,也并非无这个可能,
然后就可以当中间人进行假冒,可以冒充A,也可以冒充B回应A。

常见的 对称加密 算法主要有 DES、3DES、AES 等…

非对称加密

A:用B生成的公钥加密

B:用私钥进行解密

C:得到公钥,也无法解密,但可以假冒B,给A发送公钥,A无法确定公钥是B的,所以中招.

为防止此等情况,出现了
由第三方CA机构颁发的数字签名以防止此等情况

常见的 非对称算法 主要有 RSA、DSA 等.

数字签名

B用公钥进行向CA申请,得到数字签名,里面是一个包含公钥,服务器信息得文件,发送给A,A本地有个CA得根证书,可以检测
该证书得真伪,这样就知道A接受到的公钥,是不是来自于正确的B端.

散列算法

此算法用来加密一些数据,如密码等…

散列算法 主要有 SHA-1、MD5 等。

项目中加密实际的运用

  1. 对于request 请求体,用RSA公钥加密,同时传递 “AES或者DES”产生的公钥传于后端,
  2. 后端接受数据后,私钥解密,后端用共享密钥对Response 体中的数据加密处理.然后返回给客户端。

前端 RSA 与AES,DES 库如下:

crypto-js: https://github.com/brix/crypto-js

RSA: https://github.com/travist/jsencrypt

AES: https://github.com/ricmoo/aes-js

https://www.jianshu.com/p/a47477e8126a


security
http://example.com/web/security/
作者
chen heng cheng
发布于
2020年1月21日
许可协议