第三方加固Android,安卓Hacking Part 12: 使用第三方库加固Shared Preferences

安卓Hacking Part 12: 使用第三方库加固Shared Preferences

2014-12-18 09:52:38

阅读:0次

在前几期中,我们介绍过Android应用开发过程中Shared Preference的实现,并演示了如何窃取安全防护不足的应用保存的Shared Preferences。本期中我们将学习如何使用一个名为”Secure Preferences”第三方库保护保存在Shared Preferences中的数据。尽管在设备被root的情况下,这个库也没法百分之百的保证应用的安全,但相比于普通的Shared Preferences敏感信息被能得到更好的保护。

0fe37601accb40f562d01e4c567de7f6.png

“Secure Preferences”是一个Shared preferences加密包装库,可以加密保存在XML文件里面的Shared Prefereces数据,并且是开源的。

本文会一步步教你如何在开发过程中使用“Secure Prefereces”库来保卫数据安全。

实战Android Secure Preferences

1、下载”Secure Prefereces”库,地址如下

2、在Eclipse中创建一个新工程。

3、在工程中添加我们刚刚下载的库以便待会用到。该过程类似于将其他库连接到我们的Android应用中去。如果你不知道怎么操作,简单的步骤就是:右击,选择属性,勾上“is Library”,然后将其连接的我们创建的应用中。

4、为了使用“Secure Prefereces”,我们需要在类中对Secure Prefereces进行初始化。

58743530ca22dada8f25a946dfa90b4b.png

5、现在我们就可以想使用普通的Shared Preferences一样,创建一个”Editor”对象来想XML中插入数据。

618ae8f9ee41fe3a8d2711733943f092.png

如上图所示,我们一样使用Editor对象的putString方法来插入数据。

6、使用getString带上必要的参数来读取数据。

0d6ddb8e29d1483b0eff6c5efc1729da.png

上图中的代码读取了一个键值为”PASSWORD”的值,并显示在一个textview中。

这就是”Secure Preferences”在应用开发中的用法。

现在,我们会深入研究下”Secure Preferences”背后的工作,已经它是如何降低数据被窃取的风险的。

这里用到的APK和代码可以在上面的连接下载到。

我们为本文开发的应用的Activity布局中有一个编辑框,两个按钮,一个文本框,一个按钮用于加密并保存编辑框中的数据,另一个用于解密并在文本框中显示数据。如下图:

50ad9897f159c9d72a8de9f5b6cad18a.png

当我们在输入框中输入数据并点击”encrypt and save”按钮的时候,上一届中第五步中的代码就会执行,加密并保存用户输入的数据:

c2a78d70391be207a4d8f35ecd60c58a.png

当我们点击”Decrypt and Display”按钮时,就会读取并解密保存在Shared Preferences中的数据。

现在,我们就来看看数据是怎么被存储到xml文件中的,以及为何可以增加窃密者窃取信息的难度。

前几期中,我们已经知道,Shared Prefercences 的数据保存在一个XML文件中,我们现在先吧这个文件下载到本地计算机中,可以使用如下命令:

adb pull /data/data/com.isi.secureprefs/shared_prefs/com.isi.secureprefs_preferences.xml

ca1bd4736ae6e4097e687188e2a7fb23.png

可以使用cat命令查看文件的内容:

cat com.isi.secureprefs_preferences.xml

3ed902cce7239cba231c4e89881b9dfa.png

如上图,可以看到,这个xml文件中确实保存了数据,但却是经过了加密的数据。

“SecurePreferences”如何工作?

930c50fd742625a61a74f1b598ccaae8.png

Secure Preferences 使用AES来加密数据。在Secure Preferences第一次被初始化的的时候回使用伪随机数来生成一个随机秘钥,并使用这个秘钥来加密保存的键值对,加密结果进过一遍base64后保存到XML文件中。因为AES是一种对此加密算法,所以解密也使用同一个秘钥。

总结

本文介绍了如何加密Shared Preferences中保存的键值对。这中办法能极大的提高设备中保存的数据的安全性。但当设备被root之后,这就不是那么理想了。更好的办法是使用基于密码的加密方式,及更加用户输入的密码来生成加密解密用的秘钥。

相关链接

Image Credit:

目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值