Dotenvx企业版本特性:加密混淆
Dotenvx采用非对称加密,也就是使用public key加密,使用private key进行解密,加密后的内容使用base64进行文本化,
典型的样例就是encrypted:xxxx这样的加密文本值。
在一个典型的.env文件中,保存有普通文本配置,加密项配置和Public Key,然后根据Public Key查找到对应的private key,
就可以进行解密,这个算法也是公开的。
但是在企业内部,处于较高的安全需求,希望即便拿到了private key,也无法解密配置项。那么如何做到这一点呢?
Dotenvx企业版本提了一个加密值混淆的特性,也就是说加密的值,也就是对应的字节数组,会在进行一次混淆,然后再以文本方式呈现出来, 在界面的时候,你需要知道对应的混淆算法,然后才能进行解密。
该混淆算法会使用Rust编写,然后编译为二进制形式提供给其他语言调用,如Java、Python、Node.js等语言都可以调用这个混淆算法进行反混淆,
然后拿到正确的加密字节数组,最后使用private key进行解密。
在反混淆的过程中,混淆代码会向企业内部的服务器上报加密请求,告知要对某一加密值如encrypted:xxxx进行反混淆,这样做的目的主要是为了方便后续的安全审计和预警,
如某些加密值的解密只能出现在指定的机房区域,而不是办公区域。 此外混淆代码还会验证https证书ID,防止https证书伪造,从而达到跳过安全审计这一环节。
虽然加入了混淆算法,但是并不会给带来任何不便,你还是和以前一样使用Dotenvx命令行工具进行加密和解密,对于Python, Node.js类型应用,
这个可以通过Wrapper脚本和Shim完成.env向环境变量的自动注入,完全不需要修改应用代码。对应Java类的SDK,这一特性会内置在SDK中,完全透明化。
该混淆算法可以根据不同的公司需求进行内置,可以确保混淆算法的唯一性。即便混淆算法是以动态链接库二进制方式分发,但是也不是绝对的安全, 但是至少在一定程度上提高了安全性,增加了攻击者的破解难度。