涉及到的数据安全技术包括哪些内容

  • Post author:
  • Post category:其他

Java接入

1.加密:RSA加密密码等,

2.加密加签 ,token+签名用MD5加密,数据用aes加密

统一接入

本技术基于CA证书的双向认证,采用RSA+AES混合加密技术。我们知道使用RSA加密,增强了数据的安全性,但是加密效率低,作为一个接入服务器,对接着大量的互联网用户,如果全部采用RSA加密保证数据安全,将大大地降低了服务器的处理效率,无法支持更大的用户并发量。为了提高服务器处理效率,保证数据通信的安全性,我们采用RSA+AES混合加密技术,通过RSA认证用户身份,AES握手密钥。针对数据加密密钥的安全性,我们使用了单点部分上传的方式,没有将一个完整的AES数据加密密钥在网络上传输,一个完整的AES数据加密密钥AESKey是由客户端随机数+服务器端随机数+字符标识进行相关计算而生成。CA证书由服务器生成并将客户端证书颁发给用户。

身份认证+通道安全

客户端和服务器通过上面的流程,来进行身份认证和通道安全,具体流程说明如下:

1.客户端将服务器颁发的客户端证书(该证书由服务器生成之后,直接打包到客户端,打包在客户端的文件有:服务器证书、客户端证书、客户端密钥对文件)和客户端生成的随机数,采用服务器的公钥(从服务器证书获取)进行加密,发送给服务器端。

2.服务器接收到客户端上传的相关数据,用服务器私钥解密数据,获取到客户端证书和客户端随机数,验证客户端证书(验证客户端证书的序列号和MD5值,客户端证书的相关信息已经在服务器端进行了配置)是否为服务器颁发,是则获取客户端证书的公钥,否则断开连接。

3.服务器生成随机数,将客户端证书和服务器随机数用客户端密钥进行加密发送给客户端,服务器根据“客户端随机数+服务器随机数”根据约定的算法生成AESKey。

4.客户端用自己的私钥解密服务器发送的数据,验证服务器发送的服务器证书和客户端本地打包的证书是否一致,是则获取服务器随机数,否则断开连接。

5.客户端将“客户端随机数+服务器随机数”根据约定的算法生成AESKey,并使用AES算法,AESKey加密“服务器随机数”并发送服务器端。

6.服务器使用AES算法,AESKey(在过程3已经生成的AESKey)解密客户端数据,并验证客户端上传的服务器随机数是不是自己生成的随机数,否则断开连接。

7.服务器使用AES算法,AESKey加密“客户端随机数”并发送给客户端。

8.客户端使用AES算法,AESKey解密服务器数据,并验证服务器下发的客户端随机数是不是自己生成的随机数,否则断开连接。

过程1-4用于验证用户身份是否合法,过程5-8用于握手AES加密密钥。

完成1-8过程之后,客户端用AESKey加密数据,用于与服务器之间数据通信,保证了数据通道的安全性。

数据防篡改

数据传输过程中采用的是自定义应用层协议,包头里面含有客户端发送数据的签名。服务器接收到数据之后,首先进行验签,验证数据的完整性,如果数据存在篡改,服务器进行相应的异常处理。

防重放攻击

服务器记录了用户的每个请求包信息,每个请求包都带有唯一的标识信息,即使请求参数相关但是标识信息是不一样的,当一个请求包重复调用(即请求包信息完全一样,包标识,请求参数等)时,服务器会认为为重放攻击,将进行异常处理。    

 

 

 


版权声明:本文为qq_26997921原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。