问题标签 [android-jetpack-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android Jetpack Security MasterKey(s) 稳定版
我正在我的应用程序中实现 Android Jetpack Security,我对 MasterKey / MasterKeys 类的版本控制/实现感到困惑。
我发现,在 alpha 版本中,引入了 MasterKey 类并且不推荐使用 MasterKeys 类。然而,在稳定版本中,它包含 MasterKeys 但没有 MasterKey 类。
在本文档中,它说要导入稳定版本,然后通过引用库中不存在的类 (MasterKey) 来举例说明如何使用该库。本文档还提到不推荐使用 MasterKeys。
我读过 Jetpack 安全库人工制品是单独维护的链接,我想知道文档是否实际上是针对 alpha 版本的,并且还没有完全更新,因为稳定版最近才出现。
我不知道我是否只是没有正确遵循文档,或者我做错了什么,但如果有人能对此有所了解,那就太好了。我更喜欢使用正确的课程,但不知道是哪一个!
谢谢
android - 是否可以使用 Android Jetpack 创建具有不同参数的多个加密密钥?
我决定使用 Android Jetpack 来提供可靠的加密操作。关于这一点,我有两个案例要介绍
- 可以使用生成的密钥加密的一些常规简单数据,无需额外保护
- 需要用生物识别技术额外保护的秘密
我将 1. 存储在 EncryptedPrefs 和 2. 在 EncryptedFile
目前,当我使用MasterKey.Builder
和提供KeyGenParameterSpec
. 对于 2. 我另外添加
首先,我为常规文件构建密钥,然后为秘密构建密钥。
不幸的是,整个图书馆似乎只能使用一个 MasterKey。因此,即使在setUserAuthenticationValidityDurationSeconds
首次创建密钥后调用它也不会改变任何内容。另一方面,当我首先为秘密创建密钥时,它工作正常。
当我查看代码时,似乎每个库都有一个主密钥——即使我在构建过程中尝试将别名更改为不同的,我也会从库中得到一个异常。最初我的想法是使用别名为每个文件创建一个密钥,但这似乎是不可能的。
是否可以使用 Jetpack 实现我的场景?
android - Jetpack Security 与两个主密钥的使用
有人成功使用 Jetpack Security 通过两个单独的主密钥进行加密吗?用例是使用“常规”密钥加密一组数据,另一组使用具有额外生物特征保护的密钥加密。
仅使用两个具有相同规格的单独键尝试以下操作,仅用于测试:
但是InvalidProtocolBufferException: Protocol message contained an invalid tag (zero)
一旦使用另一个密钥就得到了。这发生在稳定版本和最新的 alpha03 上。
我向 Google 发布了关于https://issuetracker.google.com/issues/192470296的错误报告,但我没有希望,因为基于其他报告的错误,他们根本不关心。无论如何,如果您遇到问题,请星标,也许有人会注意到。
java - 如何在安卓保险箱中存储外部密钥/秘密?
我目前正在使用 android jetpack 安全性。我想将外部生成的密钥/秘密存储在我的 android 应用程序中。
有没有办法在 android 密钥库中写入外部密钥?
对我来说最好的方法是我可以将外部机密保存在 android keystore 保险箱中。如果设备有安全元件,有没有办法直接写/对话?
android - 在 Android 中,即使设备已植根,如何在客户端保护 api 密钥?
我们如何保护 root 设备上的 api 密钥?
如您所知,我们不能信任客户,我们能做的就是让黑客为难。以下是我知道的保护密钥的一些要点
- 使用 NDK(将密钥存储在您的 C 类中并在运行时在 kotlin 类中获取它) - 即使设备是 root 或反编译的黑客也无法访问它。
- 使用Android Key Chain(将密钥存储在硬件设备中,没有设备完整性,证书,没有人可以访问它。它存储在与您的应用程序不同的地方。不确定如果我们反编译应用程序会发生什么)。
- 安全共享偏好。(即使我们加密了文件,它仍然可以在root设备上访问,可以通过检查代码来确定解密算法)
- 安全共享偏好和 Proguard/Dexguard?(当设备被植根时,将加密密钥公开存储在应用程序包下仍然不是一个好主意。)
- 如果我们只是加密文件?(同样它会在应用程序包文件夹下,可以访问。)
还有什么其他选择?
android - 需要混淆 Android 应用中的敏感数据
目前在我的 android 应用程序中,由 DexGuard 保护以混淆字符串和敏感信息,如源代码中存在的网络 API 密钥。
我使用了 DexGuarsd,因此没有人可以对其进行逆向工程。
但是我需要停止 DexGuard 订阅。
因此,如果我使用 Android Jetpack Security EncryptedSharedPreferences
,EncryptedFile.Builder
它会帮助我实现像 DexGaurd 提供的那样的安全性。
例如:如果我使用EncryptedSharedPreferences
下面的代码,那么如果有人可以访问我的源代码 OR .apk
,那么他/她是否能够看到敏感值PASSWORD-XXXXXXXX。
因为上面的密码存在于我的源代码文件中。
我的目标是确保即使有人获得了我的源代码,上述值“PASSWORD-XXXXXXXX”也永远不会被任何人解密或看到。
我需要你的指导来实现它。请指点前进的方向。
android - 2021 年在 Android 中加密字符串的最佳和最安全的方法是什么?
我惊讶地发现 Jatpack Security只提供对File
和SharedPreferences
加密的支持。但是我需要能够加密和解密String
s 因为我想使用AccountManager
and 来存储刷新和访问令牌,并且按照官方文档中的建议,这种数据应该加密发送到AccountManager
:
在线搜索有很多关于如何String
在 Android 上加密 s 的教程,但其中大多数似乎已经很老了,我害怕选择错误的教程可能会导致 Play Store Console 上出现这种警告:
那么,String
2021 年在 Android 应用程序中加密 s 的正确且安全的方法是什么?Jetpack Security 仍然可以在某种程度上使用(也许是生成密钥?)以及为什么它不支持开箱即用的字符串加密,而只支持File
s 和SharedPreferences
?
android - 在Android应用程序中混淆字符串的最佳方法是什么
我需要在我的生产应用程序中混淆敏感字符串(密码)。
我知道敏感密钥不应该存储在应用程序中,但由于一些不可避免的原因,我不得不存储它。
而且 Google 也不提供对字符串混淆的任何支持。
该应用程序正在生产中,拥有数百万用户的用户群。
目前,我正在使用 Dexguard 来保护我的字符串,但我没有更多的钱来继续订阅它。
我应该采取什么方法来确保我的字符串在不使用 DexGuard 的情况下是安全的。如何混淆字符串?