问题标签 [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.

0 投票
0 回答
51 浏览

android - Android Jetpack Security MasterKey(s) 稳定版

我正在我的应用程序中实现 Android Jetpack Security,我对 MasterKey / MasterKeys 类的版本控制/实现感到困惑。

我发现,在 alpha 版本中,引入了 MasterKey 类并且不推荐使用 MasterKeys 类。然而,在稳定版本中,它包含 MasterKeys 但没有 MasterKey 类。

在本文档中,它说要导入稳定版本,然后通过引用库中不存在的类 (MasterKey) 来举例说明如何使用该库。本文档还提到不推荐使用 MasterKeys。

我读过 Jetpack 安全库人工制品是单独维护的链接,我想知道文档是否实际上是针对 alpha 版本的,并且还没有完全更新,因为稳定版最近才出现。

我不知道我是否只是没有正确遵循文档,或者我做错了什么,但如果有人能对此有所了解,那就太好了。我更喜欢使用正确的课程,但不知道是哪一个!

谢谢

0 投票
0 回答
35 浏览

android - 是否可以使用 Android Jetpack 创建具有不同参数的多个加密密钥?

我决定使用 Android Jetpack 来提供可靠的加密操作。关于这一点,我有两个案例要介绍

  1. 可以使用生成的密钥加密的一些常规简单数据,无需额外保护
  2. 需要用生物识别技术额外保护的秘密

我将 1. 存储在 EncryptedPrefs 和 2. 在 EncryptedFile

目前,当我使用MasterKey.Builder和提供KeyGenParameterSpec. 对于 2. 我另外添加

首先,我为常规文件构建密钥,然后为秘密构建密钥。

不幸的是,整个图书馆似乎只能使用一个 MasterKey。因此,即使在setUserAuthenticationValidityDurationSeconds首次创建密钥后调用它也不会改变任何内容。另一方面,当我首先为秘密创建密钥时,它工作正常。

当我查看代码时,似乎每个库都有一个主密钥——即使我在构建过程中尝试将别名更改为不同的,我也会从库中得到一个异常。最初我的想法是使用别名为每个文件创建一个密钥,但这似乎是不可能的。

是否可以使用 Jetpack 实现我的场景?

0 投票
0 回答
63 浏览

android - Jetpack Security 与两个主密钥的使用

有人成功使用 Jetpack Security 通过两个单独的主密钥进行加密吗?用例是使用“常规”密钥加密一组数据,另一组使用具有额外生物特征保护的密钥加密。

仅使用两个具有相同规格的单独键尝试以下操作,仅用于测试:

但是InvalidProtocolBufferException: Protocol message contained an invalid tag (zero)一旦使用另一个密钥就得到了。这发生在稳定版本和最新的 alpha03 上。

我向 Google 发布了关于https://issuetracker.google.com/issues/192470296的错误报告,但我没有希望,因为基于其他报告的错误,他们根本不关心。无论如何,如果您遇到问题,请星标,也许有人会注意到。

0 投票
0 回答
42 浏览

java - 如何在安卓保险箱中存储外部密钥/秘密?

我目前正在使用 android jetpack 安全性。我想将外部生成的密钥/秘密存储在我的 android 应用程序中。

有没有办法在 android 密钥库中写入外部密钥?

对我来说最好的方法是我可以将外部机密保存在 android keystore 保险箱中。如果设备有安全元件,有没有办法直接写/对话?

0 投票
1 回答
176 浏览

android - 在 Android 中,即使设备已植根,如何在客户端保护 api 密钥?

我们如何保护 root 设备上的 api 密钥?

如您所知,我们不能信任客户,我们能做的就是让黑客为难。以下是我知道的保护密钥的一些要点

  1. 使用 NDK(将密钥存储在您的 C 类中并在运行时在 kotlin 类中获取它) - 即使设备是 root 或反编译的黑客也无法访问它。
  2. 使用Android Key Chain(将密钥存储在硬件设备中,没有设备完整性,证书,没有人可以访问它。它存储在与您的应用程序不同的地方。不确定如果我们反编译应用程序会发生什么)。
  3. 安全共享偏好。(即使我们加密了文件,它仍然可以在root设备上访问,可以通过检查代码来确定解密算法)
  4. 安全共享偏好和 Proguard/Dexguard?(当设备被植根时,将加密密钥公开存储在应用程序包下仍然不是一个好主意。)
  5. 如果我们只是加密文件?(同样它会在应用程序包文件夹下,可以访问。)

还有什么其他选择?

0 投票
2 回答
200 浏览

android - 需要混淆 Android 应用中的敏感数据

目前在我的 android 应用程序中,由 DexGuard 保护以混淆字符串和敏感信息,如源代码中存在的网络 API 密钥。
我使用了 DexGuarsd,因此没有人可以对其进行逆向工程。

但是我需要停止 DexGuard 订阅。
因此,如果我使用 Android Jetpack Security EncryptedSharedPreferencesEncryptedFile.Builder它会帮助我实现像 DexGaurd 提供的那样的安全性。

例如:如果我使用EncryptedSharedPreferences下面的代码,那么如果有人可以访问我的源代码 OR .apk,那么他/她是否能够看到敏感值PASSWORD-XXXXXXXX
因为上面的密码存在于我的源代码文件中。

我的目标是确保即使有人获得了我的源代码,上述值“PASSWORD-XXXXXXXX”也永远不会被任何人解密或看到。

我需要你的指导来实现它。请指点前进的方向。

0 投票
1 回答
105 浏览

android - 2021 年在 Android 中加密字符串的最佳和最安全的方法是什么?

我惊讶地发现 Jatpack Security只提供对FileSharedPreferences加密的支持。但是我需要能够加密和解密Strings 因为我想使用AccountManagerand 来存储刷新和访问令牌,并且按照官方文档中的建议,这种数据应该加密发送到AccountManagerhttps://developer.android.com/training/id-auth/custom_auth#Security

在线搜索有很多关于如何String在 Android 上加密 s 的教程,但其中大多数似乎已经很老了,我害怕选择错误的教程可能会导致 Play Store Console 上出现这种警告: 在此处输入图像描述

那么,String2021 年在 Android 应用程序中加密 s 的正确且安全的方法是什么?Jetpack Security 仍然可以在某种程度上使用(也许是生成密钥?)以及为什么它不支持开箱即用的字符串加密,而只支持Files 和SharedPreferences?

0 投票
0 回答
50 浏览

android - 在Android应用程序中混淆字符串的最佳方法是什么

我需要在我的生产应用程序中混淆敏感字符串(密码)。
我知道敏感密钥不应该存储在应用程序中,但由于一些不可避免的原因,我不得不存储它。
而且 Google 也不提供对字符串混淆的任何支持。

该应用程序正在生产中,拥有数百万用户的用户群。

目前,我正在使用 Dexguard 来保护我的字符串,但我没有更多的钱来继续订阅它。

我应该采取什么方法来确保我的字符串在不使用 DexGuard 的情况下是安全的。如何混淆字符串?