6 security encryption android keystore
我目前正在调查使用Android 4.3中引入的安全/改进的Keystore.
我想在此密钥库中存储加密密钥,此密钥用于加密sqllite数据库以及我的共享首选项中包含的值.
当我查看SDK中的KeyStore示例时,我看到以下内容:
public static final String ALIAS = "my_key"
Run Code Online (Sandbox Code Playgroud)
如果有人能够反编译我的代码,他们将能够看到明文别名(=从密钥库中检索加密密钥的密钥),因此他们将能够获得对我的加密密钥的引用.我怎样才能安全地管理我的ALIAS?还是我错过了这里的观点?
以下答案适用于4.3+.此版本的KeyStore和KeyChain类发生了重大变化.有关详细信息,请参见此处
Keystore 访问受UID限制 - 您的应用在安装时分配了UID.
这是阻止其他应用/进程访问您的密钥对/私钥的原因.密钥库deamon将强制执行此操作.
这可能需要一个器件引脚进行额外的加密.请参阅http://developer.android.com/reference/android/security/KeyPairGeneratorSpec.Builder.html#setEncryptionRequired()
使用软件/硬件密钥库的全部意义在于解决您描述的情况 - 应用程序中的任何硬编码数据都可以在反编译中读取,因此不安全.
@Duncans的答案让你看起来需要密码.我建议您使用密钥库生成密钥对,然后使用它来加密可用于加密任何所需内容的AES密钥(比使用RSA密钥快得多)
您可以使用硬件/ sortware密钥库支持的私钥keyStore.getEntry(alias, null);,但不传递任何类型的密码.
请参阅SecretKeyWrapper.java以获取此示例
| 归档时间: |
|
| 查看次数: |
5070 次 |
| 最近记录: |