当前位置: 首页 > 面试题库 >

优良作法:如何在android / java中处理密钥库密码?

濮阳旺
2023-03-14
问题内容

假设密钥库的密码不是由用户密码提供或未绑定到用户密码(这或多或少意味着它只是某处代码中的String或Array
[]),是否足以保护它只是不能或几乎不能从字节码中提取出来?

我知道密钥库(JKS /
BKS)的密码仅用于验证密钥库的完整性。此外,很明显,我必须假设应用程序在或多或少受信任的环境中运行才能“安全”。但是无论如何,是否可以仅从apk文件提取密码?

在应用程序源中对任何密码进行硬编码只是感觉不对,所以也许有一些想法,如何使它实际上减少威胁。例如,最好在外部配置文件中配置密码,或者在应用安装期间随机生成密码(然后将密码存储在哪里)?


问题答案:

它是不能或几乎不能从字节码中提取出来的足够保护吗?

“足够”是一个主观术语;只有您才能确定自己的感觉足以满足您的需求。

是否可以仅从apk文件提取密码?

是的,因为可以对APK文件进行反编译,可以监听未加密的网络对话,等等。

如何减少威胁

您可以购买并使用DexGuard的许可证,因为它会加密诸如密码之类的硬编码字符串。是否值得进行额外的防御是您的决定。

最好在外部配置文件中配置密码

根植设备的任何人都可以获取该文件。

还是在应用安装过程中随机生成(然后应将其存储在哪里)?

它将存储在至少对root用户可用的位置。



 类似资料:
  • 假设密钥库的密码不是由用户密码提供或绑定的(这或多或少意味着它只是代码中的一个字符串或数组[]),它是否是一个足够的保护,只是不能或只能勉强被提取出来字节码的? 我知道密钥库(JKS/BKS)的密码只是用来验证密钥库的完整性。此外,很明显,我必须假设一个应用程序在一个或多或少受信任的环境中运行才能“安全”。但无论如何,是否有可能仅从apk文件中提取密码? 在应用程序的源代码中硬编码任何密码都是错误

  • 问题内容: 我需要将2个密钥存储到KeyStore中,这是相关代码: 尽管我得到了执行,但“私钥必须带有证书链” 那到底是什么?以及我将如何生成它? 问题答案: 您还需要提供私钥条目的证书(公钥)。对于由CA签名的证书,链是CA的证书和最终证书。对于自签名证书,您只有自签名证书。 示例: 要生成证书,请点击以下链接: 示例:

  • 我试图为某些设备生成密钥时出错。我能够在运行4.4.2的三星Galaxy Note上重现错误。 我创建了一个小应用程序,只能通过从Android开发者页面“生成新私钥”下的https://developer.android.com/training/articles/keystore.html逐行复制代码来生成密钥 错误似乎发生在kpg.generateKeyPair(),在Android Key

  • 我正试图更改存储在p12密钥库中的证书的密码。我设法通过使用ikeycmd更改了keystore密码,但对于键控器,似乎什么都不起作用。这是我正在尝试的命令: keytool-keypasswd-storetype pkcs12-keystore$keystore_file-alias$key_alias-keypass$key_password-new$new_pass-storepass$st

  • 我用过这个命令 生成密钥库。它工作正常,但从我读到的内容来看,这个命令还应该提示您输入密钥密码(而不是存储密码)?我从来没有收到过这样的提示。我能跑 查看密钥库的内容。钥匙似乎就在那里。。。正确的别名在那里。在哪里获取/设置特定别名的密码? 我有一个key.properties在Android目录 在build.gradle我有: 当我试图生成一个发布版本时,我得到了 我想它可能与keyPassw

  • 问题内容: 我希望有一种方法可以以编程方式访问Android设备上的中央信任密钥库。我知道存在,至少用于验证SSL连接等。它还带有一个方便的工具,用于添加证书,浏览等。(位于设置->位置和安全性->管理受信任的证书下) 我希望能够以编程方式从中检索公钥,以对文件等进行加密。 如果有可用的文档,似乎其他应用程序开发人员正在他们的应用程序中管理自己的密钥库,这似乎是多余的。 有任何想法吗? 问题答案: