首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java桌面应用程序中的私钥存储

问Java桌面应用程序中的私钥存储
EN

Security用户
提问于 2017-12-28 21:37:28
回答 4查看 3.5K关注 0票数 3

我说的是API、等的系统私钥.(不是用户S私钥)

最好的存放地点在哪里?(Java类、属性、隐藏文件、首选项)(跨平台Win、Mac和Linux)

我需要加密这些密钥吗?在我们开始使用第三方服务之前,我可能需要解密。

EN

回答 4

Security用户

发布于 2018-01-12 21:43:59

让我们从这个开始:

我需要加密这些密钥吗?

1:如果你有通信机器去机器或应用程序,你可以使用加密结合HMAC和初始化向量( iv ),这样你就可以使你的密钥免受MITM和类似的攻击。

他说:但如果你需要用非加密密钥对服务器端进行身份验证,你就无法保护它们。

3:保护您的应用程序不受reverse ->的影响--您不能道歉,但我可以给您一个技术列表,以使您的应用程序非常难以逆转:

·反API喷雾器

·反断点

·抗CrackTools

·抗DumperPro

·密码加密

·“守则”取代

调试器护卫

·动态加密

·GarbageCode

·int DebugShield

·内存保护

·突变式发动机

·多态层

·安全API包装器

安全入境点

·压缩

·变型

·螺纹发动机监视器

你可以搜索谷歌,以获得更多关于这项技术的细节。

,哪里是最好的存放地点?

如果您使用上面的方法来保护您的应用程序不发生反转,最好将它们放在类中的私有字段中。

在Linux中,其他明智的方法是将它们放入文件中,如您所知,linux或UNIX中的每一件事情都是以600为权限的文件。

在窗口中,把它们放在注册表中。

->你可以使用隐写术(水印)技术

票数 2
EN

Security用户

发布于 2018-01-07 02:53:11

您已经说过这是针对桌面应用程序的,因此请注意,无论您做什么,坚定的攻击者/反向工程师将能够恢复这些密钥。如果混淆它们很重要(为了减少这一点),您可以考虑对它们进行加密,然后在运行时解密。当然,你需要把钥匙放在某个地方,这样你就有了一些鸡蛋问题。

如果对这些键有任何实际敏感的东西(例如,不仅仅是),您可能希望为用户生成每个用户的密钥,并将其存储在本地。(如果需要与服务器端组件共享密钥,则可以通过TLS连接上载密钥。)

票数 1
EN

Security用户

发布于 2018-01-09 15:21:14

正如David所说,您不能使用任何不希望客户端在客户端设备上访问的数据。无论您做什么,如果您的应用程序可以提取它,用户可以。

在需要仅限制对已批准用户的访问的情况下,需要对用户进行身份验证。要么您需要为每个已批准的用户提供一个API密钥,要么您需要在客户机和(第三方) API之间放置一个验证用户身份的中间件服务。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/176299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档