关于web签名以及参数加密的个人想法

1 涉及加密算法

  • AES
  • RSA
  • MD5

2 安全中心设计

工作中发现的问题:
    工作中使用springcloud,发现很多模块大家把对称加密的Key硬编码工程中,如果想更换key
那么要把所有的项目都更换一次,当然也许有人说使用jar依赖搞定,其实问题依旧,我们现在
公司大概有十几个服务,总不能更换一次Key让所有的项目重新打包部署吧?

2.1 首先个人觉得对称加密的Key应该保持一定的时间进行更换,防止对称加密Key外泄的可能性,其次这个
过程应该是动态完成的,在这里主要指的是我工作常用的AES加密和RSA加密

2.2 当然如果按照2.1所说,那么就有一个问题,怎么来保证每次更换Key能及时通知到其他客户端以及后台各个模块?

首先把这个问题分为两块:
    1. 后端: 由于现在微服务的火热,后端存在多个模块,可以直接把Key放入彼此信赖的中
间件中,比如redis、Mysql等, 可以做到动态实时获取最新的key,因为这些对称加密底层代
算法以及代码实现都是一样的,当然也可以做成一个starter,直接导入依赖即可简单配置即
可,这里可以包含工作中常用的工具类或需要注入IOC容器的bean
    2. 客户端: 
   这里主要指的是安卓IOS和PHP, 因为我们公司主要是java提供接口,其他客户端调用,
对于这样的客户端直连redis和mysql等中间件会存在一定安全的问题,所以后端的方案不
太适合客户端,硬编码也会存在问题。
   这里可以使用RAR和AES配合搞定,客户端启动后发送请求到后端,后端用RSA算法
生成一个公pubKey1一个私钥priKey1,将公钥返回客户端。客户端利用RAR算法也生成一
个公钥pubKey2和一个私钥priKey2,将pubKey2通过后端公钥pubKey1进行加密发送到服
务端。此时服务端接收到客户端进行公钥pubKey1加密后的数据,利用priKey1解密,即可
得到客户端的公钥pubKey2。然后服务端获取对称加密的Key用公钥pubKey2加密返回给客
户端,客户端解密其返回AES加密后的数据,即达到了动态获取key的效果

你可能感兴趣的:(关于web签名以及参数加密的个人想法)