博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

移动通信服务接口安全解决方案

Posted on 2016-10-12 14:07  FG度  阅读(512)  评论(0编辑  收藏  举报

一、安全设计范围

上次对安全方面的讨论,服务方面的安全sign认证、https和接口安全,前两种方式由于时间限制本版(1.02)不打算加进去,以后的版本会迭代加进去,其中接口安全考虑使用数据流加密的形式去设计,本次设计主要针对接口安全进行设计,考虑将请求和响应进行数据流加密来保证传输安全。

二、名词解释

RSA算法:公钥加密算法,非对称加密,原理如下:

 (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。

  (2)甲方获取乙方的公钥,然后用它对信息加密。

(3)乙方得到加密后的信息,用私钥解密。

AES 算法:对称加密,是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据;

这里只是进行简单的说明,详细的资料网上很多,请自行搜索了解;

三、设计方案

关于数据流加密的形式的设计方案大概包括(不限于)RSA分段加密和RSA+AES对称加密两种方案,下面分别对这两种方案进行说明。

2.1 RSA分段流加密

设计思路如下:

服务端A拥有自己的私钥和手机端的公钥,手机端B有自己的私钥和服务端的公钥;

手机端发请求是用A的公钥进行对数据流加密,A端用私钥对数据流进行解密;

A端响应流用B端的公钥加密,B端收到响应用B的私钥解密;

 

 

RSA是非对称加密算法,加密的明文长度取决于RSA初始化时的位数,有局限性,所以这里可以实现对数据流分段的形式进行加密,可以实现对数据流的加密,但是非对称加密速度比对称加密慢很多,存在效率问题。

2.2 RSA+AES加密方案

由于RSA算法对长度有限制,并且加密速度慢的特点,考虑RSA非对称加密和AES对称加密结合使用,用RSA对对称加密AES的密钥进行加密的方法,设计思路如下:

1.首先服务器端使用RSA算法生成一对密钥,手机端持有服务端的公钥;

2.手机端发送请求时,先随机生成一个N位的AES密钥,使用对称加密对请求流加密,并将使用服务器端公钥加密后的密钥放到请求头中传递过去;

3.服务端拿到密钥后用自己私钥解密,获得AES密钥,用此密钥对请求流解密;

4.服务端处理完后用第三步中拿到的AES密钥对响应流加密;

5.手机端收到请求后使用本地保存的AES密钥解密;

交互流程图如下:

 

 

概述:每次交互都能够保存客户端发送的数据流只有服务器端能够解密,而且客户端和服务器端都是用对称加密进行加密工作,速度比较快,但是此方案的缺点是每次都要对AES密钥做非对称加密,要解决这个问题,需要从上层的安全机制中设计解决,将用户的Id和AES密钥保存到服务器端,这样就能做到只在第一次传输的时候做RSA非对称加密对密钥,以后就双方可以使用对称加密对流加密,如下图设计: