问题标签 [encrypted-shared-preference]

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 投票
1 回答
2493 浏览

android - 使用 EncryptedSharedPreferences 获取 KeyStoreException 和 GeneralSecurityException,我该如何解决?

背景

在我使用的一个应用程序中,我将重要的东西(令牌)存储到 EncryptedSharedPreferences 中(取自此处此处):

毕业典礼:

问题

我注意到使用此代码时通过 Crashlytics 报告了 2 个错误(在此处报告):

  1. 第一个是MasterKey.BuilderGeneralSecurityException
  1. 第二个是EncryptedSharedPreferences.create在线的KeyStoreException,并且发生的频率更高,用户也更多:

编辑:似乎还有更多类型的例外:

  1. 无效协议缓冲区异常:
  1. 空指针异常:

我试过的

在 Internet 上搜索,我只发现了第一个异常 (GeneralSecurityException) 的线索,这可能是自定义 ROM 发生的,因为它们可能无法很好地实现用于加密的硬件密钥。

事实上,查看 Crashlytics 上的设备,查看每个设备的 Android 版本,我发现它们领先于我所看到的支持它们的最新版本。

对于第二个例外,可悲的是,我找不到任何解释,也没有解决方案。我认为这可能与应用程序的恢复有关,但这很奇怪,因为它经常发生。在 reddit(此处)上,有人写道,如果出现这种异常,他选择了wrap the initialization of EncryptedSharedPreferences with "clear all data if fails" and bite the bullet. 还建议它可能与android:allowBackup被禁用有关(确实如此)。

不知道其余的。

问题

为什么会出现这些异常?我能对他们做什么?

清除数据是唯一可以做的事情吗?我什至不确定它是否真的有帮助,因为如果我选择拥有它,这意味着每次它即将发生时崩溃报告都会消失......

android:allowBackup残疾有关系吗?

0 投票
1 回答
2621 浏览

java - 在 EncryptedSharedPreferences 中需要使用什么密钥别名?

在此处输入图像描述

如何在 Encrypted sharedpreferences 中使用密钥别名?以下是我的加密共享偏好

执行此操作时出现以下异常,

我需要DEFAULT_MASTER_KEY_ALIAS用那个框中提到的密钥别名替换吗?如果是,那么我怎么能在没有硬编码的情况下做到这一点?

我已替换DEFAULT_MASTER_KEY_ALIAS为模块下项目结构中提到的关键别名。得到以下异常。

0 投票
0 回答
88 浏览

android - android正确使用jwt身份验证

我目前正在构建一个使用 JWT 身份验证的应用程序。我已经rest-api使用nodejs,mongodb.

现在访问令牌没有过期时间(我知道它不安全,但无论如何)。您认为在手机中存储访问令牌的最佳选择是什么?有几种意见,例如AccountManagerSharedPreferences(我目前正在使用的一种)。但众所周知,它们并不安全。

使用EncryptedSharedPreferences方法是否正确?或者你有什么建议吗?

0 投票
0 回答
236 浏览

android - EncryptedSharedPreferences 显示错误。在 android 中安全保存(简单)值的最佳方法是什么?

我使用 Nox player 作为模拟器,工作环境是 Android Studio。当前项目的min-SDK版本为23,compileSDK版本为29。

java.lang.NoClassDefFoundError:解析失败:Landroid/security/keystore/KeyGenParameterSpec$Builder;

此错误发生在这部分代码中。

我还添加了这些依赖项。

我尝试更改android:allowbackup="false",也尝试将 min-SDK 版本更改为 24 或更高版本,但同样的问题总是发生。

如果有人有想法,请帮助我。谢谢。(PS 如果您有任何建议在 android 应用程序中保留简单值)

0 投票
0 回答
122 浏览

encryption - Android Keystore 和“设置”应用程序的“清除数据”操作是否相关?

我正在开发一个系统应用程序,我将一些敏感数据存储在 EncryptedSharedPreference 中。如果我清除 android Settings 应用程序的数据,我意识到我的应用程序无法按预期工作。发生这种情况是因为如果我尝试获取 EncryptedSharedPreferences 的实例,它会抛出 IOException。当我观察 encrypted_myapp_pref.xml 文件时,我可以看到该文件中存在所有加密值,并且该文件根本没有更改。

我读到 Jetpack Security 有两种类型的密钥 - 主密钥和子密钥:

MasterKey - 加密和解密所有子密钥,主密钥存储在 Android 密钥库中。 密钥 - 所有用户数据和所有数据 + 子密钥的加密和解密都以加密格式存储在 EncryptedSharedPreferences 本身中。

我的理论是:当我们对设置应用程序进行“清除数据”时,它也会清除 Android Keystore 实例。所有使用sharedUserId="android.uid.system" + EncryptedSharedPreferences. 但我没有找到任何支持我的理论的文件。

问题陈述:如果我们使用具有共享用户 ID 的系统应用程序并且如果我们清除设置应用程序的数据,在终止我们的应用程序并重新启动或设备重新启动时,我们的应用程序(任何系统应用程序)无法检索 EncryptedSharedPreferences 实例并失败带有 IOException。

0 投票
1 回答
105 浏览

android - 在加密共享首选项中保存用户凭据是否安全?

尝试保存用户凭据的是加密共享首选项。这种方法安全吗?

0 投票
0 回答
363 浏览

android - 加密共享首选项导致 Android 9 和 Android 10 上的 ANR

我正在使用加密共享首选项来加密首选项数据。我通过以下方式使用它:

我从我的应用程序类访问这个安全共享的首选项实例。这在我的生产应用程序中导致了 ANR 问题。

此行为观察器主要在 Android 9 和 10 上。

cipher.init周围报告了 Andorid 错误。有什么办法可以解决这个问题。它导致我的应用程序在 Playstore 上出现不良行为。

0 投票
2 回答
540 浏览

android - security-crypto:针对 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

定位 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一。强烈考虑使用 FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 是可变的时才使用 FLAG_MUTABLE,例如,如果它需要与内联回复或气泡一起使用。

堆栈跟踪:

com.google.crypto.tink.shaded.protobuf.FieldType$Collection。(FieldType.java:337) androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme。(EncryptedSharedPreferences.java:148) PreferenceHelper$Companion.init (PreferenceHelper.kt:41)

这就是我初始化 SharedPreferences 的方式:

请问有什么帮助吗?