一、引言
随着移动互联网的飞速发展和日益普及,移动智能终端被广泛使用并成为人们日常工作生活中必不可少的组成部分。但与此同时,移动智能终端处理能力强大、获取信息灵活、存储数据便捷、应用开发方便等特点不可避免地带来大量安全隐患。作为移动智能终端的管理控制中心,移动应用的繁荣发展和安全问题的大量滋生均来自于移动操作系统。移动操作系统采用功能更加强大、平台更加开放的架构,本身就可能产生更多的安全漏洞。同时,移动操作系统为开发者提供大量应用编程接口,这也给攻击者带来更多的恶意攻击机会。此外,由于移动智能终端中存储了包括通信录、消息和通话记录、账号密码等大量重要用户信息,不可避免地吸引来更多的恶意攻击。为此,深入研究移动操作系统安全机制与测试验证方法成为当前移动操作系统得以生存和发展的重要问题。
二、体系架构
在移动智能终端中,移动操作系统是管理控制硬件和软件资源,合理组织工作流程,并为用户提供使用方便、安全有效的系统软件。移动操作系统的主要工作包括硬件管理、运行管理、存储管理、接口管理、数据管理和用户接口等,一般由操作系统内核、本地库及系统服务、应用框架3层构成。
1、操作系统内核
操作系统内核是移动操作系统最核心的组件,是硬件与软件之间的抽象层,管理系统资源并向上层提供基础服务,以最高权限(如root或admin权限)运行。具体工作包括:进程管理(负责管理移动应用和系统服务进程的启动、运行与退出)、内存管理(负责进程内存分配和回收管理,并对碎片化的内存进行整理)、文件系统管理(负责文件的创建、读写和删除,文件权限的管理,以及包括SD卡在内外部存储的加载与管理)、设备抽象管理(借助设备驱动程序屏蔽相同类型不同厂商的硬件差异,并向上层提供统一的硬件访问接口)和网络协议栈(按照协议规范进行网络接口和上层应用之间数据包的收发)。
2、内核本地库及系统服务
内核本地库及系统服务构建在操作系统内核之上,实现更高级的系统功能,并对应用框架乃至应用软件提供服务。主要包括图形显示、多媒体、数据库、字体渲染、加解密、标准C库函数等部件。内核本地库及系统服务本身并不直接与移动智能终端硬件打交道,故调用这些本地库时无需进行用户态到内核态的上下文切换,大大提高了系统运行效率。同时,相关进程通常以低于最高系统权限的普通系统权限运行,发生问题时可在一定程度上限制损失范围。
3、应用框架
应用框架构建在本地库和系统服务的基础之上,将操作系统的各项能力以应用编程接口形式提供给应用软件调用,并对移动应用提供服务、支持和管理。各类移动操作系统底层大同小异,主要差异均体现在应用框架层。应用框架可支持如下3类应用中的一种或多种。
本地应用:基于编译语言(如C/C++/Objective-C)进行编写,编译成本地可执行代码可直接调用应用框架的应用编程接口并运行。此类应用软件运行效率高但开发有一定难度,典型例子如苹果公司iOS操作系统。
托管应用:基于解释语言(如Java/C#)进行编写,编译成字节码后经由虚拟机调用应用框架提供的应用编程接口来解释执行。此类应用软件运行效率一般但便于开发,典型例子如谷歌公司Android操作系统。
Web应用:基于脚本语言(如HTML/CSS和JavaScript)进行编写,并经由透明Web引擎调用应用编程接口来解释执行。此类应用软件运行效率低但简单,典型例子如阿里巴巴云操作系统。
三、安全机制
移动操作系统安全机制目标是消除自身安全漏洞并提高安全防范能力,达到对系统资源调用的监控、保护和提醒,确保涉及安全的系统行为总是在受控状态下,不会出现用户在不知情情况下执行某种行为,或执行用户不可控的行为。目前,主流移动操作系统使用类似安全机制,本部分将以Android为例进行共性安全机制分析。
Android系统安全架构包括若干安全单元,不同安全单元依赖组合,形成基本安全功能:应用沙箱、权限管理、应用签名、加密机制和管理安全。
1、应用沙箱
应用沙箱是一种按照安全策略限制程序行为的执行环境。系统每安装一个应用时,都会单独为其在系统中分配一个低权限属主(包括用户名、用户ID和用户组)及权限,应用运行时只能在限定执行环境中运行,操作相应文件、数据和内存,不同沙箱之间的应用无法互相影响。Android使用数字签名来区分不同的应用开发者,若两个应用的签名证书相同,Android就认为它们来自同一个开发者,此时若应用设置了sharedUserId选项,系统就会为两者分配相同的用户ID(相当于置于同一个沙箱内),使其可直接共享私有数据。
2、权限管理
在Android中,敏感操作(如读联系人、发短信)不能通过直接读系统文件或访问硬件的方式来完成,而必须调用系统应用编程接口(API)实现。每个涉及敏感操作的API都设置有权限保护,开发者若要在应用中调用敏感API,必须在代码中进行声明。安装应用时,系统向用户明示该应用需用到的所有权限,只有当用户明确同意时,安装才会继续。应用一旦安装,其权限就固化下来,且系统会在应用运行过程数据加密(为应用程序提供了对数据的加密,其中实现了常用的标准密码学算法)、传输加密(为应用程序以加密方式进行网络数据传输提供完善的支持)和文件加密(对存储文件进行加密)。
3、加密机制
加密机制是Android安全基础,具体体现在:数据加密(为应用程序提供了对数据的加密,其中实现了常用的标准密码学算法)、传输加密(为应用程序以加密方式进行网络数据传输提供完善的支持)和文件加密(对存储文件进行加密)。
4、应用签名
应用软件在发布时均需打包和签名。与通常在信息安全领域中使用数字证书用途不同,Android利用数字签名来标识应用的作者和在应用间建立信任关系,而不是用来判定应用是否被安装。这个数字证书并不需要权威的数字证书签名机构认证,而是由开发者来进行控制和使用,用来进行应用包的自我认证。
5、管理安全
移动操作系统通常提供面向终端用户的管理安全机制,包括密码保护(用户可选择启用锁屏密码,系统支持密码解锁、图案解锁、指纹解锁和人脸解锁等)、设备管理(移动操作系统安全策略配置,包括密码安全策略、远程锁定策略和远程擦除策略等)。
四、测试验证
对于移动操作系统测试验证主要包括两方面内容:可知可控测试(终端用户对移动操作系统敏感行为可知可控)和安全漏洞测试(移动操作系统没有安全漏洞可被利用进行恶意攻击)。
1、可知可控测试
可知可控测试主要体现为移动操作系统为用户提供的知情权和选择权,具体包括:应用软件应通过各种形式的提示来告知其应用将要进行的行为、行为的目、行为方式、应用场景及可能造成的后果,用户拥有自主选择权,可选择是否允许该行为的执行,即可确认或取消。具体步骤包括:对应移动操作系统敏感行为梳理API,可参考邮电行业标准《YD/T2407-2013移动终端安全能力技术要求》;API进行测试程序开发,形成敏感行为测试程序进行测试,可参考邮电行业标准《YD/T2408-2013移动终端安全能力测试方法》。以上2个标准仅是基础标准,对于具体移动操作系统,需要梳理对应敏感行为和API。此外,应用测试软件形式可以是计算机侧测试软件或终端侧测试软件,具体形式也取决于移动操作系统是否支持计算机侧测试。
2、安全漏洞测试
安全漏洞测试主要体现在移动操作系统是否有漏洞可能被利用。漏洞又称脆弱性,早在1947年冯·诺依曼建立计算机系统结构理论时就认为计算机系统和自然生命有相似性,有天生的类似基因的缺陷,在其使用和发展过程中可能产生意想不到的问题。漏洞是移动操作系统本身的弱点和缺陷。漏洞本身的存在虽不会造成破坏,但可被攻击者利用,从而带来安全威胁和损失。作为复杂信息系统,移动操作系统只能尽量减少漏洞,却无法彻底消除。安全漏洞测试通常采用模糊测试方式(Fuzzing测试),模糊测试是一种基于缺陷注入的自动软件测试技术。通过编写模糊测试工具向移动操作系统提供某种形式的输入并观察其响应来发现问题,这种输入可以是完全随机的或精心构造的。对被测移动操作系统出现的故障或异常进行监控,以确定由哪些测试数据引起的何种问题,同时,确定所发现的漏洞是否可重现,如果重现成功,则进一步判断该漏洞是否可被利用。目前,主要有两种类型的模糊测试方式:盲目模糊测试方式无需深入了解移动操作系统本身,通过完全随机方式发现问题;智能模糊测试方式是基于对移动操作系统的了解,有目的地编写模糊测试工具。编写有效的模糊测试工具需花费时间,但能对某些感兴趣的部分集中测试,故更加有效。
事实上,漏洞很难靠某一个单位或某几个人来发现,通常都是基于现有漏洞库形式。目前知名漏洞库有通用漏洞库(CVE)、美国国家漏洞数据库(NVD)和中国国家信息安全漏洞库(CNNVD)。CVE是MITRE公司提出的漏洞命名规范,已受到业界的广泛认可,成为最权威的漏洞命名标准之一。NVD、US-CERT公告、SANSTop20及其他诸多重要漏洞库和漏洞公告中均使用的是CVE漏洞名称,厂商及研究人员也普遍使用和引用CVE,是否兼容CVE已成为信息安全产品的基础要求。CVE凭借与黑客组织、软件厂商、安全公司等广泛的关系,真正成为他们之间沟通的桥梁。NVD是美国政府建立的漏洞数据库,采用CVE编号并和CVE一一对应。在CVE基础上扩充了CVE的属性项,包括受影响实体、漏洞类型、危害评级(参考CVSS得分)、参考网址等。NVD通过其规范的漏洞描述、漏洞评级和详细的漏洞参考信息等内容,称为国际权威的漏洞共享平台。CNNVD是中国信息安全测评中心为切实履行漏洞分析和风险评估的职能,负责建设运维的国家级信息安全漏洞库,为我国信息安全保障提供基础服务。
不同于其他安全问题,漏洞治理的关键在于发现和响应速度要快。作为移动操作系统开发商,在可能情况下建立自身漏洞众筹平台,在漏洞产生恶意后果之前及时弥补,采用补丁修复和安全加固两种形式来提高移动操作系统的安全性。
五、结语
开发和推广拥有自主知识产权的移动操作系统任重而道远,因为信息安全是移动操作系统发展面临的不可回避的问题。随着新型终端的出现、网络平台的变革和用户需求的提高,传统移动操作系统正面临越来越多的信息安全问题。新兴信息技术为移动操作系统造就新的发展机会,希望我国的公司、企业和科研院所能把握这个历史机会,以加强自身为基础,统筹移动互联网产业,构建共赢生态环境。
(原载于《保密科学技术》杂志2017年3月刊)