第二十五章 网站安全需求分析与安全保护工程
25.1 移动应用安全威胁与需求分析
25.1.1 移动应用系统组成与安全分析
移动应用系统包括三个部分:
①移动应用,简称App;
·②通信网络,包括无线网络、移动通信网络及互联网;
·③应用服务端,由相关的服务器构成,负责处理来自App的相关信息或数据。

25.1.2 移动应用安全分析
移动应用的安全威胁:
·1.移动操作系统平台安全威胁。(谷歌Android+苹果IOS+华为鸿蒙)
·2.无线网络攻击。(4G/5G假冒基站+WIFI“钓鱼”,或其他通信内容监听)
·3.恶意代码。恶意扣费、隐私窃取、远程控制、诱骗欺诈、系统破坏、恶意传播等。
·4.移动应用代码逆向工程。攻击者通过对移动应用程序的二进制代码进行反编译分析,获取移动应用源代码的关键算法思路或窃取敏感数据。
·5.移动应用程序非法篡改。攻击者利用安全工具,非法篡改移动应用程序,实现恶意的攻击,窃取用户信息。
25.1.3 Android系统架构
Android系统分成Linux内核层(Linux Kenel)、系统运行库层(Libraries和Android吕ntime)、应用程序框架层(Application Framework)和应用程序层(Applications)。

25.1.4 Android系统安全与保护机制
Android系统在内核层、系统运行库层、应用程序框架层以及应用程序层都采取了相应的安全措施。

25.1.5 Android系统安全与保护机制
1.应用程序层:权限声明机制。
为操作权限和对象之间设定了一些限制,只有把权限和对象进行绑定,才可以有权操作对象。
权限声明机制还制定了不同级别不同的认证方式的制度。应用程序层的权限包括如下四种权限:
·normal权限:不会给用户带来实质性的伤害;
·dangerous权限:可能会给用户带来潜在威胁,如读取用户位置信息读取电话簿等,对于此类安全威胁,目前大多数手机会在用户安装应用时提醒用户;
·signature权限:只有和定义该权限者具有相同签名的应用才可以申请该权限;
·signatureorSystem权限:主要由设备商使用。
2.应用程序框架层:应用程序签名机制。
·Android将应用程序打包成APK文件,应用程序签名机制规定对APK文件进行数字签名,用来标识应用程序开发者和应用程序之间存在信任关系。
·安装到Android系统中的应用程序必须拥有一个数字证书,用于标识应用程序的作者和应用程序之间的信任关系。
3.系统运行层:沙箱机制、SSL。
·沙箱隔离机制:应用程序和其相应运行的Dalvik虚拟机都运行在独立的Linux进程空间,不与其他应用程序交叉,实现完全隔离。
·Android支持使用SSL/TSL协议对网络数据进行传输加密,以防止敏感数据泄露。
4.内核层:文件系统安全、地址空间布局随机化、SELinux.
·Android系统的内核层采用分区和Linux ACL权限控制机制。每个文件访问控制权限都由其拥有者、所属的组、读写执行三个方面共同控制。文件在创建时被赋予了不同的应用程序ID,只有拥有相同应用程序ID或被设置为全局可读写才能够被其他应用程序所访问。
25.1.6 IOS系统组成概要
IOS平台是苹果公司封闭的生态系统,分为四个层次:核心操作系统层(Core OS Layer)、核心服务层 (Core Services Layer)、媒体层 (Media Layer) 和可触摸层 (Cocoa Touch Layer) .

25.1.7 IOS系统安全机制
IOS平台的安全架构可以分为硬件、固件、软件。
·硬件、固件层由设备密钥、设备组密钥、苹果根认证、加密引擎、内核组成。
·软件层则由文件系统、操作系统分区、用户分区、应用沙盒及数据保护类构成。
IOS平台主要安全机制如下:
1.安全启动链。IOS启动过程使用的组件要求完整性验证,确保信任传递可控。
2.数据保护。针对移动设备因丢失或被窃取导致的泄露数据的风险,提供了数据保护API,API让应用开发者尽可能简单地对文件和keychain项中存储的敏感用户数据施以足够的保护。
3.数据的加密与保护机制。IOS内所有用户数据都是强制加密的。苹果的AES加解密引擎都是硬件级的。
4.地址空间布局随机化。利用ASLR技术,确保IOS的二进制文件、库文件、动态链接文件、栈和堆内存地址的位置是随机分布的,从而增强抗攻击能力。
5.代码签名。为防止应用攻击,IOS系统要求所有可执行程序必须使用苹果公司发放的证书签名。
6.沙箱机制。通过沙箱机制,可以限制进程的恶意行为。
25.1.8 移动应用 App安全加固
为保护移动应用 App的安全性,通常采用:
1.防反编译。对移动应用程序文件进行加密处理,防止攻击者通过静态的反编译工具,获取到应用的源代码。除了加密措施之外,还可以对移动应用程序进行代码混淆,增加破解者阅读代码的难度。常见的混淆方法有名字混淆、控制混淆、计算混淆等。
2.防调试。为防止应用程序动态调试,应用程序设置调试检测功能,以触发反调试安全保护措施,如清理用户数据、报告程序所在设备的情况、禁止使用某些功能甚至直接退出运行。
3.防篡改。通过数字签名和多重校验的防护手段,验证移动应用程序的完整性,防范移动应用程序APK被二次打包以及盗版。
4.防窃取。对移动应用相关的本地数据文件、网络通信等进行加密,防止数据被窃取。