zoukankan      html  css  js  c++  java
  • 移动通信服务接口安全解决方案

    一、安全设计范围

    上次对安全方面的讨论,服务方面的安全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非对称加密对密钥,以后就双方可以使用对称加密对流加密,如下图设计:

  • 相关阅读:
    快捷定位目录 z武器
    [UOJ317]【NOI2017】游戏 题解
    2-SAT 问题与解法小结
    link-cut-tree 简单介绍
    hihocoder #1456 : Rikka with Lattice(杜教筛)
    杜教筛小结
    BZOJ 2969: 矩形粉刷(期望)
    UVA10294 Arif in Dhaka (群论,Polya定理)
    BZOJ 1926: [Sdoi2010]粟粟的书架(主席树,二分答案)
    BZOJ 2683: 简单题(CDQ分治 + 树状数组)
  • 原文地址:https://www.cnblogs.com/wz12406/p/5952581.html
Copyright © 2011-2022 走看看