Java 加密种子的最佳方法是什么?
我已经为一个简单的问题挣扎了好几个小时了。我正在开发一个桌面应用程序(钱包),它需要一个种子短语来运行。 当然,种子需要用密码加密并存储到配置文件中。我发现Jaspyt可以轻松加密字符串,但显然Jaspyt的PBEStringencryptor不安全/不推荐使用。因为只有一个密码,所以用盐腌制它没有任何意义(会吗?)。 我在stackoverflock上发现了许多其他方法,但我一直说专家们出现并声称方法x是多么不安全Java 加密种子的最佳方法是什么?,java,security,encryption,Java,Security,Encryption,我已经为一个简单的问题挣扎了好几个小时了。我正在开发一个桌面应用程序(钱包),它需要一个种子短语来运行。 当然,种子需要用密码加密并存储到配置文件中。我发现Jaspyt可以轻松加密字符串,但显然Jaspyt的PBEStringencryptor不安全/不推荐使用。因为只有一个密码,所以用盐腌制它没有任何意义(会吗?)。 我在stackoverflock上发现了许多其他方法,但我一直说专家们出现并声称方法x是多么不安全 总结一下我的问题:既然我只处理一个种子短语,那么使用Jasypt的String
总结一下我的问题:既然我只处理一个种子短语,那么使用Jasypt的Stringencryptor就足够了,还是应该使用另一种方法呢?我不是Java开发人员,但根据描述,在您的情况下,我将使用所需密码对种子进行非对称加密,然后再将其存储到配置文件中 您可以使用Rivest-Shamir-Adleman(RSA)、椭圆曲线密码(ECC)来命名一些算法
干杯您努力寻找一个安全解决方案的原因可能是没有一个安全的解决方案能够正常工作 让我重申一下我认为您正试图解决的问题:
- 操作系统不足或有缺陷
- 您不信任操作员/管理员
- 你不能确定系统没有被黑客入侵,或者
- 系统没有物理安全保护。(如果有人能够在足够长的时间内对硬件进行未被发现的物理访问,他们就可以绕过操作系统的安全性。)
- 如果您可以假设平台是安全的,并且操作员是可信的,那么有一些技术方法可以确保机密的安全。。。来自非特权用户
- 对于某些类型的安全攻击,有一些缓解措施。例如,您可以使用保存机密,这样就不需要将其存储在文件系统中
- 否则。。。在(安全的)基础设施上运行软件,而不是在用户的PC或客户的服务器上运行
有人提到使用硬件模块(如智能卡、TPM等)可能会更安全,但便携性较差我是否正确地认为,在我的情况下,这句话没有好处?种子短语无论如何都是独一无二的,我也可以只使用AES对其进行加密。安全问题远不止于此。(而且……不……如果你在种子词组中加盐,没有什么真正的区别。)你需要退后一步,了解大局。弄清楚你要保护什么(和谁)。只有当你理解上下文时,才考虑机制……我看了一下Jasypt的StrongTextEncryptor,它使用的算法是“PBewithmd5和Tripledes”。从我收集到的信息来看,TripleDES不应该再使用了。@m-malkon关于原语的内容-3DES被认为是过时的,但没有被破坏。MD5今天严重损坏。然而,PBE密钥生成器的目的是通过混合盐和密码来创建高熵密钥。我读过一篇比我声誉更高的人的帖子,说PBewithmD5和Tripledes仍能安全地达到目的(我现在找不到参考资料)。但是,您不必强制使用Jasyp,您可以简单地使用任何当前值(pbkdf2、argon2、.pbeaes/sha256)。更重要的是,您可以使用具有适当密钥长度的pbe密钥生成器