亚洲精品无人区,亂倫近親相姦中文字幕,日韩一区精品视频一区二区,天天躁日日躁很很很躁

蘋果程序與安卓程序安全機(jī)制的區(qū)別

點(diǎn)擊:發(fā)布日期:2025/6/24

iOS安全機(jī)制

(1)安全沙箱

進(jìn)程隔離,每個(gè)程序都有自己的虛擬地址空間。應(yīng)用程序在安裝之后,系統(tǒng)就通過(guò)計(jì)算得到一個(gè)標(biāo)識(shí),然后基于應(yīng)用程序的根目錄和這個(gè)標(biāo)識(shí)構(gòu)件一個(gè)指向應(yīng)用程序目錄的路徑,其他應(yīng)用程序都不能進(jìn)行訪問(wèn)。iOS 的沙箱是基于TrustBSD策略框架的內(nèi)核擴(kuò)展模塊,針對(duì)每個(gè)進(jìn)程都可以制定特殊的沙箱配置文件,沙箱配置文件編譯后以2進(jìn)制的方式保存在KernelCache文件中(iOS下),需反匯編成可讀的文本格式來(lái)查看內(nèi)核中的沙盒規(guī)則

(2)代碼簽名

apple需要所有開(kāi)發(fā)人員對(duì)自己的iPhone應(yīng)用程序使用數(shù)字簽名技術(shù)。這個(gè)簽名用來(lái)標(biāo)識(shí)應(yīng)用程序的開(kāi)發(fā)者以及保證應(yīng)用程序在簽名之后不被更改和損壞。開(kāi)發(fā)者證書由apple提供(這是與android最大的區(qū)別,android是自

簽名),有以下兩類證書:

Developer Certificate:用于本機(jī)測(cè)試

Distribution Certificate:Ad-hoc用于100臺(tái)設(shè)備以內(nèi)的測(cè)試和共享;app store用于發(fā)布應(yīng)用程序所有的可執(zhí)行文件、庫(kù)文件都需要Apple簽名后才可以運(yùn)行在iOS中,內(nèi)核會(huì)在調(diào)用execve之前檢測(cè)Mach-o文件中的LC_CODE_SIGNATURE段是否有效和可信任的,iOS啟動(dòng)的時(shí)候同樣也會(huì)檢測(cè)KernelCache的簽名是否有效代碼簽名的破壞可見(jiàn)《iOS平臺(tái)游戲安全之IPA破解原理及防御》

(3)ASLR(address space layout randomisation)/DEP

PIE: position independent executable

iOS 4.3后開(kāi)始支持該功能,iOS上的預(yù)裝應(yīng)用都開(kāi)啟了該功能

ASLR的其他信息可見(jiàn)《ASLR》

DEP(Data execution Prevention),內(nèi)核不允許將頁(yè)面保護(hù)標(biāo)志設(shè)置為RWS,并在ARMv6引入XN(executenever)標(biāo)志位,從而在硬件上支持執(zhí)行保護(hù)。

(4)文件系統(tǒng)加密

Data protection APIs

NSFileProtectionNone

NSFileProtectionComplete

NSFileProtectionCompleteUnlessOpen

NSFileProtectionCompleteUntilUserAuthentication

KSecAttrAccessibleAlways

KSecAttrAccessibleWhenUnlocked

KSecAttrAccessibleAfterFirstUnlock

KSecAttrAccessibleAlwaysThisdeviceOnly

KSecAttrAccessibleWhenUnlockedThisDeviceOnly

KSecAttrAccessibleAfterFirstUnlockThisDeviceOnly

timg.jpg

安全機(jī)制

(1)安全沙箱

每一個(gè)Android應(yīng)用程序(apk文件)會(huì)在安裝時(shí)分配一個(gè)獨(dú)有的linux用戶ID(即一個(gè)用戶id識(shí)別一個(gè)應(yīng)用程序),這就為它建立了一個(gè)沙箱,使其不能與其他應(yīng)用程序進(jìn)行接觸。這個(gè)用戶ID在安裝時(shí)分配,并在該設(shè)備上一直保持同一個(gè)數(shù)值。所有存儲(chǔ)在應(yīng)用程序中的數(shù)據(jù)都會(huì)賦予該應(yīng)用程序的用戶ID,使其他應(yīng)用程序無(wú)法訪問(wèn)

這些數(shù)據(jù)(如需要訪問(wèn),見(jiàn)(4)文件訪問(wèn)控制)。

(2)代碼簽名

采用自簽名機(jī)制,不需要權(quán)威機(jī)構(gòu)簽名和審核,完全由用戶自行判斷是否信任該程序(與iOS區(qū)別很大)。簽名是為了:識(shí)別代碼的作者

檢測(cè)應(yīng)用程序是否發(fā)生了變化
在應(yīng)用程序之間建立信任:使用相同數(shù)字簽名簽署的兩個(gè)應(yīng)用程序可以相互授予權(quán)限來(lái)反問(wèn)基于簽名的API,如果他們共享用戶ID,那么也可以運(yùn)行在同一進(jìn)程中,從而允許訪問(wèn)對(duì)方的代碼和數(shù)據(jù)(見(jiàn)(4)文件訪問(wèn)控制。

代碼簽名的詳細(xì)機(jī)制可見(jiàn)《Android簽名與簽名校驗(yàn)》

(3)manifest權(quán)限管理

Android要求用戶在使用API時(shí)進(jìn)行申明,稱為permission,對(duì)一些敏感API的使用在安裝時(shí)就可以給用戶風(fēng)險(xiǎn)提示,由用戶確定是否安裝,例如READ_CONTACTS為讀取通訊錄數(shù)據(jù)權(quán)限。權(quán)限在AndroidManifest.xml文件里進(jìn)

行設(shè)置,通過(guò)元素添加子元素,如下圖所示

permission分為4個(gè)保護(hù)等級(jí):normal,dangerous,signature,signatureorsystem。不同的保護(hù)級(jí)別代表程序要使用此權(quán)限時(shí)的認(rèn)證方式。

normal:只要申請(qǐng)就可以使用

dangerous:在安裝時(shí)需要用戶確認(rèn)才可以使用,最經(jīng)常使用的權(quán)限

signature:告訴android系統(tǒng)這個(gè)權(quán)限只能授予擁有同樣數(shù)字簽名并且定義了該權(quán)限的應(yīng)用程序

signatureorsystem:需要開(kāi)發(fā)者的應(yīng)用和系統(tǒng)使用同一個(gè)數(shù)字證書,即需要系統(tǒng)或者平臺(tái)簽名,真實(shí)手機(jī)中的系統(tǒng)簽名只有廠商知道

應(yīng)用程序也可以定制權(quán)限以保護(hù)自己的資源,當(dāng)前ita應(yīng)用程序想要訪問(wèn)一個(gè)應(yīng)用程序的受保護(hù)資源時(shí),就必須通過(guò)它們自己的manifest文件請(qǐng)求適當(dāng)?shù)臋?quán)限

(4)文件訪問(wèn)控制

因?yàn)榘踩诚涞拇嬖趯?dǎo)致不同應(yīng)用程序之間的數(shù)據(jù)(文件)是隔離的。在通過(guò)

getSharedPreferences(filename,operatingMode)

openFileOutput(filename,operatingMode)

openOrCreateDatabase(filename,operatingMode, SQLiteDatabase.CursorFactory)

等方法來(lái)創(chuàng)建一個(gè)新文件時(shí),可以通過(guò)指定文件的存儲(chǔ)方式operationMode來(lái)進(jìn)行文件的訪問(wèn)控制,android文件存儲(chǔ)有以下4種方式:

Context.MODE_PRIVATE:默認(rèn)操作模式,代表該文件是私有數(shù)據(jù),只能被應(yīng)用本身訪問(wèn),在該模式下,寫入的內(nèi)容會(huì)覆蓋原文件的內(nèi)容Context.MODE_APPEND:代表該文件是私有數(shù)據(jù),只能被應(yīng)用本身訪問(wèn),在該模式下,會(huì)檢查文件是否存在,存

在就往文件追加內(nèi)容,否則就創(chuàng)建新文件

Context.MODE_WORLD_READABLE:表示當(dāng)前文件可以被其他應(yīng)用讀取

Context.MODE_WORLD_WRITEABLE:表示當(dāng)前文件可以被其他應(yīng)用寫入。



除了使用Context.MODE_WORLD_READABLE/Context.MODE_WORLD_WRITEABLE標(biāo)識(shí)位來(lái)使兩個(gè)程序相互訪問(wèn)對(duì)方的資源。還可以通過(guò)設(shè)置AndroidManifest.xml文件的manifest標(biāo)簽中的sharedUserId屬性,來(lái)使得不同的應(yīng)用程序共用同一個(gè)用戶ID,并且這些應(yīng)用程序還使用同一個(gè)簽名簽署,在滿足以上兩個(gè)條件(共同的sharedUserID,共同的簽名)的情況下就可以實(shí)現(xiàn)不同應(yīng)用程序相互資源的訪問(wèn)了,如下圖所示



(5)ASLRandroid 4.1后才開(kāi)始支持完整版功能

山東景安網(wǎng)絡(luò)科技有限公司

山東景安科技有限公司 版權(quán)所有
  • 掃碼瀏覽手機(jī)站

  • 掃一掃微信聊

電話:15065939069