动态密钥方案

动态密钥接口服务设计

Posted by Liangjf on October 4, 2019

动态密钥服务设计(aes128+base64 动态加密方案)

技术栈

  • go
  • gin
  • redis

架构图

密钥保管方案

密钥1(本地保管)

REQ_KEY = "xxxxxxxxxxxxxxxx"
REQ_IV  = "yyyyyyyyyyyyyyyy"

密钥2(动态变化)

外部(数据库update触发写入/手工set)写进reidis,redis定时刷新。通过外部的方式,可以把动态密钥和应用服务器隔离,提高安全性。

处理流程

  • 1、客户端保存一对密钥1(用于加密),请求密钥服务器获得密钥2(用于解密)
  • 2、后台服务端保存一对密钥1(用于解密),从redis中读取密钥2(用于加密)。
  • 3、密钥服务器保存一对密钥1(用于解密客户端密钥1加密请求,加密动态密钥2返回给客户端),并且定时更新一对密钥2(从redis中读取密钥2)

密钥请求

密钥的请求是通过https的方式,因为密钥需要安全,可靠的请求。

更新密钥2

当想更新动态密钥,需要外部设置redis:

set pub_key "{\"id\": \"9g1\", \"key\": \"hg92g02fewh7qk11\", \"iv\": \"546d4t546tw32e1f\"}"

字段说明:

  • id。密码盐,字符位数改变,客户端和应用后台的密码盐位数也需要改变。统一修改CodeSaltLen变量
  • key。aes加密的key
  • iv。aes加密的iv