目的
为Lifeix所有应用的和客户端的交互提供数据安全解决办法。
适用范围
所有Lifeix应用。
内容
一、整体功能架构
说明:
1、Security Center主要提供对称密匙、对称密匙的版本化管理、对称密匙过期 和 统一的时间戳(即Lifeix时间戳,防止个各应用之间、客户端和服务器之间 的时间戳不一致)。
2、app需要根据版本号更新对称密匙,app获取对称密匙时需要使用非对称密匙对请求参数进行签名、对Security Center 返回的数据进行解密
3、各后台应用系统需要向Security Center 更新 对称密匙,并进行本地化存储,防止给SecurityCenter 造成太大的压力
4、数据的非对称加密解密、对称密匙的生成、对称解密解密、签名验证 等业务由commons.security 提供,后台应用系统需要依赖此二方库
二、组件架构
1、各应用的私钥需要使用mysql进行持久存储,而且需要做主备,该数据100%不可以丢失和泄露
2、公钥的生命周期在一天左右,需要频繁更换,所以只需要放在Cache中进行临时存储,该cache也要求高可用,不可以丢失数据
3、Security Center 需要提供http服务和dubbo 服务,http服务用户客户端更新对称密匙,dubbo服务用于业务系统获取对称密匙
三、主要业务流程
1、App想Security Center获取对称密匙业务流程
说明:
1、app会存储非对称密匙的公钥
2、app在向Security Center 获取对称密匙的时候需要使用非对称密匙的公钥对请求参数进行签名,用于表明是合法请求
3、app在拿到Security Center 返回的对称密匙后需要用非对称密匙的公钥解密数据方可拿到对称密匙的明文。
4、
2、app使用对称密匙进行签名、加密参数、解密数据业务流程
说明:
1、客户端拿到对称密匙后其可能过期,需要重新走"App想Security Center获取对称密匙业务流程”的业务流程更新对称密匙
2、各业务系统需要向Security Center 获取对称加密密匙后进行本地化存储,只在对称密匙过期后需要更新对称密匙的时候才需要和Security Center进行交互
3、后台业务系统在收到客户端的请求后需要对当前请求的签名进行验证,还需要验证lifeix时间戳是否在有效期内
4、对需要加密的返回数据进行对称解密后返回客户端
四、领域模型
系统私钥需要持久化存储。
对称密匙因为会经常过期需要更换不需要持久存储,可以根据 ”统名称+版本号“ 存放在cache中,并设置合适的过期时间。