|
怎么说呢,我先摆资历来增加说服力,国内的 FIPS140-2/3 认证,基本都是我做的。如果有做过认证的或者关心过认证的,应该就知道我是谁。
当然你的产品不做认证前提下,随便怎么开发都没问题,但是如果你希望哪怕参考一点所谓的“最佳实践”,你就会发现那个“大神”说的大差不差。语气问题可能以下我也有,见谅。
端到端加密没有一个准确的定义,但是按照常规的实现思路来说,“没有第三人持有任何可用于解密的材料”这个应该是共识,那么按照你现在的做法引入一个 RSA 公私钥做加密,私钥在你的服务器侧用作密码恢复,先不提所谓的算法安全强度的事情,至少你说端到端这个就不准确了。这里不讨论 RSA 用于加密的一堆要求,也不讨论怎么身份认证的事情,就单纯存在一个中心点可能会解密密码这个场景,作为明确有端到端需求的人可能就不选了。
其他的问题,诸如 KDF 密钥派生算法,常规的方式都是考虑把密码作为 PBKDF2 的输入,提高 iteration 次数到 10000 以上,然后用派生出来的密钥作为 AES 密钥使用。AES 的 IV 要看使用场景来判断长度和生成方式,通常来说至少是随机数 96 bits 以上。在做到这些之后,你怎么做拼接 base64 之类的都无所谓。
我们都能理解不要自创算法的重要性,但同时正确使用算法,正确的组合算法也相当重要。 |