關(guān)于Android7.0 Nougat(牛軋?zhí)牵?/strong>
眾所周知,2016年的GoogleI/O開發(fā)者大會已經(jīng)在美國時間的5月18日成功召開了,而在此次大會上,Google公司也正式發(fā)布了新版的AndroidN操作系統(tǒng)。2016年8月22日,Google開始正式向用戶推送Android7.0 Nougat正式版。
在性能方面,AndroidN不僅對編譯器進(jìn)行了優(yōu)化,而且還在圖形處理方面做了更新。AndroidN下的軟件運(yùn)行速度將提升3-6倍,而且由于引入了全新的JIT編譯器,使得app的安裝速度提升了將近75%。
在可操作性方面,AndroidN更是在用戶操作的便捷性上做了一些提升。Nougat不僅加入了全新的分屏多任務(wù)功能,而且還加入了多任務(wù)快速切換功能。這個功能可以幫助用戶解決在兩個任務(wù)之間頻繁切換的問題。
當(dāng)然了,這些功能性的升級和拓展并不是我們這篇文章所要關(guān)注的重點(diǎn),我們的注意力當(dāng)然要放在AndroidN的安全性提升上。接下來,我給大家簡單描述一下新版的Android7.0 Nougat中到底新增了哪些安全保護(hù)功能。
新的安全特性
在今年夏天,Google公司的Android開發(fā)團(tuán)隊(duì)向外界展示了Android7.0 Nougat(牛軋?zhí)牵┲泻芏嘈绿砑拥陌踩鰪?qiáng)特性。除此之外,Google還將更加重視Android項(xiàng)目的漏洞獎勵計劃,Google公司會對每一位向Android項(xiàng)目提交漏洞的白帽子予以積極響應(yīng)。
在系統(tǒng)的安全性方面,Android引入了一種新型的直接啟動模式(DirectBoot Mode),重新設(shè)計了mediaserver的整體架構(gòu),提升了媒體棧(MediaStack)的安全性,并且更新了Android系統(tǒng)處理可信任證書的機(jī)制。除此之外,Android還提升了Nougat下應(yīng)用程序的安全性,并且會對設(shè)備啟動過程進(jìn)行更為嚴(yán)格的檢測。更值得注意的是,Google更新了Android操作系統(tǒng)的Linux內(nèi)核,這樣可以最大程度地降低設(shè)備的攻擊面,并增強(qiáng)了對設(shè)備內(nèi)存的保護(hù)。
除了上述這些新的安全特性之外,AndroidN還支持全新的文件加密模式,用戶將可以對單獨(dú)的文件進(jìn)行加密。需要注意的是,這種加密是在Android操作系統(tǒng)啟動的時候就已經(jīng)開始了,這樣可以最大程度地保證所謂“系統(tǒng)盲點(diǎn)”時間內(nèi)的信息安全。
還有一個功能對于國人而言可能就有些雞肋了,新的AndroidN在進(jìn)行系統(tǒng)更新時會在后臺主動下載更新固件,并在用戶重啟手機(jī)的時候自動升級系統(tǒng)。反正國人所使用的大多數(shù)Android設(shè)備都不會第一時間收到Google的更新推送,而且Android操作系統(tǒng)的實(shí)際更新迭代速度確實(shí)太慢,所以這并不是什么值得我們期待的功能。
接下來,我們挑選了幾個比較重要的安全增強(qiáng)性能來進(jìn)行分析。請各位同學(xué)繼續(xù)往下看!
直接啟動模式(DirectBoot Mode)
在之前版本的Android操作系統(tǒng)中,如果用戶開啟了密碼保護(hù)功能,那么用戶就需要在設(shè)備的啟動過程中輸入密碼(圖形或文字密碼)。當(dāng)設(shè)備啟動成功之后,設(shè)備中存儲的數(shù)據(jù)也就解密完成了。Android7.0 Nougat更新了設(shè)備底層的加密處理機(jī)制,并且大幅減少了設(shè)備的啟動時間,提升了手機(jī)的重啟速度。現(xiàn)在,手機(jī)中類似電話app和鬧鐘這樣的應(yīng)用會在你輸入密碼之前就啟動完成了。在這個模式下,系統(tǒng)已經(jīng)處于正常的運(yùn)行狀態(tài)了,但是仍然會限制某些隱私數(shù)據(jù)的訪問。這也就意味著,在你首次啟動并且沒有輸入密碼的情況下,你不僅可以正常接聽來電,你的鬧鐘也會按時叫醒你起床。我們稱該模式為“直接啟動”模式(DirectBoot Mode)。
如果你想讓你所開發(fā)的app在用戶解鎖設(shè)備之前就運(yùn)行的話,你需要在AndroidManifest.xml文件中顯式地聲明下列信息,并選擇需要加入“直接啟動”模式的app組件:
android:directBootAware=”true”> android:directBootAware=”true”> 如果你的app需要在“直接啟動”模式下運(yùn)行的話,需要使用下面這個新增的broadcast: Intent.ACTION_LOCKED_BOOT_COMPLETED 但是需要注意的是,當(dāng)用戶解鎖了設(shè)備之后,所有的app仍然會接收到下面這個broadcast: Intent.ACTION_BOOT_COMPLETED 全新的加密機(jī)制 Android N引入了全新的安全加密機(jī)制,基于文件的加密將會大幅度提升用戶體驗(yàn)度。在這種全新的加密機(jī)制之下,系統(tǒng)存儲空間和用戶配置存儲空間將會分開進(jìn)行加密。這與全盤加密不同,因?yàn)槿P加密會將設(shè)備中所有的數(shù)據(jù)一次加密完成。 基于文件的加密機(jī)制可以通過更細(xì)粒度地加密來保護(hù)每一位用戶的數(shù)據(jù)安全,而且還可以提升被加密文件的獨(dú)立性。設(shè)備中的每一份文件都會使用一個唯一的密鑰來加密,而能夠解密這些文件的只有你的設(shè)備密碼。 除此之外,近些年來Android生態(tài)系統(tǒng)也在不斷增強(qiáng)設(shè)備的安全保護(hù)性能。從Marshmallow(Android6.0)開始,加密功能已經(jīng)成為了Android設(shè)備的必備功能。像Nexus5X和6P這樣的設(shè)備會使用單獨(dú)的密鑰,而這些密鑰只能通過受信任的硬件來訪問,例如ARMTrustZone。從Nougat(Android7.0)開始,所有的新設(shè)備不僅必須要提供對密鑰存儲的硬件支持,而且還要在這些密鑰被使用之前,即當(dāng)用戶解鎖設(shè)備時,提供防止暴力破解的安全保護(hù)。這樣一來,你的所有數(shù)據(jù)只能夠在特定的設(shè)備上由你來進(jìn)行解密。 App安全性提升 Android Nougat是目前最安全的Android操作系統(tǒng),而且對于應(yīng)用開發(fā)人員而言,這個版本的Android也是最容易進(jìn)行開發(fā)的。原因如下: 1.如果某個app需要與其他的app共享數(shù)據(jù),現(xiàn)在必須顯式地通過Content Provider來提供需要共享的文件,例如FileProvider。應(yīng)用程序私有目錄(通常在/data/data/目錄下)的Linux權(quán)限必須設(shè)置為”0700”,app的目標(biāo)APILevel必須為24以上(APILevel 24+)。 2.為了讓app更加輕松地控制網(wǎng)絡(luò)通信數(shù)據(jù)的訪問權(quán)限,API Level24+以上的系統(tǒng)將不再支持用戶使用自簽名的證書了。除此之外,所有安裝了新版Android系統(tǒng)的設(shè)備必須使用相同的證書頒發(fā)機(jī)構(gòu)。 3.通過設(shè)備的網(wǎng)絡(luò)安全配置,開發(fā)人員可以更加方便地配置網(wǎng)絡(luò)安全策略。 除此之外,Google也在不斷完善Androidapp的權(quán)限機(jī)制和安全功能,目的就是為了防止用戶受到某些潛在的惡意app影響。 1.提升了設(shè)備的隱私保護(hù),Google移除了某些可以持久訪問目標(biāo)設(shè)備的標(biāo)識,例如設(shè)備的MAC地址。 2.用戶接口層將無法顯示在權(quán)限對話框之上。因?yàn)槟承阂鈇pp會使用這種“點(diǎn)擊劫持”技術(shù)來嘗試獲取非法權(quán)限。 3.降低了設(shè)備管理程序時的耗電量,并禁用了onDisableRequested(),因?yàn)槟承├账鬈浖眠@個接口來非法獲取設(shè)備的控制權(quán)。 總結(jié) Android Nougat對系統(tǒng)各個方面的安全性都進(jìn)行了大幅度地改進(jìn),Google公司的Android開發(fā)團(tuán)隊(duì)將會繼續(xù)努力改善Android系統(tǒng)的安全性。與此前一樣,如果你對提升Android操作系統(tǒng)有任何建議的話,歡迎大家與Google公司的Android開發(fā)小組聯(lián)系(security@android.com)。 *參考來源:Google, 本文由Alpha_h4ck編譯,轉(zhuǎn)載請注明來自FreeBuf(Freebuf.COM)