加密字段原理
对于明文密钥的生成, 目前有两种方式,一种是调用kms获取,一种是本地拿到随机字节数组。另外,明文密钥的生成采用的是懒加载的方式, 只有当第一次需要明文密钥来加密数据时才会去生成明文密钥,生成明文密钥的同时会将加密后的密文密钥存于数据库, 同时将明文密钥存于缓存内存中。以后每次需要使用密钥时都从内存中获取, 如果内存中的密钥丢失则去数据库中查询密文密钥,然后请求kms解密或者本地进行解密,然后返回明文密钥并将其再次存于内存中。
1.基于KMS密钥管理
基于KMS密钥管理流程图

2.本地密钥管理
本地密钥管理与KMS类似,只是将加密明文密钥的超级密钥在本地配置。
3.被加密的数据DataStore底层存储方式
被加密的数据在数据库中被存储成了BLOB格式,经过性能测试,aes128+blob与base64(aes128)+varchar性能相似,base64(aes128)+text表现差一些, 但使用base64(aes128)+varchar时,varchar的长度不好确定。所以底层存储采用了BLOB格式。