16004488
一、移动终端安全概述
随着移动通信技术和互联网技术的快速发展和融合,移动互联网发展迅速,移动智能终端在硬件、软件和带宽上得到显著增强。移动互联网的快速发展为新的移动应用的开发开辟了广泛的空,但也带来了新的安全风险。
移动互联网主要存在三大安全问题:移动智能终端安全、网络安全和应用安全。用户通过移动智能终端使用移动服务,并在移动设备中存储大量用户的个人信息。因此,需要保证移动业务的安全性,实现移动网络与移动智能终端之间的通信安全,保证用户个人信息的安全。因此,移动智能终端的安全性对整个移动互联网的安全性至关重要。简要介绍了移动终端面临的安全风险,重点介绍了Android和iOS平台的系统架构、安全机制、系统安全分析和安全防护措施。
二、终端安全风险
1.系统漏洞
与传统PC操作系统不同,移动智能终端操作系统明显碎片化。目前,安卓系统的发布和更新基本上是由各个终端厂商独立完成的。这使得其操作系统的安全性面临更加复杂的挑战,安全漏洞层出不穷。如Android平台签名漏洞、特权漏洞、挂马漏洞、静默安装/卸载漏洞、短信欺诈漏洞、后台消息发送漏洞、后台调用漏洞等。;I OS平台字符串漏洞、锁屏漏洞、充电器漏洞等。这些漏洞已经成为恶意软件攻击的主要目标,可能导致恶意软件的大规模传播,损害用户利益。
2.恶意软件
移动终端恶意软件是一种破坏性程序,与计算机恶意软件一样具有传染性和破坏性。移动终端上的恶意软件可能导致用户的移动终端崩溃、关机、删除数据、发送电子邮件、打电话和窃取隐私。根据恶意程序的行为,主要分为以下几类。
(1)恶意扣费:在用户不知情或未经授权的情况下,通过隐蔽执行、欺骗用户点击等手段,用户可以订阅各种收费服务或使用手机进行支付,给用户造成经济损失。
(2)隐私窃取:在用户不知情或未经授权的情况下获取与用户隐私相关的信息。
(3)远程控制:接受远程控制终端的指令,在用户不知情或未经授权的情况下进行相关操作。
(4)恶意传播:通过自动复制、感染、传递、下载等方式传播自身及其衍生产品或其他恶意代码。
(5)成本消耗:在用户不知情或未经授权的情况下,通过自动拨打电话、发送短信、彩信、电子邮件、频繁联网等方式,使用户的成本损失殆尽。
(6)系统损坏:通过感染、劫持、篡改、删除、终止进程等手段,使移动终端或其他非恶意软件和用户文件的部分或全部功能无法正常使用。,干扰、破坏或阻断移动通信网络、网络服务或其他合法业务的正常运行。
(7)欺骗欺诈:通过伪造、篡改、劫持短信、彩信、邮件、通讯录、通话记录、收藏夹、桌面等方式欺骗用户。
(8)流氓行为:不直接损害系统,不侵犯用户隐私和资费的恶意行为。
三、安卓平台的安全性
1.安卓系统架构
Android采用分层系统架构,官方发布的标准架构如图1所示。Android自下而上分为四个主要功能层,分别是Linux内核、库和Android运行时、应用框架和应用。
图1 Android系统架构
(1)Linux内核层
Android基于Linux操作系统内核,借助Linux内核服务实现硬件设备驱动、进程和内存管理、网络协议栈、电源管理、无线通信等核心系统功能。
Android内核增强了Linux内核,为移动计算增加了一些独特的功能。例如,低内存管理器LMK(低内存黑仔)、匿名共享内存(阿什曼)和轻量级进程间通信绑定机制。这些内核增强使得Android继承了Linux内核安全机制,同时进一步提高了内存管理和进程间通信的安全性。
(2)系统运行时层
Linux内核层之上的系统运行时层是应用框架层的支撑,为Android系统中的各个组件提供服务。系统运行时层由系统类库和Android运行时组成。大部分系统库都是用C/C++编写的,提供的功能都是开发者通过Android应用框架使用的。Android运行时包括核心库和Dalvik虚拟机。核心库提供了Java5 se API的大部分功能,并提供了Android的核心API,如android.os、android.os、android.media等。Dalvik虚拟机是基于Apache的Java虚拟机,经过改进以适应低内存、低处理器速度的移动设备环境。Dalvik虚拟机依托Linux内核,实现进程隔离和线程调度管理、安全和异常管理、垃圾收集等重要功能。
(3)应用框架层
应用框架层提供了开发Android应用所需的一系列类库,让开发者可以快速开发应用。
(4)应用层
Android平台的应用层包括与用户直接交互的各种应用,或者后台运行的Java语言编写的服务程序。比如短信、电话拨号、日历、游戏、地图等开发者开发的应用。
2.Android安全机制的构成
(1)进程沙箱
Android扩展了Linux内核安全模型的用户和权限机制,巧妙地将多用户操作系统的用户隔离机制移植到应用隔离中。在Linux中,一个用户标识(UID)标识一个给定的用户;在Android上,一个UID标识一个应用。安装应用程序时,为其分配指南。应用程序的UID在设备上的生命周期内保持不变。权限用于允许或限制应用程序访问设备资源。不同的应用属于不同的用户。因此,应用程序在各自独立的进程空中运行,不同uid的应用程序自然形成资源隔离,从而形成操作系统级的应用程序“沙箱”,如图2所示。
图2 Android应用的沙盒机制
(2)权限模型
Android要求用户在使用API时声明,这叫权限。这样,使用一些敏感的API可以在安装时给用户一个风险警告,用户可以决定是否安装。在Android Manifest.xml文件中声明设置。一些最常用的权限如下:
READ_CONTACTS:读取用户通讯录数据;
RECEIVE _短信:测试是否接收短信;
ACCESS _ rough _ LOCATION:通过基站或Wi-Fi获取位置信息;
ACCESS_FINE_LOCATION:通过GPS获取更精确的位置信息。
权限通过保护级别分为四个级别:正常、危险、签名和签名系统。不同的保护级别代表程序想使用这个权限时的认证方式,只要应用了正常权限就可以使用;危险权限必须在安装过程中经过用户确认后才能使用;签名权限可以防止应用程序弹出确认提示;signatureorsystem的权限要求开发人员的应用程序和系统使用相同的数字证书。
(3)系统分区和加载
Android设备分区包括系统分区、数据分区和SD卡分区。
①系统分区
系统分区通常加载为只读分区,包括操作系统内核、系统函数库、实时运行框架、应用框架和系统应用等。,这是在工厂由原始设备制造商植入的,外界无法改变。/system/app目录存储系统自己的应用app;/system/lib目录存储系统库文件;/system/framework目录存储。Android系统应用框架的jar文件。
②数据分区
数据分区用于存储各种用户数据和应用程序。一般需要对数据分区设置容量限制,防止黑客非法将数据写入数据分区或者创建非法文件恶意破坏数据分区。/Data/data目录存储所有APK程序数据,每个APK对应自己的数据目录,即/data/data目录中有一个与Package同名的目录,APK只能在这个目录中操作,不能访问其他APK目录;/data/app目录存储app由用户安装;packages.xml、packages.list、appWidgets.xml等文件存储在/data/system目录下,记录安装的软件和widget信息;/data/misc目录存储Wi-Fi帐户和VPN设置。
③SD分区
SD卡是外部设备,可以从其他电脑系统操作,不受Android系统控制。
(4)申请签名
Android操作系统的代码签名采用自签名机制,这是一种温和安全策略的体现,在一定程度上保证了软件的可追溯性和完整性保护。但是程序签名只是为了声明是哪个公司或者个人发布的程序。完全由用户决定是否信任该程序,而不需要权威的签名和审查。API根据功能分为几个不同的能力集,应用程序要明确声明使用的能力。安装应用程序时,会提示用户所使用的功能,并且用户会确认安装。
APK安装的验证过程如下:计算CERT.sf文件的哈希值;使用公钥(证书)验证CERT.rsa文件,并将结果与上面的CERT.sf的哈希值进行比较。如果相同,则表示CERT.sf文件未被篡改。CERT.sf文件包含MANIFEST中的哈希值。APK包中的MF文件,以及MANIFEST。MF包含APK其他文件的哈希值,因此可以从CERT.sf文件中获取其他文件的正确哈希值。最后,验证APK包中的其他文件是否列在清单中。MF和它们对应的哈希值是同一个值,从而判断APK包的完整性。
3.系统安全分析
(1)Linux内核安全性分析
Linux内核决定Android系统的性能,为Android系统提供核心系统服务,如安全、内存管理、进程管理、网络协议等。与其他操作系统相比,Android系统的安全缺陷并不明显,Android在标准Linux内核的基础上做了很多有益的扩展,如Ashmen机制、低内存黑仔机制等。Ashmem解决了POSIX Shmem释放共享内存的问题,而低内存黑仔实现了强制内存释放。这些内核增强在不同程度上大大提高了Android系统的安全性。
Linux内核的主要安全顾虑是硬件厂商提供的驱动和软件驱动。驱动运行在优先级最高的内核空中。如果任何漏洞被利用,黑客可以轻松获得Root权限,这直接威胁到系统的安全。Linux内核的驱动是模块化的,主要功能在模块中完成。万一功能被入侵者入侵,直接卸载这个驱动也是保证Linux内核安全的一种方式。
(2)系统库的安全性分析
Android系统库是应用框架的支撑,是应用框架层和Linux内核层之间的重要纽带,主要包括Surface Manager、多媒体库、SQLite、Open Gl|ES、Web Kit等。
Android提供了一些原生进程可以使用的原生库。从安全性的角度来说,原生库是用C/C++编写的,不具备类型安全性,比Java代码更容易出错。原生库代码缺乏安全性,其资源主要来源于移植库的一些过时且易受攻击的版本,如SQLite和Web Kit。使用本机代码是有风险的,因为它已经脱离了虚拟机提供的防御层。
(3)虚拟机安全性分析
Android的Dalvik虚拟机是Android中Java程序的运行基础。每一个Android应用程序在底层都对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下执行。
Dalvik安全在系统安全中起着关键作用,直接影响所有应用。那个。Dalvik中的dex文件是一个潜在的攻击点,因为它很可能被恶意篡改。的错误检查。安装应用程序和加载时将执行dex文件。将文件编入内存。当错误检查失败时,一些可显示的“断言”语句可以用来记录信息。但是,“断言”语句仅用于开发和测试,不能防止对文件的恶意更改。因为Dalvik的字节码不是Java类型安全的,所以也会给攻击者提供编译不安全代码、替换原始代码并转换成的机会。dex字节码,从而执行危险的字节码,导致应用程序崩溃或任意代码执行。
4.安卓应用安全分析
(1)应用权限分析
用户通常无法识别潜在的危险软件,并可能下载不安全的软件。目前,一些恶意软件可以通过访问互联网轻松读取存储在设备上的重要信息,如短信、通讯录、位置信息等。,并在没有用户通知的情况下访问或窃取私人信息。
虽然应用程序权限机制为系统和应用程序提供了一定程度的安全性,例如在清单文件中设置权限和签署应用程序,但它尽可能地为应用程序提供了安全性。然而,滥用权力机制仍然是一个不可避免的问题。
例如,共享的用户标识存在潜在的安全风险。一旦应用程序声明了一个共享的用户标识,每个共享该用户标识的应用程序在运行时都会被授予相同的权限集,并且它们可以相互访问资源。因此,攻击者有可能使用共享的用户标识进行恶意攻击。如果一个应用程序具有访问互联网的功能,另一个应用程序实现访问联系人列表的功能,并且如果这两个应用程序共享用户标识并在同一个进程中运行,它们都具有通过互联网读取联系人信息和传输数据的两个功能,那么攻击者可以使用这两个应用程序通过互联网轻松获取联系人信息。
(2)应用安装
安卓应用程序部署在设备上。apk文件。那个。apk文件是一个归档文件,包括。并且不包含源代码。包管理器为安装过程提供服务,并检查。apk。检查方法包括但不限于验证数字签名、共享用户ID的合法性、权限要求和验证。dex文件。而Android采用的是应用签名的形式,由开发者自签名,未经权威认证机构认证,无法验证开发者身份和的完整性。apk。
Android系统上设备的安装方式也直接影响到应用的安全性。有三种安装方式。apk文件,区别在于它们是直接与包管理器交互还是与安装包交互。第一种方式是通过Android的adb调试桥安装。安装过程由软件包管理器直接执行,无需任何用户交互,应用程序自动被授予正常级和危险级权限。由于缺乏用户交互,这种安装方式存在较高的安全风险。另外两种方法是从应用商店和。SD卡上的apk文件,直接与包管理器交互。
(3)数据库安全分析
目前,主流数据库已经采取了各种安全措施,包括用户认证、访问控制、数据加密存储和审计。Android使用开源的SQLite。
为了满足嵌入式系统对数据库本身的便利性,以及数据库的存储效率、访问速度、内存占用率等性能的要求,SQLite采用了与大型数据库不同的实现机制,但也带来了潜在的安全隐患。数据库没有用户管理、访问控制和授权机制。操作系统的任何合法用户都可以直接访问数据库文件,只要用户对这些文件具有读写权限。开源的SQLite数据库不提供加密机制,所以不提供数据级的机密性。Android系统在使用中很可能受到SQL注入的攻击。对于数据库查询,如果开发人员通过字符串连接构造SQL语句,就会发生SQL注入。
(4)软件更新安全性分析
Android系统软件更新是一种广泛使用的安全机制,可以及时改变系统的缺陷。一般是通过互联网在线更新完成的。经用户确认后,可以通过HTTP定期向服务器发送查询语句进行在线更新,也可以通过SD上的更新包进行升级。
在Android系统的在线升级软件更新模式下,更新文件分两步进行验证:第一步是在下载阶段使用设备的公钥进行验证;第二步,将代码映射到可执行文件中的辅助公钥作为修复工具进行验证。Android系统不会在没有密钥验证的情况下安装更新软件包,所以Android软件更新机制的设计是完善且安全的。
第四,iOS平台安全
1.操作系统平台系统架构
iOS操作系统的分层架构从上到下分为四层:Cocoa Touch层、媒体层、核心服务层和核心OS层。
低层框架提供i OS的基本服务和技术,高层框架建立在低层框架之上,提供更复杂的服务和技术,高层框架为低层结构提供面向对象的抽象。
Foundation和UIKit框架是应用程序编程中使用的两种主要框架,可以满足大多数应用程序的开发需求。
UIKit框架提供的一个类,用于创建基于触摸的用户界面。所有iOS应用都是基于UIKit的,没有这个框架,应用是无法交付的。UIKit为在屏幕上绘图、处理事件和创建通用用户界面及其元素提供了应用程序基础结构。UIKit还通过管理屏幕上显示的内容来组织应用程序。
基础框架为所有应用程序提供基本的系统服务。应用程序以及UIKit和其他框架都是建立在基础框架的基础设施上的。Foundation框架提供了许多基本的对象类和数据类型,这使得它成为应用程序开发的基础。它还制定了一些约定(如取消分配和其他任务),以使代码更加一致和可重用。
整个框架如图3所示。
图3操作系统体系结构
(1)可可触摸层
可可触摸层包含创建iOS应用程序的关键框架。这一层包含的框架定义了应用的外观,也提供了基本的应用基础和关键技术支持,如多任务、触摸输入、推送通知等多种高级系统服务。开发应用时,首先要研究这一层的技术,看技术是否能满足需求。
(2)媒体层
媒体层包括图形、声音和视频技术和框架,以实现应用中的多媒体体验。使用这一层技术可以更容易地构建美观和令人愉快的应用程序。
(3)核心服务层
核心服务层包含应用程序所需的基本系统服务。这些服务的核心是Core Foundation和Foundation Framework,它们定义了所有应用程序使用的基本类型。这一层还包含支持其他一些功能的独立技术,如位置、i Cloud、社交媒体和网络。
此外,核心服务还提供其他功能,如安全性、核心位置、SQLite和通讯簿。其中,Security用于处理认证密码的管理,根据安全性进行管理;核心位置用于处理全球定位系统定位;SQLite是一个轻量级数据库;通讯簿用于处理电话簿数据。
(4)核心操作系统层
核心OS层是用Free BSD和Mach重写的达尔文,是符合POSIX标准的开源Unix核心。这一层包含或提供了整个iOS的一些基本功能,如硬件驱动、内存管理、程序管理、线程管理(POSIX)、文件系统、网络(BSD Socket)、标准输入输出等。这些功能都会通过C语言的API来提供。另外,值得一提的是,这一层的色彩是最Unix的。如果有必要把在Unix上开发的程序移植到iOS上,大部分都会使用Core OS的API。
核心OS层的驱动程序还提供了硬件和系统框架之间的接口。然而,出于安全原因,只有有限的系统框架类可以访问内核和驱动程序。
2.iOS安全架构
如图4所示,i OS的安全架构包括三个部分:硬件层安全、操作系统层安全和应用层安全。
图4 i操作系统安全架构
(1)硬件层安全性
硬件加密:加密引擎嵌入硬件芯片,实现全磁盘加密、指纹加密、文件加密;
安全存储:实现UID、GID等硬件相关信息的安全存储,软件和固件无法直接读取。
(2)操作系统层安全性
系统完整性保护:验证启动过程每一步的签名组件,实现安全启动链;
安全飞地:提供数据保护密钥管理所需的加密算法,维护数据保护的完整性;
安全元素:服从电子支付的财务需求,服务Apple Pay;
触控ID:指纹传感系统,使安全使用设备更加方便。
(3)应用层安全
代码签名:验证代码完整性,跟踪开发者;
运行时进程安全:通过沙箱实现应用之间的垂直隔离,实现应用与OS之间的水平隔离,保护运行时进程安全;
应用扩展:通过提供扩展向其他应用提供功能;
应用组:实现同一个开发者账号拥有的应用和扩展的共享内容;
应用中的数据保护:为开发者提供数据保护API,提高应用安全性;
配件:仅限授权配件(如蓝牙、外接键盘等)。)可以访问该设备。
3.操作系统安全机制的构成
(1)代码签名
苹果公司需要所有开发者在他们的i OS应用中使用数字签名技术。此签名用于识别应用程序的开发人员,并确保应用程序在签名后不会被更改或损坏。要获得由操作系统开发的签名证书,您可以使用钥匙串访问工具中的证书助理创建证书签名请求。验证请求后,可以下载并安装证书。整个过程和塞班一模一样,只是提供开发证书的不是第三方而是苹果。
苹果开发者计划分为标准开发计划和企业开发计划。如果开发人员希望在应用商店中发布应用,他们可以加入操作系统开发人员标准计划。如果开发人员想要创建一个部署在公司中的应用程序,并且至少有500名员工,他可以加入i OS开发人员企业计划。
苹果为用户提供两种类型的证书:开发者证书,主要用户的原生测试;分发证书主要用于两种场景,即席和应用商店。其中Ad-hoc用于广泛测试和共享,仅限100台设备;应用商店用于发布应用。
(2)运行时的安全性
通过沙盒机制,将应用程序与其他应用程序和操作系统隔离开来,从而实现运行时进程安全。每个应用程序在安装时都被分配了一个独立的文件夹,应用程序和系统都不能直接访问彼此的资源。由于沙盒的限制,第三方杀毒加密软件无法访问其他应用和操作系统资源,只能保护软件自身的运行环境。因此,i OS上没有第三方安全产品。沙盒机制配合应用扩展技术,向外界提供有限的接口,实现应用间资源的安全共享。
运行时进程安全分为垂直隔离和水平隔离。
垂直隔离:应用程序不能访问彼此的文件,只能使用i OS提供的服务访问自己文件夹外的信息,以防止恶意应用程序收集或篡改存储在其他应用程序中的信息。
水平隔离:系统文件和资源与用户级应用屏蔽,整个OS分区为只读,无法安装内核模式的恶意软件。
(3)设备密码
设备密码用于保护,防止手机丢失后信息泄露。
(4)设备和程序控制
用户可以配置应用程序可以访问哪些信息。用户可以配置是否可以使用Safari浏览器、安全应用软件、摄像头和位置。如果这些信息被禁用,使用它们时会弹出错误消息。
(5)安全储存
iOS的安全存储主要包括三个部分。第一,iOS4 CDSA结构中提到的Apple File DL模块可以用来提供文件加密;其次,邮件等设备数据的加密;最后,通过启用设备密码来生成和保护密钥。
IOS可以通过iTune对备份到PC的数据进行加密。
(6)远程销毁
远程数据销毁可以在手机丢失后远程清除终端上的数据进行远程数据销毁。
(7)局部破坏
本地数据销毁,比如密码输入错误超过10次,所有数据都会被清除。
(8)安全的网络通信
它支持VPN、SSL/TLS、RSA Secure ID(动态密码)和CRYPTOCard(一种身份验证机制)。
(9)运行时保护
流程隔离。在i OS中,每个程序在空之间都有自己的虚拟地址。
(10)文件访问控制
在iOS中,应用程序及其数据驻留在安全的地方,其他应用程序无法访问。应用程序安装后,系统通过计算获得一个标识符,然后基于应用程序的根目录和这个标识符构造一个指向应用程序目录的路径。
将应用程序安装到操作系统上后,在其目录结构中:
①根目录可以通过NSHome Directory()访问;
②Documents目录可用于文件的写入和保存,一般通过NSSearch Path for directory in domain获得;
③library cache是永久保存的,主要是为了应用程序效率而设计的,但这样的空是所有应用程序共享的,可能会被系统释放;
(4)④tem目录可以写入程序运行时需要的一些数据,程序退出后写入其中的数据会被清除。可以通过ns string * ns temporary directory(void)方法获得。
⑤文件的一些主要操作可以通过文件管理来操作。
(11)提供加密服务
I OS支持AES、RC4、3DES等加密算法。同时,为了提高效率,它支持AES和SHA1硬件引擎。
(12)数字版权管理
苹果的版权保护采用了具有自主知识产权的公平竞争DRM技术,具有以下特点:
(1)禁止未经授权的复制;
②单账号同步授权设备5台许可。
1.《移动终端 移动终端安全》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《移动终端 移动终端安全》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/993211.html