我正在为 Android 编写应用程序,我必须存储两个 key ,我将使用这两个 key 来加密/解密某些消息。 (我必须存储私钥 RSA)。我读过:
https://developer.android.com/training/articles/keystore.html#WhichShouldIUse
还有一个标题为:
Choosing Between a Keychain or the Android Keystore Provider
但是,我仍然不确定我应该选择什么来获得最安全的解决方案。
请帮帮我。
最佳答案
正如页面所说:
Use the KeyChain API when you want system-wide credentials
KeyChain API 的目的是使用用户名/密码凭据来获取此应用程序(以及潜在的其他应用程序)可以使用的“ token ”。 KeyChain 也经常用于在后台同步私有(private)信息(如邮件)。
但在您的情况下,听起来您只想存储一个 RSA 私钥。在这种情况下,Keystore 是更好的解决方案。请注意,Keystore 仅适用于 4.3+ 设备,这是因为它使用硬件支持的安全存储(如 ARM Trustzone 和其他安全执行环境)来存储其私钥(如果存在硬件模块)。此功能是在 Android 4.3 中添加的。
要使用 keystore ,您需要使用公钥生成证书并将其与私钥一起保存在 keystore 中。 Keystore 使用用户锁屏模式/pin/等。 (如果存在)加密私钥。请注意,这有时会导致令人恼火的事实,即只要用户不删除其证书存储或删除应用程序(在 Android <= 5="" 下),用户就无法再禁用其锁定屏幕,因此请确保删除证书当不再需要="" key="" 时。="" keystore="" 会将私钥保存在硬件模块(如果存在)中,因此提取私钥或其他应用程序使用私钥加密数据要困难得多。仍然不是="" 100%="" 万无一失,因为新="">=>exploits are found并且 root 可以(以某种方式)绕过这个额外的保护层。但这仍然比将私钥保存在文件中要好。
此外,如果您想更深入地了解这一切的“幕后”工作原理,我建议您阅读 this paper其中详细介绍了 Android 中的 keystore 和其他安全机制。
关于android - 在 Android 中存储 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40774594/
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我有一个.pfx格式的证书,我需要使用ruby提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o
我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于
我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不
我正在使用mechanize登录网站,然后检索页面。我遇到了一些问题,我怀疑这是由于cookie中的某些值造成的。当Mechanize登录网站时,我假设它存储了cookie。如何通过Mechanize打印出存储在cookie中的所有数据? 最佳答案 代理有一个cookie方法。agent=Mechanize.newpage=agent.get("http://www.google.com/")agent.cookiesagent.cookies.to_scookie返回一个Mechanize::Cookiesobject
我以为它们存储在cookie中-但不,检查cookie没有任何结果。session也不存储它们。那么,我在哪里可以找到它们?我需要这个来直接设置它们(而不是通过flashhash)。 最佳答案 它们存储在inyoursessionstore.自rails2.0以来的默认设置是cookie存储,但请检查config/initializers/session_store.rb以检查您是否使用默认设置以外的东西。 关于ruby-on-rails-闪存消息存储在哪里?,我们在StackOverf
在Ruby(或Rails)中,我们可以做到new_params=params.merge({:order=>'asc'})现在new_params是一个带有添加键:order的散列。但是是否有一行可以返回带有已删除key的散列?线路new_params=params.delete(:order)不会工作,因为delete方法返回值,仅此而已。我们必须分3步完成吗?tmp_params=paramstmp_params.delete(:order)returntmp_params有没有更好的方法?因为我想做一个new_params=(params[:order].blank?||para
response是一个散列,可能看起来像以下两种情况之一:response={'demo'=>'nil','test_01'=>'DemoData'}或response={'test'=>'DemoData','demo'=>'nil'}我想做这样的事情:ifresponse.has_key?'test_01'new_response.update(:nps_score=>response['test_01']elsenew_response.update(:nps_score=>response['test']end是否有更“Ruby”的方法来解决这个问题?也许使用||的东西运算符(