移动终端安全概览

这应该是我最近更新的关于安全比较宽泛的领域知识的最后一篇,后续还是先继续把我的ATF的翻译搞完,深耕一下技术点,花里胡哨的书暂时先不看了。

本文的内容来自:《移动互联网安全》第七章

虽然我现在做的是底层安全的事情,但是对整个产品的安全也需求进行一个了解,万一是相关领域以后会涉及到,同时也打开一些自己的眼界的。最后是这种类型的书也挺少的。

不啰嗦了开整。

1、前言

移动终端是移动互联网与用户体验连接最为紧密的环节。随着移动通信技术的发展,移动终端发生了巨大的变化,朝着智能化的方向不断迈进。

伴随着终端智能化和网络宽带化的发展趋势,移动终端的功能已经从单一的语音服务向多样化的多媒体服务演进,移动互联网业务呈现出丰富多彩的发展态势。

与此同时,移动终端作为移动互联网最主要的载体之一,也越来越多地涉及商业秘密和个人隐私等敏感信息,面临着严峻的安全挑战,可能成为制约移动互联网发展的重要瓶颈。

因此,解决移动终端的安全问题就势在必行。本章将介绍移动终端所搭载的操作系统的技术架构及其采用的安全机制,并对移动终端面临的安全风险进行分析,探讨相关的防护措施。

(提起终端不只是说的手机,像平板、VR、电视、智能穿戴、智慧家居都是终端设备。)

这些东西保存的涉及到个人隐私的东西都算是我们很重要的财产。

2、移动终端

关于这个部分,有兴趣的可以去看一下书,我就不展开了,主要就是介绍了终端有什么、发展历史、操作系统等相关的发展史记。直接进入安全。

3、Android系统安全

移动终端我们肯定知道最火的就是Android和IOS。这里就只介绍一些Android,关于更多地内容大家可以看原文。下面开始:

1、什么是Android

Android是基于Linux内核的操作系统和软件平台,它采用了软件堆层(Software Stack,又名软件叠层)的架构,底层以Linux内核为基础,只提供基本功能,其他的应用软件则由各公司自行开发,以Java作为主要的编程语言。

另外,为了推广这项技术,谷歌公司和其他几十家手机企业建立了开放移动终端联盟(Open Handset Alliance)。2008年10月,第一部Android手机问世,随后迅速扩展到平板计算机、电视及数码相机等领域。本节将对An-droid系统的体系结构和安全机制做详细介绍。

2、Android体系结构

Android的系统结构与其他操作系统一样,采用分层的架构。Android分为4层,自底向上分别为:Linux内核层、系统运行库、应用程序框架层、应用程序层。

1. Linux内核层

Android系统运行于Linux内核层之上,诸如安全性、驱动模型、内存管理、进程管理、网络协议栈等核心服务都依赖于Linux 2.6内核。Linux内核是硬件和软件堆栈之间的硬件抽象层,这一层主要实现硬件的驱动,例如,Wi-Fi驱动、电源驱动和显示驱动。

2.系统运行库

(1)Android运行库

Android系统包含一个核心库,它向开发者提供Java编程语言核心库的大部分功能函数,每一个Android应用程序都在自己的进程中运行,独立拥有一个Dalvik虚拟机实例。

Dalvik通过同时高效运行多个虚拟机来实现。Dalvik虚拟机执行扩展名为dex的Dalvik可执行文件,该执行文件针对最小内存使用进行了优化。这一虚拟机基于寄存器,所有的类经由Java编译器编译,然后通过SDK的DX工具转化成.dex格式由虚拟机执行。

(2)系统C库

Android程序库包含一个被Android系统中各种不同组件所使用的C/C++库,该库通过Android应用程序框架为开发者提供服务。这一层紧贴应用程序的软件组件服务,是应用程序框架支撑。系统库为平台提供的功能如下。

  • 1)Surface Manager,当同时运行多个程序时,管理显示与操作之间的互动,并为多个程序提供2D与3D图层的无缝融合。

  • 2)Media Framework,即多媒体库,基于PacketVideo OpenCore,这一函数库支持系统实现音频的录放,并且可以使用各种流行的音频和视频格式。

  • 3)OpenGL ES,是一个3D绘图函数库,该库可以用软件方式或是硬件加速方式来执行。

  • 4)WebKit,是最新的Web浏览器引擎,主要适用于支持Android浏览器和一个可嵌入的Web视图。

  • 5)SQLite,对所有应用程序都可用,是一款功能强大的轻量级关系型数据库引擎,为应用程序提供数据的存储和管理。

  • 6)SGL,是Android系统内置的2D绘图引擎,向用户提供实现2D绘图的技术支持。

  • 7)SSL,位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。

  • 8)Libc,是标准C函数库,专用于嵌入式设备。

  • 9)Free Type,提供位图和向量字体的显示。

3.应用程序框架层

在Android平台框架中,应用程序框架层位于第二层。它基于系统运行库,同时也是应用软件开发的基础,开发过程中开发人员主要是与应用程序框架层进行接触,应用程序框架层主要包括以下几部分。

  • 1)可拓展的视图系统(View System):在应用程序中用于构建包括列表、可嵌入的Web浏览器、文本框、按钮等组件。

  • 2)资源管理器(Resource Manager):主要向应用程序提供非代码资源的访问,如本地图片、字符串、管理权限声明、布局文件(Layout Files)等。

  • 3)通知管理器(Notification Manager):支持应用程序在状态栏显示提示或通知的信息。

  • 4)活动类管理器(Activity Manager):用来控制应用程序的生命周期,并向用户提供常用的导航回退功能。

  • 5)位置管理器(Location Manager):用于提供定位服务。

  • 6)电话管理器(Telephone Manager):向用户提供移动设备的基本功能,如发送信息、拨打电话等。

  • 7)包管理器(Package Manager):Android系统上的第三方应用程序管理器。

  • 8)窗口管理器(Window Manager):用来管理系统上所有应用程序的窗口。

  • 9)内容提供器(Content Provider):用于应用程序之间实现数据的互存互取。

4.应用程序层

Android平台(系统)架构的顶层就是应用程序层,包括除了随操作系统一起发布的Email客户端、地图、浏览器、短消息、日历、联系人等核心应用程序外,还有大量的第三方应用程序,该层所有的程序都是用Java语言编写的。

3、Android系统的安全机制

在Android系统的安全机制中,最重要的设计是第三方应用程序在默认情况下,没有权限对其他应用程序、操作系统和用户执行有害的操作。

这样的安全机制主要体现在对系统中的文件进行读写、删除、更改等操作时,不同的应用程序具有不同的操作等级。具体采用的安全机制如下。

(1)进程保护

程序只能待在自己的进程空间,与其他进程完全隔离,从而实现进程之间互不干扰。

在同一个进程内部可以任意切换到活动(Activity),但在不同的进程中,例如,A进程中的当前活动启动B进程中的某个活动,系统会报出异常,原因是触发了进程保护机制。

(2)权限模型

Android本身是一个权限分立的操作系统,每个应用程序都以唯一的系统识别身份(如Linux用户ID或群组ID)进行运行。

系统的各部分也分别使用各自独立的识别方式。Android要求在使用API时需要进行权限声明。

因此,使用一些敏感的API时,系统会对用户进行风险提示,由用户选择是否安装。权限声明是在AndroidManifest. xml文件中进行设置的,主要包含以下4种模式。

  • 1)Context. MODE_PRIVATE:仅能被创建的应用程序访问。
  • 2)Context. MODE_APPEN:检测存在的文件,并在文件后追加内容。
  • 3)Context. MODE_READABLE:当前文件可以被其他应用程序读取。
  • 4)Context. MODE_WRITABLE:当前文件可以被其他应用程序写入。

如果希望当前文件能够被其他应用读和写,可以写成OpenFileOutput(“xxx. txt”,Content.MODE_READABLE+Content. MODE_WRITEABLE)的形式。同时,权限声明通过Protected Level分为4个等级。

  • 1)Normal:只要申请就可以使用。
  • 2)Dangerous:获得用户的确认才可以使用,是最常用的等级。
  • 3)Signature:可以让应用程序不弹出确认提示。
  • 4)SignatureorSystem:需要第三方应用软件和系统使用同一个数字证书,即开发应用程序时,需要获得平台签名。

(3)签名机制

Android系统通过签名机制来实现系统保护。Android系统上的应用软件都需要进行签名,通过签名可以限制对程序的部分修改,确保改变的来源是相同的。

在软件安装过程中,系统会提取证书进行认证,获取签名的算法信息,与之前的应用程序进行比对,判断应用软件是否匹配。

4、Android系统的安全性分析

Android系统所面临的安全威胁的种类是多种多样的,具体而言主要有以下几种。

1.开源系统所带来的风险

Android系统采用了较为激进的开源型系统软件开发模式,所有用户都可以通过应用商店下载应用程序,除了官方应用商店之外还有其他的第三方应用商店可供下载,而且用户可以安装官方应用商店当中没有的应用软件。虽然应用软件上传到应用商店之后,都会强制进行安全检查,但某些应用软件市场没有严格执行检查措施,导致一些应用程序没有经过应用市场审核就可以下载安装,而且一些程序还可以通过计算机软件复制到手机中进行安装运行。Android系统这种过于开放的安装模式在丰富了系统功能的同时,也造成了恶意代码的广泛传播。恶意代码的开发者可以通过各种渠道进入手机,通过应用商店合法地下载应用软件,然后植入恶意代码,重新打包之后再次发布,这会造成伪装的应用程序和合法的原生程序具有相同的数字签名,虽然国内的手机市场和相关论坛都有相应的检测办法,但是Android系统的安全措施还是过于简单。根据360公司的统计数据显示,国内的设备感染恶意程序的发生概率为50%以上。

2.权限的许可方法问题

在Android系统的安全模式当中,虽然应用程序需要获取的权限在安装过程中已经向用户进行了说明,并且安装之后也无法改变。在程序的安装过程中,相关的权限列表是可以被用户获取的,并且用户可以判断这些权限是否是满足软件的正常使用所必需的。但是,如果出现一个软件所要求的权限过多的情况,用户还是无法直接选择不安装或者将该程序标记为可疑。没有机制可以保证系统能够完全规避那些不受控制的安装源头。如果恶意代码的防范机制没有有效运行,仍然会有软件出现超出常规的可疑操作。恶意代码的防范机制依赖于用户的判断,如果用户没有这种判断能力,则防范机制无法发挥作用,上述恶意代码防范机制就显得不够合理,需要进行改进。大多数普通用户是应用程序的使用者而不是开发者,如果他们不了解程序的运行机制,就无法对其安全性进行判断,而且普通用户也完全没有必要去了解程序的运行机制。恶意代码的开发者如果发现某一特定的应用软件并根据提示进行捆绑,之后很多恶意代码就会自动地转入用户的手机当中,如此一来恶意代码的开发者就可以非常轻松地获取传播路径,并通过代码的不断更新获取更多的权限。由于很多用户信任某些特定的应用软件,没有防范意识,这就会造成恶意程序更容易入侵手机系统。

3.操作系统漏洞

任何复杂的软件系统都可能存在漏洞,Android系统也有自身的缺陷和漏洞,例如,Android系统利用黑箱来处理相互孤立的程序,恶意程序可以在各自独立的黑箱当中运行,移动设备无法给予用户特定的权限。如果需要获取Android系统的控制权限,就必须获取root权限,这就会加重不安全性。恶意程序还可以运用漏洞所在的黑箱,获取系统的root权限。如果用户基于其他目的而获取root权限,恶意代码就获得了可以随意入侵的通道。同时,如果想对手机进行root,则必须利用系统漏洞,这也就造成了更多的开发者想要获取系统漏洞,使系统漏洞成为一种资源,同时开发者也不希望当前已知的系统漏洞被堵上。恶意代码通过漏洞获取root权限之后就可以在系统中不受控制地运行,随意修改用户的程序文件,对用户系统造成非常大的安全风险。

4.利用软件漏洞进行攻击

一些应用程序本身存在漏洞,应用软件的漏洞也会受到攻击,恶意代码能够通过应用软件本身的漏洞来攻击手机。浏览器是最容易受到攻击的应用软件之一,本身包含了大量可被攻击的漏洞代码。与此同时,浏览器又是系统不可缺少的组成部分,用户的使用频次也较多,因此更具危险性。同时,由于修复浏览器漏洞的难度较大,而且浏览器的版本和固件的版本又是相同的,所以很难进行升级换代。大量的Android用户为了让系统运行顺畅或为了获得新的用户体验,而不断进行刷机。市场上也有很多定制的优化版本,如果恶意代码被嵌入到ROM当中将会更加隐蔽,恶意代码也将获得更强大的破坏力。根据安全软件公司的统计数据显示,内嵌式的恶意代码大约占到了被感染用户的10%。

4、移动终端安全防护

在实际中,由于移动终端和移动App涉及用户的个人隐私数据和资金安全,所以随时都可能面临被攻击窃密的安全威胁,如何保障移动终端和个人账户的安全就成为首要考虑的事情。移动终端作为用户使用移动互联网的直接工具和所有移动应用程序的运行平台,它的安全与否直接关系到移动互联网的正常运行,所以必须在这一最基础的平台上构建安全机制并提供安全防护,才能有效地应对各种安全威胁。

本节将首先介绍移动终端用户面临的安全威胁,然后对移动终端所采取的主动防御措施进行分析和探讨,最后对安全容器这一辅助的安全框架做简要介绍。

1、移动终端用户面临的信息安全威胁

首先,相对于安全研究比较深入的计算机而言,移动终端安全属于计算机安全范畴的一个子集。其次,移动终端安全还有其特殊性,主要源于两个方面:第一是便携性;第二是具有多种无线接口和关联业务。便携性导致移动终端很容易丢失,只要移动终端被他人拿到,无论有多少安全机制,最终都可能被攻克并取得使用权限。而多种无线接口和关联业务增加了移动终端所面对的安全威胁,相关安全问题也是移动终端所特有的。

移动终端所面对的安全威胁主要有以下几个。

1.丢失或被盗

2.非授权接入

3.恶意软件

4.垃圾信息

5.空中接口窃听

6.SIM卡复制

7.运营商保存用户数据

8.个人隐私泄露

2、移动终端的安全防护措施

移动终端安全防护主要包含5个方面,分别是终端硬件安全、操作系统安全、安全防护软件、通信接口安全和用户安全。其中,通信接口安全和用户安全的需求也涉及操作系统和应用软件部分。接下来将对这几个方面采取的安全防护措施进行介绍。

1.终端硬件安全

移动终端的硬件安全包含几个层面的安全,首先是物理器件、芯片的安全性。目前,通过使用微探针、高倍光学及射电显微镜等物理设备可以获得硬件信息和数据,并对移动终端硬件发起攻击。所以,为了保证信息安全,首先要从硬件角度设计芯片,使其具有抗物理攻击的能力。另外,移动终端芯片的调试接口应当在出厂时被禁用。某些特殊的应用场景,对移动终端会有较高的安全性要求,例如,移动支付、移动商务和数字版权。需要在基础性安全防护之上,进一步增强移动终端的安全性,主要措施可分为以下3种。

  • (1)安全启动功能基于硬件的安全启动(Secure Boot)功能可以保护移动终端软件系统的完整性。在移动终端系统启动的过程中,如果发现系统镜像被修改,那么就必须终止启动。
  • (2)可信执行环境可信计算是针对目前计算系统不能从根本上解决安全问题而提出的。通过在计算系统中集成专用硬件模块(TPM),建立信任锚点,利用密码机制构建信任链,搭建可信赖的计算环境,可以从根本上解决计算安全问题。
  • (3)可信区域技术可信区域技术(Trust Zone)是将ARM处理器进行扩展,增加相应的安全指令、安全配置逻辑,设立有别于核心态和用户态的安全态。移动终端系统软件可以利用这一扩展提供安全支持。

2.操作系统安全

操作系统是移动终端应用软件运行的基础,因此保障移动终端操作系统的安全是保障移动终端信息安全的必要条件。移动终端应该具备对系统程序进行一致性检测的能力,如果系统程序被非授权修改,那么在启动过程中就能够被检测出来。

在移动终端操作系统中部署的安全防护一般可以分为主动防护(御)和被动防护。移动终端安装的杀毒软件就是一种被动防护技术,但是病毒的发现永远滞后于病毒的查杀,不能进行主动防护,而且移动终端的安全防护能力依赖于安全防护软件厂商的特征库更新,基于特征码扫描查杀的方式不能起到实时防护作用。

移动终端是一个资源受限的计算系统,同时又是敏感信息集中的个人终端,在处理能力和信息保护需求上处于“不对称”状态,需要采取主动防护。移动终端上基于程序行为的自主分析判断技术,可以被称为主动防护安全技术,是目前移动终端操作系统中被大量应用的一种安全防护技术。

主动防御不以病毒的特征库作为判断病毒的依据,而是从原始的病毒定义出发,直接将程序的行为作为判定病毒的依据。主动防御是一种新的对抗攻击技术,其优点主要有3个:

  • 一是可以主动防御未知攻击,从根本上解决防御落后于攻击的难题;
  • 二是能够自我学习,通过特征库的自我记录与更新,可以使系统的安全层级得到动态提升;
  • 三是主动防御能够对系统实行固定周期甚至是实时的监控,这样能快速响应检测到的攻击。

主动防御技术主要包括入侵检测技术、入侵预测技术、入侵响应技术、入侵跟踪技术、蜜罐技术、取证技术、攻击吸收和转移技术。其中,入侵检测技术是其他所有技术的基础。

3.安全防护软件

对于移动终端,比较有效的安全防护措施就是安装安全防护软件。由于移动终端的种类繁多,所以涉及的安全防护软件也多种多样.

4.通信接口安全

5.用户安全

3、安全容器

安全容器是用于提供额外安全层的。通常的安全容器是一个框架,在构建应用软件时使用。这些应用软件要么提供有用的安全替代功能,而不是移动操作系统提供的功能,要么提供操作系统所能提供的功能以外的安全功能。不同的容器有不同的功能,但这些容器都有共同的选项,就是交替“non-sniffable”移动键盘、应用软件代码的反调试/反逆向工程以及改进的加密功能。

提供这些功能的一个目标是,让应用软件开发人员在设计并构建应用软件时不会感到不安全。例如,把敏感数据存储在拥有安全容器的设备上会使开发人员感到安心,但是如果只使用移动操作系统提供的功能来进行存储的话,他们往往会感到不安。

这看起来似乎有一定的价值,但是应用软件开发人员要确实了解容器能够提供什么,以及当受到一个实力强悍的攻击者发起攻击时,这些安全措施又是如何退化的,这很重要,需要时刻注意。接下来,本节将以Android系统的安全容器为例对安全容器做简要介绍。

1.安全容器总体框架

安全容器是Android系统上的一个应用程序,它可以使第三方应用程序免安装运行在系统中,且像运行在真实系统中一样。安全容器通过代理第三方应用程序的通信过程,与中继服务器建立安全连接,保护应用程序的通信数据免遭攻击。

此外,应用程序在安装到安全容器中的时候,用户还可以配置优化策略,并将这些策略存储到数据存储模块,使应用程序在运行时可以选择是否与中继服务器建立安全连接以及与哪个中继服务器建立安全连接,从而降低Android系统和中继服务器的性能损耗。

安全容器的功能主要可以分为应用程序插件化和搭建安全信道两部分。安全容器的应用程序插件化部分的功能是使Android应用程序免安装运行在里面,而搭建安全信道部分主要负责解决安全容器如何在应用程序与应用服务器之间建立安全信道,并使应用程序的移动通信可以安全进行。

2.应用程序插件化

在Android系统中,安全容器是一个Android应用程序,它与其他应用程序一样运行在Android系统的最上层“应用程序层”。而安全容器与其他应用程序的不同之处在于,安全容器使用应用程序插件化技术,可以使其他应用程序免安装运行在里面,就像运行在真实系统中一样,而且不用修改任何源代码。

小结

对于不涉及的,和较为远的领域安全就没有详细展示,具体的内容都在书里面可以查看到,感谢这些优秀前辈写的书。

后续空了还是这本书还是值得都学习一下。

参考内容:
《移动互联网安全》

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值