加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Android数据存储安全实践

发布时间:2018-10-10 14:06:39 所属栏目:业界 来源:root001
导读:【新产品上线啦】51CTO播客,随时随地,碎片化学习 一、数据存储安全 Android操作系统自问世以来凭借其开放性和易用性成为当前智能手机的主流操作系统之一,作为与人们关系最密切的智能设备,越来越多的通讯录、短信、视频等隐私数据以明文的方式保存在手机

对称加密特点是实现效率快,但是由于加/解密密钥相同,在密钥保存、分发、安全各方面出现许多问题,例如密钥管理,密钥泄露。基于此,将加密密钥和解密密钥分开,形成客户端端使用公钥加密,服务端用私钥解密的非对称加密,将加解密密钥分开,加密密钥不必担心泄露风险。常用的非对称加密算法如RSA。

RSA加解密实现

  1. // 生成 public and private keysKeyPair buildKeyPair() NoSuchAlgorithmException { 
  2.      keySize = 2048; 
  3.      KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(); 
  4.      keyPairGenerator.initialize(keySize); 
  5.      keyPairGenerator.genKeyPair(); 
  6.  } 
  7. //RSA 加密 [] encrypt(PrivateKey privateKey, [] data) Exception { 
  8.      Cipher cipher = Cipher.getInstance(); 
  9.      cipher.init(Cipher., privateKey); 
  10.      //加密cipher.doFinal(data); 
  11.  } 
  12. //RSA 解密 [] decrypt(PublicKey publicKey, [] enData) Exception { 
  13.      Cipher cipher = Cipher.getInstance(); 
  14.      cipher.init(Cipher., publicKey); 
  15.      //解密cipher.doFinal(enData); 
  16.  } 

在常用数据加密方法中,通常也会遇到md5、sha-256算法等,但是这些算法是明文的hash值,哈希算法和加密算法的本质是是否可逆,即由密文通过运算得到明文。特别注意,base64编码是一种编码格式,除了增加可读性难度没有任何安全性。

四、存储安全进阶

在上文中介绍了常用的Android数据存储方式和加密算法,通过直观的介绍进入到Android存储安全中,在实际的应用中数据存储安全性问题是一个复制的系统性问题,不仅仅表现在开发中,从数据结构到编码以及密钥的生成和管理都会涉及到数据存储安全。

文件的隐藏 Android创建隐藏文件或者文件夹,在文件名或者文件夹名字前加一个“.”号即可(这里是英文输入法下的.号),隐藏文件/文件夹可直接进行读写。这是一个容易被开发者忽略的问题,乍一看好像没什么难度,问题在于开发者和用户视角问题。由于Android手机默认带文件查看器,因此用户可以轻松查看、修改sdcard目录下的文件,当使用隐藏文件是最大的作用是避免用户误操作。

密钥的保存 如果将密钥保存到手机文件中,或者通过硬编码的方式写在代码中,容易被逆向出来,在通常情况下,采用对称加密密钥需要保存在用户手机中,这和安全性想违背。通常最好的方式是不要保有密钥,通过固定数据或者字符串做加密密钥因子,例如用户唯一账号属性等。

编码方式 Android代码主要有Java编码,打包文件时Java代码打包成dex文件防到安装包文件中,但是dex文件容易被逆向回smali代码或者Java文件。虽然目前混淆和加壳甚至是虚拟机保护(VMP)技术已经很成熟,简单逆向工作无法获取代码逻辑和硬编码字符串,但是Java代码依然存在很高的安全风险。因此,将加解密相关操作通过Native代码实现很有必要,不仅保证效率而且在so保护技术之上安全性更高。

五、Android数据安全思考

随着移动互联网深入发展,目前移动应用正在发生质的改变。相比繁荣初始的粗狂、野蛮,现在的移动应用开始考虑安全和质量,特别是当前我国互联网信息安全的大形势,数据安全关乎企业和应用的生存的前提,保护应用数据安全至关重要。在Android数据存储安全中,由于Android系统的安全机制,用户获取root权限后可以访问手机所有目录,包括应用私有目录,因此,数据存储要考虑到一个白盒环境,或者非可信环境。这种情况下,数据加密的密钥成为关键。一机一密、动态密钥、密钥白盒等手段各有优缺点。一机一密需要保护密钥生成方法逻辑;动态密钥需要考虑密钥时效性,有效性以及链路安全;密钥白盒由于目前没有广泛认可,在兼容性安全性方面有待考验。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读