16004488
一、移動(dòng)終端安全概述
隨著移動(dòng)通信技術(shù)和互聯(lián)網(wǎng)技術(shù)的快速發(fā)展和融合,移動(dòng)互聯(lián)網(wǎng)發(fā)展迅速,移動(dòng)智能終端在硬件、軟件和帶寬上得到顯著增強(qiáng)。移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展為新的移動(dòng)應(yīng)用的開(kāi)發(fā)開(kāi)辟了廣泛的空,但也帶來(lái)了新的安全風(fēng)險(xiǎn)。
移動(dòng)互聯(lián)網(wǎng)主要存在三大安全問(wèn)題:移動(dòng)智能終端安全、網(wǎng)絡(luò)安全和應(yīng)用安全。用戶通過(guò)移動(dòng)智能終端使用移動(dòng)服務(wù),并在移動(dòng)設(shè)備中存儲(chǔ)大量用戶的個(gè)人信息。因此,需要保證移動(dòng)業(yè)務(wù)的安全性,實(shí)現(xiàn)移動(dòng)網(wǎng)絡(luò)與移動(dòng)智能終端之間的通信安全,保證用戶個(gè)人信息的安全。因此,移動(dòng)智能終端的安全性對(duì)整個(gè)移動(dòng)互聯(lián)網(wǎng)的安全性至關(guān)重要。簡(jiǎn)要介紹了移動(dòng)終端面臨的安全風(fēng)險(xiǎn),重點(diǎn)介紹了Android和iOS平臺(tái)的系統(tǒng)架構(gòu)、安全機(jī)制、系統(tǒng)安全分析和安全防護(hù)措施。
二、終端安全風(fēng)險(xiǎn)
1.系統(tǒng)漏洞
與傳統(tǒng)PC操作系統(tǒng)不同,移動(dòng)智能終端操作系統(tǒng)明顯碎片化。目前,安卓系統(tǒng)的發(fā)布和更新基本上是由各個(gè)終端廠商獨(dú)立完成的。這使得其操作系統(tǒng)的安全性面臨更加復(fù)雜的挑戰(zhàn),安全漏洞層出不窮。如Android平臺(tái)簽名漏洞、特權(quán)漏洞、掛馬漏洞、靜默安裝/卸載漏洞、短信欺詐漏洞、后臺(tái)消息發(fā)送漏洞、后臺(tái)調(diào)用漏洞等。;I OS平臺(tái)字符串漏洞、鎖屏漏洞、充電器漏洞等。這些漏洞已經(jīng)成為惡意軟件攻擊的主要目標(biāo),可能導(dǎo)致惡意軟件的大規(guī)模傳播,損害用戶利益。
2.惡意軟件
移動(dòng)終端惡意軟件是一種破壞性程序,與計(jì)算機(jī)惡意軟件一樣具有傳染性和破壞性。移動(dòng)終端上的惡意軟件可能導(dǎo)致用戶的移動(dòng)終端崩潰、關(guān)機(jī)、刪除數(shù)據(jù)、發(fā)送電子郵件、打電話和竊取隱私。根據(jù)惡意程序的行為,主要分為以下幾類。
(1)惡意扣費(fèi):在用戶不知情或未經(jīng)授權(quán)的情況下,通過(guò)隱蔽執(zhí)行、欺騙用戶點(diǎn)擊等手段,用戶可以訂閱各種收費(fèi)服務(wù)或使用手機(jī)進(jìn)行支付,給用戶造成經(jīng)濟(jì)損失。
(2)隱私竊取:在用戶不知情或未經(jīng)授權(quán)的情況下獲取與用戶隱私相關(guān)的信息。
(3)遠(yuǎn)程控制:接受遠(yuǎn)程控制終端的指令,在用戶不知情或未經(jīng)授權(quán)的情況下進(jìn)行相關(guān)操作。
(4)惡意傳播:通過(guò)自動(dòng)復(fù)制、感染、傳遞、下載等方式傳播自身及其衍生產(chǎn)品或其他惡意代碼。
(5)成本消耗:在用戶不知情或未經(jīng)授權(quán)的情況下,通過(guò)自動(dòng)撥打電話、發(fā)送短信、彩信、電子郵件、頻繁聯(lián)網(wǎng)等方式,使用戶的成本損失殆盡。
(6)系統(tǒng)損壞:通過(guò)感染、劫持、篡改、刪除、終止進(jìn)程等手段,使移動(dòng)終端或其他非惡意軟件和用戶文件的部分或全部功能無(wú)法正常使用。,干擾、破壞或阻斷移動(dòng)通信網(wǎng)絡(luò)、網(wǎng)絡(luò)服務(wù)或其他合法業(yè)務(wù)的正常運(yùn)行。
(7)欺騙欺詐:通過(guò)偽造、篡改、劫持短信、彩信、郵件、通訊錄、通話記錄、收藏夾、桌面等方式欺騙用戶。
(8)流氓行為:不直接損害系統(tǒng),不侵犯用戶隱私和資費(fèi)的惡意行為。
三、安卓平臺(tái)的安全性
1.安卓系統(tǒng)架構(gòu)
Android采用分層系統(tǒng)架構(gòu),官方發(fā)布的標(biāo)準(zhǔn)架構(gòu)如圖1所示。Android自下而上分為四個(gè)主要功能層,分別是Linux內(nèi)核、庫(kù)和Android運(yùn)行時(shí)、應(yīng)用框架和應(yīng)用。
圖1 Android系統(tǒng)架構(gòu)
(1)Linux內(nèi)核層
Android基于Linux操作系統(tǒng)內(nèi)核,借助Linux內(nèi)核服務(wù)實(shí)現(xiàn)硬件設(shè)備驅(qū)動(dòng)、進(jìn)程和內(nèi)存管理、網(wǎng)絡(luò)協(xié)議棧、電源管理、無(wú)線通信等核心系統(tǒng)功能。
Android內(nèi)核增強(qiáng)了Linux內(nèi)核,為移動(dòng)計(jì)算增加了一些獨(dú)特的功能。例如,低內(nèi)存管理器LMK(低內(nèi)存黑仔)、匿名共享內(nèi)存(阿什曼)和輕量級(jí)進(jìn)程間通信綁定機(jī)制。這些內(nèi)核增強(qiáng)使得Android繼承了Linux內(nèi)核安全機(jī)制,同時(shí)進(jìn)一步提高了內(nèi)存管理和進(jìn)程間通信的安全性。
(2)系統(tǒng)運(yùn)行時(shí)層
Linux內(nèi)核層之上的系統(tǒng)運(yùn)行時(shí)層是應(yīng)用框架層的支撐,為Android系統(tǒng)中的各個(gè)組件提供服務(wù)。系統(tǒng)運(yùn)行時(shí)層由系統(tǒng)類庫(kù)和Android運(yùn)行時(shí)組成。大部分系統(tǒng)庫(kù)都是用C/C++編寫的,提供的功能都是開(kāi)發(fā)者通過(guò)Android應(yīng)用框架使用的。Android運(yùn)行時(shí)包括核心庫(kù)和Dalvik虛擬機(jī)。核心庫(kù)提供了Java5 se API的大部分功能,并提供了Android的核心API,如android.os、android.os、android.media等。Dalvik虛擬機(jī)是基于Apache的Java虛擬機(jī),經(jīng)過(guò)改進(jìn)以適應(yīng)低內(nèi)存、低處理器速度的移動(dòng)設(shè)備環(huán)境。Dalvik虛擬機(jī)依托Linux內(nèi)核,實(shí)現(xiàn)進(jìn)程隔離和線程調(diào)度管理、安全和異常管理、垃圾收集等重要功能。
(3)應(yīng)用框架層
應(yīng)用框架層提供了開(kāi)發(fā)Android應(yīng)用所需的一系列類庫(kù),讓開(kāi)發(fā)者可以快速開(kāi)發(fā)應(yīng)用。
(4)應(yīng)用層
Android平臺(tái)的應(yīng)用層包括與用戶直接交互的各種應(yīng)用,或者后臺(tái)運(yùn)行的Java語(yǔ)言編寫的服務(wù)程序。比如短信、電話撥號(hào)、日歷、游戲、地圖等開(kāi)發(fā)者開(kāi)發(fā)的應(yīng)用。
2.Android安全機(jī)制的構(gòu)成
(1)進(jìn)程沙箱
Android擴(kuò)展了Linux內(nèi)核安全模型的用戶和權(quán)限機(jī)制,巧妙地將多用戶操作系統(tǒng)的用戶隔離機(jī)制移植到應(yīng)用隔離中。在Linux中,一個(gè)用戶標(biāo)識(shí)(UID)標(biāo)識(shí)一個(gè)給定的用戶;在Android上,一個(gè)UID標(biāo)識(shí)一個(gè)應(yīng)用。安裝應(yīng)用程序時(shí),為其分配指南。應(yīng)用程序的UID在設(shè)備上的生命周期內(nèi)保持不變。權(quán)限用于允許或限制應(yīng)用程序訪問(wèn)設(shè)備資源。不同的應(yīng)用屬于不同的用戶。因此,應(yīng)用程序在各自獨(dú)立的進(jìn)程空中運(yùn)行,不同uid的應(yīng)用程序自然形成資源隔離,從而形成操作系統(tǒng)級(jí)的應(yīng)用程序“沙箱”,如圖2所示。
圖2 Android應(yīng)用的沙盒機(jī)制
(2)權(quán)限模型
Android要求用戶在使用API時(shí)聲明,這叫權(quán)限。這樣,使用一些敏感的API可以在安裝時(shí)給用戶一個(gè)風(fēng)險(xiǎn)警告,用戶可以決定是否安裝。在Android Manifest.xml文件中聲明設(shè)置。一些最常用的權(quán)限如下:
READ_CONTACTS:讀取用戶通訊錄數(shù)據(jù);
RECEIVE _短信:測(cè)試是否接收短信;
ACCESS _ rough _ LOCATION:通過(guò)基站或Wi-Fi獲取位置信息;
ACCESS_FINE_LOCATION:通過(guò)GPS獲取更精確的位置信息。
權(quán)限通過(guò)保護(hù)級(jí)別分為四個(gè)級(jí)別:正常、危險(xiǎn)、簽名和簽名系統(tǒng)。不同的保護(hù)級(jí)別代表程序想使用這個(gè)權(quán)限時(shí)的認(rèn)證方式,只要應(yīng)用了正常權(quán)限就可以使用;危險(xiǎn)權(quán)限必須在安裝過(guò)程中經(jīng)過(guò)用戶確認(rèn)后才能使用;簽名權(quán)限可以防止應(yīng)用程序彈出確認(rèn)提示;signatureorsystem的權(quán)限要求開(kāi)發(fā)人員的應(yīng)用程序和系統(tǒng)使用相同的數(shù)字證書。
(3)系統(tǒng)分區(qū)和加載
Android設(shè)備分區(qū)包括系統(tǒng)分區(qū)、數(shù)據(jù)分區(qū)和SD卡分區(qū)。
①系統(tǒng)分區(qū)
系統(tǒng)分區(qū)通常加載為只讀分區(qū),包括操作系統(tǒng)內(nèi)核、系統(tǒng)函數(shù)庫(kù)、實(shí)時(shí)運(yùn)行框架、應(yīng)用框架和系統(tǒng)應(yīng)用等。,這是在工廠由原始設(shè)備制造商植入的,外界無(wú)法改變。/system/app目錄存儲(chǔ)系統(tǒng)自己的應(yīng)用app;/system/lib目錄存儲(chǔ)系統(tǒng)庫(kù)文件;/system/framework目錄存儲(chǔ)。Android系統(tǒng)應(yīng)用框架的jar文件。
②數(shù)據(jù)分區(qū)
數(shù)據(jù)分區(qū)用于存儲(chǔ)各種用戶數(shù)據(jù)和應(yīng)用程序。一般需要對(duì)數(shù)據(jù)分區(qū)設(shè)置容量限制,防止黑客非法將數(shù)據(jù)寫入數(shù)據(jù)分區(qū)或者創(chuàng)建非法文件惡意破壞數(shù)據(jù)分區(qū)。/Data/data目錄存儲(chǔ)所有APK程序數(shù)據(jù),每個(gè)APK對(duì)應(yīng)自己的數(shù)據(jù)目錄,即/data/data目錄中有一個(gè)與Package同名的目錄,APK只能在這個(gè)目錄中操作,不能訪問(wèn)其他APK目錄;/data/app目錄存儲(chǔ)app由用戶安裝;packages.xml、packages.list、appWidgets.xml等文件存儲(chǔ)在/data/system目錄下,記錄安裝的軟件和widget信息;/data/misc目錄存儲(chǔ)Wi-Fi帳戶和VPN設(shè)置。
③SD分區(qū)
SD卡是外部設(shè)備,可以從其他電腦系統(tǒng)操作,不受Android系統(tǒng)控制。
(4)申請(qǐng)簽名
Android操作系統(tǒng)的代碼簽名采用自簽名機(jī)制,這是一種溫和安全策略的體現(xiàn),在一定程度上保證了軟件的可追溯性和完整性保護(hù)。但是程序簽名只是為了聲明是哪個(gè)公司或者個(gè)人發(fā)布的程序。完全由用戶決定是否信任該程序,而不需要權(quán)威的簽名和審查。API根據(jù)功能分為幾個(gè)不同的能力集,應(yīng)用程序要明確聲明使用的能力。安裝應(yīng)用程序時(shí),會(huì)提示用戶所使用的功能,并且用戶會(huì)確認(rèn)安裝。
APK安裝的驗(yàn)證過(guò)程如下:計(jì)算CERT.sf文件的哈希值;使用公鑰(證書)驗(yàn)證CERT.rsa文件,并將結(jié)果與上面的CERT.sf的哈希值進(jìn)行比較。如果相同,則表示CERT.sf文件未被篡改。CERT.sf文件包含MANIFEST中的哈希值。APK包中的MF文件,以及MANIFEST。MF包含APK其他文件的哈希值,因此可以從CERT.sf文件中獲取其他文件的正確哈希值。最后,驗(yàn)證APK包中的其他文件是否列在清單中。MF和它們對(duì)應(yīng)的哈希值是同一個(gè)值,從而判斷APK包的完整性。
3.系統(tǒng)安全分析
(1)Linux內(nèi)核安全性分析
Linux內(nèi)核決定Android系統(tǒng)的性能,為Android系統(tǒng)提供核心系統(tǒng)服務(wù),如安全、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)協(xié)議等。與其他操作系統(tǒng)相比,Android系統(tǒng)的安全缺陷并不明顯,Android在標(biāo)準(zhǔn)Linux內(nèi)核的基礎(chǔ)上做了很多有益的擴(kuò)展,如Ashmen機(jī)制、低內(nèi)存黑仔機(jī)制等。Ashmem解決了POSIX Shmem釋放共享內(nèi)存的問(wèn)題,而低內(nèi)存黑仔實(shí)現(xiàn)了強(qiáng)制內(nèi)存釋放。這些內(nèi)核增強(qiáng)在不同程度上大大提高了Android系統(tǒng)的安全性。
Linux內(nèi)核的主要安全顧慮是硬件廠商提供的驅(qū)動(dòng)和軟件驅(qū)動(dòng)。驅(qū)動(dòng)運(yùn)行在優(yōu)先級(jí)最高的內(nèi)核空中。如果任何漏洞被利用,黑客可以輕松獲得Root權(quán)限,這直接威脅到系統(tǒng)的安全。Linux內(nèi)核的驅(qū)動(dòng)是模塊化的,主要功能在模塊中完成。萬(wàn)一功能被入侵者入侵,直接卸載這個(gè)驅(qū)動(dòng)也是保證Linux內(nèi)核安全的一種方式。
(2)系統(tǒng)庫(kù)的安全性分析
Android系統(tǒng)庫(kù)是應(yīng)用框架的支撐,是應(yīng)用框架層和Linux內(nèi)核層之間的重要紐帶,主要包括Surface Manager、多媒體庫(kù)、SQLite、Open Gl|ES、Web Kit等。
Android提供了一些原生進(jìn)程可以使用的原生庫(kù)。從安全性的角度來(lái)說(shuō),原生庫(kù)是用C/C++編寫的,不具備類型安全性,比Java代碼更容易出錯(cuò)。原生庫(kù)代碼缺乏安全性,其資源主要來(lái)源于移植庫(kù)的一些過(guò)時(shí)且易受攻擊的版本,如SQLite和Web Kit。使用本機(jī)代碼是有風(fēng)險(xiǎn)的,因?yàn)樗呀?jīng)脫離了虛擬機(jī)提供的防御層。
(3)虛擬機(jī)安全性分析
Android的Dalvik虛擬機(jī)是Android中Java程序的運(yùn)行基礎(chǔ)。每一個(gè)Android應(yīng)用程序在底層都對(duì)應(yīng)一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例,其代碼在虛擬機(jī)的解釋下執(zhí)行。
Dalvik安全在系統(tǒng)安全中起著關(guān)鍵作用,直接影響所有應(yīng)用。那個(gè)。Dalvik中的dex文件是一個(gè)潛在的攻擊點(diǎn),因?yàn)樗芸赡鼙粣阂獯鄹摹5腻e(cuò)誤檢查。安裝應(yīng)用程序和加載時(shí)將執(zhí)行dex文件。將文件編入內(nèi)存。當(dāng)錯(cuò)誤檢查失敗時(shí),一些可顯示的“斷言”語(yǔ)句可以用來(lái)記錄信息。但是,“斷言”語(yǔ)句僅用于開(kāi)發(fā)和測(cè)試,不能防止對(duì)文件的惡意更改。因?yàn)镈alvik的字節(jié)碼不是Java類型安全的,所以也會(huì)給攻擊者提供編譯不安全代碼、替換原始代碼并轉(zhuǎn)換成的機(jī)會(huì)。dex字節(jié)碼,從而執(zhí)行危險(xiǎn)的字節(jié)碼,導(dǎo)致應(yīng)用程序崩潰或任意代碼執(zhí)行。
4.安卓應(yīng)用安全分析
(1)應(yīng)用權(quán)限分析
用戶通常無(wú)法識(shí)別潛在的危險(xiǎn)軟件,并可能下載不安全的軟件。目前,一些惡意軟件可以通過(guò)訪問(wèn)互聯(lián)網(wǎng)輕松讀取存儲(chǔ)在設(shè)備上的重要信息,如短信、通訊錄、位置信息等。,并在沒(méi)有用戶通知的情況下訪問(wèn)或竊取私人信息。
雖然應(yīng)用程序權(quán)限機(jī)制為系統(tǒng)和應(yīng)用程序提供了一定程度的安全性,例如在清單文件中設(shè)置權(quán)限和簽署應(yīng)用程序,但它盡可能地為應(yīng)用程序提供了安全性。然而,濫用權(quán)力機(jī)制仍然是一個(gè)不可避免的問(wèn)題。
例如,共享的用戶標(biāo)識(shí)存在潛在的安全風(fēng)險(xiǎn)。一旦應(yīng)用程序聲明了一個(gè)共享的用戶標(biāo)識(shí),每個(gè)共享該用戶標(biāo)識(shí)的應(yīng)用程序在運(yùn)行時(shí)都會(huì)被授予相同的權(quán)限集,并且它們可以相互訪問(wèn)資源。因此,攻擊者有可能使用共享的用戶標(biāo)識(shí)進(jìn)行惡意攻擊。如果一個(gè)應(yīng)用程序具有訪問(wèn)互聯(lián)網(wǎng)的功能,另一個(gè)應(yīng)用程序?qū)崿F(xiàn)訪問(wèn)聯(lián)系人列表的功能,并且如果這兩個(gè)應(yīng)用程序共享用戶標(biāo)識(shí)并在同一個(gè)進(jìn)程中運(yùn)行,它們都具有通過(guò)互聯(lián)網(wǎng)讀取聯(lián)系人信息和傳輸數(shù)據(jù)的兩個(gè)功能,那么攻擊者可以使用這兩個(gè)應(yīng)用程序通過(guò)互聯(lián)網(wǎng)輕松獲取聯(lián)系人信息。
(2)應(yīng)用安裝
安卓應(yīng)用程序部署在設(shè)備上。apk文件。那個(gè)。apk文件是一個(gè)歸檔文件,包括。并且不包含源代碼。包管理器為安裝過(guò)程提供服務(wù),并檢查。apk。檢查方法包括但不限于驗(yàn)證數(shù)字簽名、共享用戶ID的合法性、權(quán)限要求和驗(yàn)證。dex文件。而Android采用的是應(yīng)用簽名的形式,由開(kāi)發(fā)者自簽名,未經(jīng)權(quán)威認(rèn)證機(jī)構(gòu)認(rèn)證,無(wú)法驗(yàn)證開(kāi)發(fā)者身份和的完整性。apk。
Android系統(tǒng)上設(shè)備的安裝方式也直接影響到應(yīng)用的安全性。有三種安裝方式。apk文件,區(qū)別在于它們是直接與包管理器交互還是與安裝包交互。第一種方式是通過(guò)Android的adb調(diào)試橋安裝。安裝過(guò)程由軟件包管理器直接執(zhí)行,無(wú)需任何用戶交互,應(yīng)用程序自動(dòng)被授予正常級(jí)和危險(xiǎn)級(jí)權(quán)限。由于缺乏用戶交互,這種安裝方式存在較高的安全風(fēng)險(xiǎn)。另外兩種方法是從應(yīng)用商店和。SD卡上的apk文件,直接與包管理器交互。
(3)數(shù)據(jù)庫(kù)安全分析
目前,主流數(shù)據(jù)庫(kù)已經(jīng)采取了各種安全措施,包括用戶認(rèn)證、訪問(wèn)控制、數(shù)據(jù)加密存儲(chǔ)和審計(jì)。Android使用開(kāi)源的SQLite。
為了滿足嵌入式系統(tǒng)對(duì)數(shù)據(jù)庫(kù)本身的便利性,以及數(shù)據(jù)庫(kù)的存儲(chǔ)效率、訪問(wèn)速度、內(nèi)存占用率等性能的要求,SQLite采用了與大型數(shù)據(jù)庫(kù)不同的實(shí)現(xiàn)機(jī)制,但也帶來(lái)了潛在的安全隱患。數(shù)據(jù)庫(kù)沒(méi)有用戶管理、訪問(wèn)控制和授權(quán)機(jī)制。操作系統(tǒng)的任何合法用戶都可以直接訪問(wèn)數(shù)據(jù)庫(kù)文件,只要用戶對(duì)這些文件具有讀寫權(quán)限。開(kāi)源的SQLite數(shù)據(jù)庫(kù)不提供加密機(jī)制,所以不提供數(shù)據(jù)級(jí)的機(jī)密性。Android系統(tǒng)在使用中很可能受到SQL注入的攻擊。對(duì)于數(shù)據(jù)庫(kù)查詢,如果開(kāi)發(fā)人員通過(guò)字符串連接構(gòu)造SQL語(yǔ)句,就會(huì)發(fā)生SQL注入。
(4)軟件更新安全性分析
Android系統(tǒng)軟件更新是一種廣泛使用的安全機(jī)制,可以及時(shí)改變系統(tǒng)的缺陷。一般是通過(guò)互聯(lián)網(wǎng)在線更新完成的。經(jīng)用戶確認(rèn)后,可以通過(guò)HTTP定期向服務(wù)器發(fā)送查詢語(yǔ)句進(jìn)行在線更新,也可以通過(guò)SD上的更新包進(jìn)行升級(jí)。
在Android系統(tǒng)的在線升級(jí)軟件更新模式下,更新文件分兩步進(jìn)行驗(yàn)證:第一步是在下載階段使用設(shè)備的公鑰進(jìn)行驗(yàn)證;第二步,將代碼映射到可執(zhí)行文件中的輔助公鑰作為修復(fù)工具進(jìn)行驗(yàn)證。Android系統(tǒng)不會(huì)在沒(méi)有密鑰驗(yàn)證的情況下安裝更新軟件包,所以Android軟件更新機(jī)制的設(shè)計(jì)是完善且安全的。
第四,iOS平臺(tái)安全
1.操作系統(tǒng)平臺(tái)系統(tǒng)架構(gòu)
iOS操作系統(tǒng)的分層架構(gòu)從上到下分為四層:Cocoa Touch層、媒體層、核心服務(wù)層和核心OS層。
低層框架提供i OS的基本服務(wù)和技術(shù),高層框架建立在低層框架之上,提供更復(fù)雜的服務(wù)和技術(shù),高層框架為低層結(jié)構(gòu)提供面向?qū)ο蟮某橄蟆?/p>
Foundation和UIKit框架是應(yīng)用程序編程中使用的兩種主要框架,可以滿足大多數(shù)應(yīng)用程序的開(kāi)發(fā)需求。
UIKit框架提供的一個(gè)類,用于創(chuàng)建基于觸摸的用戶界面。所有iOS應(yīng)用都是基于UIKit的,沒(méi)有這個(gè)框架,應(yīng)用是無(wú)法交付的。UIKit為在屏幕上繪圖、處理事件和創(chuàng)建通用用戶界面及其元素提供了應(yīng)用程序基礎(chǔ)結(jié)構(gòu)。UIKit還通過(guò)管理屏幕上顯示的內(nèi)容來(lái)組織應(yīng)用程序。
基礎(chǔ)框架為所有應(yīng)用程序提供基本的系統(tǒng)服務(wù)。應(yīng)用程序以及UIKit和其他框架都是建立在基礎(chǔ)框架的基礎(chǔ)設(shè)施上的。Foundation框架提供了許多基本的對(duì)象類和數(shù)據(jù)類型,這使得它成為應(yīng)用程序開(kāi)發(fā)的基礎(chǔ)。它還制定了一些約定(如取消分配和其他任務(wù)),以使代碼更加一致和可重用。
整個(gè)框架如圖3所示。
圖3操作系統(tǒng)體系結(jié)構(gòu)
(1)可可觸摸層
可可觸摸層包含創(chuàng)建iOS應(yīng)用程序的關(guān)鍵框架。這一層包含的框架定義了應(yīng)用的外觀,也提供了基本的應(yīng)用基礎(chǔ)和關(guān)鍵技術(shù)支持,如多任務(wù)、觸摸輸入、推送通知等多種高級(jí)系統(tǒng)服務(wù)。開(kāi)發(fā)應(yīng)用時(shí),首先要研究這一層的技術(shù),看技術(shù)是否能滿足需求。
(2)媒體層
媒體層包括圖形、聲音和視頻技術(shù)和框架,以實(shí)現(xiàn)應(yīng)用中的多媒體體驗(yàn)。使用這一層技術(shù)可以更容易地構(gòu)建美觀和令人愉快的應(yīng)用程序。
(3)核心服務(wù)層
核心服務(wù)層包含應(yīng)用程序所需的基本系統(tǒng)服務(wù)。這些服務(wù)的核心是Core Foundation和Foundation Framework,它們定義了所有應(yīng)用程序使用的基本類型。這一層還包含支持其他一些功能的獨(dú)立技術(shù),如位置、i Cloud、社交媒體和網(wǎng)絡(luò)。
此外,核心服務(wù)還提供其他功能,如安全性、核心位置、SQLite和通訊簿。其中,Security用于處理認(rèn)證密碼的管理,根據(jù)安全性進(jìn)行管理;核心位置用于處理全球定位系統(tǒng)定位;SQLite是一個(gè)輕量級(jí)數(shù)據(jù)庫(kù);通訊簿用于處理電話簿數(shù)據(jù)。
(4)核心操作系統(tǒng)層
核心OS層是用Free BSD和Mach重寫的達(dá)爾文,是符合POSIX標(biāo)準(zhǔn)的開(kāi)源Unix核心。這一層包含或提供了整個(gè)iOS的一些基本功能,如硬件驅(qū)動(dòng)、內(nèi)存管理、程序管理、線程管理(POSIX)、文件系統(tǒng)、網(wǎng)絡(luò)(BSD Socket)、標(biāo)準(zhǔn)輸入輸出等。這些功能都會(huì)通過(guò)C語(yǔ)言的API來(lái)提供。另外,值得一提的是,這一層的色彩是最Unix的。如果有必要把在Unix上開(kāi)發(fā)的程序移植到iOS上,大部分都會(huì)使用Core OS的API。
核心OS層的驅(qū)動(dòng)程序還提供了硬件和系統(tǒng)框架之間的接口。然而,出于安全原因,只有有限的系統(tǒng)框架類可以訪問(wèn)內(nèi)核和驅(qū)動(dòng)程序。
2.iOS安全架構(gòu)
如圖4所示,i OS的安全架構(gòu)包括三個(gè)部分:硬件層安全、操作系統(tǒng)層安全和應(yīng)用層安全。
圖4 i操作系統(tǒng)安全架構(gòu)
(1)硬件層安全性
硬件加密:加密引擎嵌入硬件芯片,實(shí)現(xiàn)全磁盤加密、指紋加密、文件加密;
安全存儲(chǔ):實(shí)現(xiàn)UID、GID等硬件相關(guān)信息的安全存儲(chǔ),軟件和固件無(wú)法直接讀取。
(2)操作系統(tǒng)層安全性
系統(tǒng)完整性保護(hù):驗(yàn)證啟動(dòng)過(guò)程每一步的簽名組件,實(shí)現(xiàn)安全啟動(dòng)鏈;
安全飛地:提供數(shù)據(jù)保護(hù)密鑰管理所需的加密算法,維護(hù)數(shù)據(jù)保護(hù)的完整性;
安全元素:服從電子支付的財(cái)務(wù)需求,服務(wù)Apple Pay;
觸控ID:指紋傳感系統(tǒng),使安全使用設(shè)備更加方便。
(3)應(yīng)用層安全
代碼簽名:驗(yàn)證代碼完整性,跟蹤開(kāi)發(fā)者;
運(yùn)行時(shí)進(jìn)程安全:通過(guò)沙箱實(shí)現(xiàn)應(yīng)用之間的垂直隔離,實(shí)現(xiàn)應(yīng)用與OS之間的水平隔離,保護(hù)運(yùn)行時(shí)進(jìn)程安全;
應(yīng)用擴(kuò)展:通過(guò)提供擴(kuò)展向其他應(yīng)用提供功能;
應(yīng)用組:實(shí)現(xiàn)同一個(gè)開(kāi)發(fā)者賬號(hào)擁有的應(yīng)用和擴(kuò)展的共享內(nèi)容;
應(yīng)用中的數(shù)據(jù)保護(hù):為開(kāi)發(fā)者提供數(shù)據(jù)保護(hù)API,提高應(yīng)用安全性;
配件:僅限授權(quán)配件(如藍(lán)牙、外接鍵盤等)。)可以訪問(wèn)該設(shè)備。
3.操作系統(tǒng)安全機(jī)制的構(gòu)成
(1)代碼簽名
蘋果公司需要所有開(kāi)發(fā)者在他們的i OS應(yīng)用中使用數(shù)字簽名技術(shù)。此簽名用于識(shí)別應(yīng)用程序的開(kāi)發(fā)人員,并確保應(yīng)用程序在簽名后不會(huì)被更改或損壞。要獲得由操作系統(tǒng)開(kāi)發(fā)的簽名證書,您可以使用鑰匙串訪問(wèn)工具中的證書助理創(chuàng)建證書簽名請(qǐng)求。驗(yàn)證請(qǐng)求后,可以下載并安裝證書。整個(gè)過(guò)程和塞班一模一樣,只是提供開(kāi)發(fā)證書的不是第三方而是蘋果。
蘋果開(kāi)發(fā)者計(jì)劃分為標(biāo)準(zhǔn)開(kāi)發(fā)計(jì)劃和企業(yè)開(kāi)發(fā)計(jì)劃。如果開(kāi)發(fā)人員希望在應(yīng)用商店中發(fā)布應(yīng)用,他們可以加入操作系統(tǒng)開(kāi)發(fā)人員標(biāo)準(zhǔn)計(jì)劃。如果開(kāi)發(fā)人員想要?jiǎng)?chuàng)建一個(gè)部署在公司中的應(yīng)用程序,并且至少有500名員工,他可以加入i OS開(kāi)發(fā)人員企業(yè)計(jì)劃。
蘋果為用戶提供兩種類型的證書:開(kāi)發(fā)者證書,主要用戶的原生測(cè)試;分發(fā)證書主要用于兩種場(chǎng)景,即席和應(yīng)用商店。其中Ad-hoc用于廣泛測(cè)試和共享,僅限100臺(tái)設(shè)備;應(yīng)用商店用于發(fā)布應(yīng)用。
(2)運(yùn)行時(shí)的安全性
通過(guò)沙盒機(jī)制,將應(yīng)用程序與其他應(yīng)用程序和操作系統(tǒng)隔離開(kāi)來(lái),從而實(shí)現(xiàn)運(yùn)行時(shí)進(jìn)程安全。每個(gè)應(yīng)用程序在安裝時(shí)都被分配了一個(gè)獨(dú)立的文件夾,應(yīng)用程序和系統(tǒng)都不能直接訪問(wèn)彼此的資源。由于沙盒的限制,第三方殺毒加密軟件無(wú)法訪問(wèn)其他應(yīng)用和操作系統(tǒng)資源,只能保護(hù)軟件自身的運(yùn)行環(huán)境。因此,i OS上沒(méi)有第三方安全產(chǎn)品。沙盒機(jī)制配合應(yīng)用擴(kuò)展技術(shù),向外界提供有限的接口,實(shí)現(xiàn)應(yīng)用間資源的安全共享。
運(yùn)行時(shí)進(jìn)程安全分為垂直隔離和水平隔離。
垂直隔離:應(yīng)用程序不能訪問(wèn)彼此的文件,只能使用i OS提供的服務(wù)訪問(wèn)自己文件夾外的信息,以防止惡意應(yīng)用程序收集或篡改存儲(chǔ)在其他應(yīng)用程序中的信息。
水平隔離:系統(tǒng)文件和資源與用戶級(jí)應(yīng)用屏蔽,整個(gè)OS分區(qū)為只讀,無(wú)法安裝內(nèi)核模式的惡意軟件。
(3)設(shè)備密碼
設(shè)備密碼用于保護(hù),防止手機(jī)丟失后信息泄露。
(4)設(shè)備和程序控制
用戶可以配置應(yīng)用程序可以訪問(wèn)哪些信息。用戶可以配置是否可以使用Safari瀏覽器、安全應(yīng)用軟件、攝像頭和位置。如果這些信息被禁用,使用它們時(shí)會(huì)彈出錯(cuò)誤消息。
(5)安全儲(chǔ)存
iOS的安全存儲(chǔ)主要包括三個(gè)部分。第一,iOS4 CDSA結(jié)構(gòu)中提到的Apple File DL模塊可以用來(lái)提供文件加密;其次,郵件等設(shè)備數(shù)據(jù)的加密;最后,通過(guò)啟用設(shè)備密碼來(lái)生成和保護(hù)密鑰。
IOS可以通過(guò)iTune對(duì)備份到PC的數(shù)據(jù)進(jìn)行加密。
(6)遠(yuǎn)程銷毀
遠(yuǎn)程數(shù)據(jù)銷毀可以在手機(jī)丟失后遠(yuǎn)程清除終端上的數(shù)據(jù)進(jìn)行遠(yuǎn)程數(shù)據(jù)銷毀。
(7)局部破壞
本地?cái)?shù)據(jù)銷毀,比如密碼輸入錯(cuò)誤超過(guò)10次,所有數(shù)據(jù)都會(huì)被清除。
(8)安全的網(wǎng)絡(luò)通信
它支持VPN、SSL/TLS、RSA Secure ID(動(dòng)態(tài)密碼)和CRYPTOCard(一種身份驗(yàn)證機(jī)制)。
(9)運(yùn)行時(shí)保護(hù)
流程隔離。在i OS中,每個(gè)程序在空之間都有自己的虛擬地址。
(10)文件訪問(wèn)控制
在iOS中,應(yīng)用程序及其數(shù)據(jù)駐留在安全的地方,其他應(yīng)用程序無(wú)法訪問(wèn)。應(yīng)用程序安裝后,系統(tǒng)通過(guò)計(jì)算獲得一個(gè)標(biāo)識(shí)符,然后基于應(yīng)用程序的根目錄和這個(gè)標(biāo)識(shí)符構(gòu)造一個(gè)指向應(yīng)用程序目錄的路徑。
將應(yīng)用程序安裝到操作系統(tǒng)上后,在其目錄結(jié)構(gòu)中:
①根目錄可以通過(guò)NSHome Directory()訪問(wèn);
②Documents目錄可用于文件的寫入和保存,一般通過(guò)NSSearch Path for directory in domain獲得;
③library cache是永久保存的,主要是為了應(yīng)用程序效率而設(shè)計(jì)的,但這樣的空是所有應(yīng)用程序共享的,可能會(huì)被系統(tǒng)釋放;
(4)④tem目錄可以寫入程序運(yùn)行時(shí)需要的一些數(shù)據(jù),程序退出后寫入其中的數(shù)據(jù)會(huì)被清除。可以通過(guò)ns string * ns temporary directory(void)方法獲得。
⑤文件的一些主要操作可以通過(guò)文件管理來(lái)操作。
(11)提供加密服務(wù)
I OS支持AES、RC4、3DES等加密算法。同時(shí),為了提高效率,它支持AES和SHA1硬件引擎。
(12)數(shù)字版權(quán)管理
蘋果的版權(quán)保護(hù)采用了具有自主知識(shí)產(chǎn)權(quán)的公平競(jìng)爭(zhēng)DRM技術(shù),具有以下特點(diǎn):
(1)禁止未經(jīng)授權(quán)的復(fù)制;
②單賬號(hào)同步授權(quán)設(shè)備5臺(tái)許可。
1.《移動(dòng)終端 移動(dòng)終端安全》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《移動(dòng)終端 移動(dòng)終端安全》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/guoji/993211.html