APP下载

iOS应用开发中用户敏感数据的保护策略

2019-05-24李艳

电脑知识与技术 2019年7期
关键词:逆向工程

李艳

摘要:与安卓系统的应用相比,iOS系统的封闭性和苹果应用商店的审查机制保证了iOS应用相对安全,但是开发者往往会忽视保护用户的像银行账户、密码以及秘钥等敏感数据的重要性。分析了iOS应用面临的基本的三种威胁,逐一依次提供了避免这些问题的策略,让用户的隐私不容易由于开发者的不小心而被轻易地泄露。

关键词:iOS应用开发;隐私泄露;SSL锁定;逆向工程;应用安全

中图分类号:TP393 文献标识码:A

文章编号:1009-3044(2019)07-0053-02

Abstract: As compared with the Android, the closure property of iOS and strict audit mechanisms ensure a relative safety of iOS applications. However, iOS developers frequently despise the importance of protecting users sensitive data such as bank accounts, passwords, and tokens. Three potential threats are analyzed in this paper, and corresponding solutions are provided respectively. Therefore, users sensitive information will not be leaked due to the careless of developers.

Key words: security of iOS App; private information leakage; SSL pinning; reverse engineering; security of App

1 背景

世界各国的公司和政府越来越重视普通用户的数据安全和隐私,最近,英国数据研究公司剑桥分析(Cambridge Analytica)利用美国社交网站Facebook数据震惊了全世界[1],有研究认为这次泄露直接影响了美国2016年大选和英国脱欧两大影响世界政治格局的事件。当今绝大部分人的日常生活已经离不开智能手机,为了满足用户的频繁使用需求,移动应用通常会存储用户重要的私人数据于用户的手机中,这给用户手机中的恶意软件有机可乘。

相对安卓系统而言,iOS作为一个封闭的系统,加上苹果一些开发限制,iOS系统的安全性通常被认为是比安卓强很多[2],因此,部分公司在开发iOS应用程序时候也就往往忽视了安全性,国家互联网监测中心的相关数据表明,iOS平台的病毒增长非常迅猛[3]。

2 iOS应用可能的安全风险

iOS安全问题涉及很多个方面,本文仅仅介绍三种基本的威胁:用户数据被泄露、用户数据被拦截、应用被逆向。

用户数据泄露。用户在面临各种各样的网站和应用需要注册的时候,往往希望用同一个一个账号,比如QQ或者微信登录,一些应用程序可能要求用户通常输入他们的私人数据,如果设备落入未经授权的人手中,则以不安全的方式存储的用户隐私数据会产生泄露的风险。

用户数据被拦截。在iOS应用程序中,拦截http/https请求和响应比较容易。即使采用SSL不足以确保所开发应用的安全性[4]。网络上有很多类似Charles Proxy这样的工具,不需要太多的网络知识也可以通过发送篡改请求来获得应用的请求、相应服务器的响应,或者操纵提供给用户不同的网络结果[5]。

应用被逆向工程。借助逆向工程,攻击者可以获取应用程序中使用的URL地址、标识符、密钥,了解应用的业务逻辑[6]。这样他就可以修改应用程序的行为,比如后台发送用户隐私数据、省略登录屏幕的过程、打开用户的摄像机等。

3 保护策略

3.1 用户数据保护

为了保护用户数据,需要考虑两个方面:(1)使用正确的数据存储解决方案;(2)在输入数据时保护数据。钥匙串(Keychain)是苹果公司开发的密码管理系统,存在于苹果公司的macOS电脑操作系统和iOS移动操作系统。苹果公司严格规定不允许在不同iOS应用程序之间共享钥匙串项目,这意味着iOS 钥匙串项目只能由创建它们的应用程序访问。因此在iOS开发者在开发应用時候,用户的登录、密钥和密码应存储在钥匙串中。核心数据(Core Data)是苹果公司为开发者的提供的持久性数据库开发接口框架,具有基础SQLite数据库的功能。有些开发者会将用户的敏感数据存放在核心数据,这是很危险的,因为默认情况下,当应用程序解锁时SQLite不会加密。苹果公司提供的“数据保护”的功能仅仅在设备被密码锁定时候,它才会对沙箱进行加密。

另一方面要保护用户的输入。如果用户使用简体中文输入法键盘,输入英文字符和数字字符的用户名和密码时,会自动启动系统输入法自动更正提示,然后用户的输入记录会被以明文的形式缓存下来,其他应用可以很方便读取从手机相关目录,获得字符串输入记录[7],开发者应注意关闭自动更正,屏幕截图存在类似的情况,当应用程序进入后台时,系统会截取屏幕截图。如果用户输入敏感数据并且在屏幕上可见,需要在应用程序进入后台之前实现屏蔽屏幕的机制。

3.2 SSL锁定(Pinning)

苹果公司采用了App Transport Security迫使开发人员必须使用SSL(Secure Socket Layer)。SSL虽让相对安全,但是通过ARP缓存投毒(cache poisoning) 或者DNS污染的方法也可以实现中间人攻击[8]。移动用户每天都会接触到很多不安全的无线网络,SSL锁定确保应用程序仅与指定的服务器本身通信。SSL锁定的先决条件之一是在应用程序包中保存目标的服务器的SSL证书[9]。应用程序在配置SSL锁定会话时可以用两种方式:利用苹果提供的网络访问接口NSURLSession、第三方库AlamoFire或者AFNetworking。

使用NSURLSession锁定SSL有点麻烦,开发者没有办法把已经锁定的证书放到一个数组中以便于读写操作,也不能自动终止与本地证书不匹配的响应,而且,需要手动地检查每一个由NSURLSession建立的SSL锁定。多数开发者目前会使用前面提到的两个库,它们已经封装了很多功能,使用更为简单方便。以使用AlamoFire库为例,先创建一个将域名映射到ServerTrustPolicy实例,用这个实例初始化一个ServerTrustPolicyManager对象,由这个对象创建SSL锁定的管理者(Manager)实例,最后调用ServerTrustPolicy.certificatesInBundle()一个方法就可以返回所有的证书。

3.3 防止逆向工程

防止逆向工程一个方法就是尽量采用Swift语言开发应用程序。 Swift是一种比Objective-C更新的语言[10],因此逆向工程工具的做得不是很好。还应该使用安全的方法来存储特定环境的应用程序密钥,比如使用Cocoapods密钥。其他的方法包括使用代码混淆、代码反调试技术、误导性方法名称、为攻击者创建陷阱和伪造方法等等。這种方法是一把双刃剑:迷惑了敌人的同时,使得自己的代码更难维护,开发更慢,更容易出错。

4 结束语

在iOS应用发布到苹果应用商店之前,必须对应用进行安全审核。并不一定非得花大量资金聘请外部黑客团队做攻防测试。开发者在开发过程中重视上述三个常见的“坑”,可以大大减少用户敏感数据泄露的风险。

参考文献:

[1] 王小侠, 李畅. 从“Facebook”数据泄露事件浅析个人信息权利保护[J]. 长春理工大学学报: 社会科学版, 2019, 32(1): 35-38.

[2] 汤文兵, 田忠彬. 基于iOS的停车场找车应用的设计与实现[J]. 电脑知识与技术, 2018, 14(4): 59-61, 66.

[3] 韩玉会. iOS系统应用安全性研究[J]. 电脑知识与技术, 2017, 13(11): 64-72.

[4] 李勇. iOS系统与应用安全分析方法研究[D]. 上海: 上海交通大学, 2015.

[5] Hubbard J, Weimer K, Chen Y. A study of SSL Proxy attacks on Android and iOS mobile applications[C]. Las Vegas, NV, USA: IEEE 11th CCNC, 2014: 86-91.

[6] 姚佳玮. iOS平台应用程序逆向分析技术研究[D]. 哈尔滨: 哈尔滨工程大学, 2016.

[7] 李柏岚, 谷大武, 李卷孺, 等. iOS备份机制中隐私威胁问题的分析[J]. 通信技术, 2012(2): 25-28.

[8] 王蕾, 李丰, 李炼, 等. 污点分析技术的原理和实践应用[J]. 软件学报, 2017(4): 860-882.

[9] DOrazio, Christian J, Choo K K R. A technique to circumvent SSL/TLS validations on iOS Devices[J]. Future Generation Computer Systems, 2016(74): 366-374.

[10] 李亚欣, 蔡永香, 邓舒颖. 基于Swift对Objective-C开发的移动应用程序优化[J]. 软件导刊, 2018, 17(10): 178-182.

【通联编辑:谢媛媛】

猜你喜欢

逆向工程
基于Geomagic的汽车内门把手逆向设计
Q6儿童假人颈部有限元模型的建立与验证
浅谈逆向工程中自由曲面技术的应用