最近蘋果公司安全工程師伊萬·克裡斯迪克(Ivan Krstic)在黑帽大會上宣布啟動漏洞獎勵計劃,蘋果將會給任何在蘋果公司軟件中發現重大 bug 和安全漏洞的個人提供獎勵。
根據研究人員所發現的漏洞和問題的不同,蘋果公司最多會提供高達 20 萬美元的獎勵。如果是發現安全 boot 固件部件方面的問題,研究人員可以獲得 20 萬美元的獎勵,但如果是小的漏洞,比如通過沙箱進程訪問沙箱外用戶數據的問題,最多只能得到 25000 美元的獎勵。
雖然蘋果已經說明了發現不同類型的漏洞所能獲得的最高獎勵金額,但是他們還是會通過以下幾個因素來確定漏洞發現者最終應該獲得多少獎勵:漏洞報道的清晰程度;所發現的問題的新奇程度以及用戶因此受影響的可能性;漏洞若要產生影響所需要的用戶交互程度。蘋果公司計劃從今年 9 月份起正式啟動他們的漏洞獎勵計劃。
看到這條消息的你是不是覺得看到了賺錢的希望,其實蘋果的錢真的不好賺。另外如果你想賺蘋果的錢,最好也了解一下 iOS 系統和設備的安全機制。
iOS 10 內核不加密沒問題
今年早些時候 iOS 10 測試版發布的時候,開發者發現蘋果沒有加密內核,用戶可以完全訪問系統內部資源。
按照之前蘋果的傳統,每一版本 iOS 都會加密內核,iOS 10 的確有些意外。根據 MIT Technology Review 的報道,蘋果是故意向開發者和安全研究人員開放內核,讓他們協助發現 iOS 的漏洞,以便蘋果在後續進行修復。“這真是一個大膽的策略”,安全專家 Jonathan Zdziarski 這樣說道。
沒錯 iOS 10 內核沒有加密並不會對 iOS 的安全和用戶數據造成任何影響,所以不懷好意的人也別想從這沒有加密的內核上做文章,而且不加密之後 iOS 10 的運行速度更快。
內核管理系統的內存以及與外圍設備通信,控制低水平服務、硬件和安全。它還帶有所有必要的低水平設備驅動器以及硬件配置文件,但是不包括用戶數據。
在 iOS 10 中以下幾個部分是沒有加密的:
-iBoot—引導加載程序,驗證運行 iOS 內核
-內核緩存—緩存中不包含任何用戶數據
-啟動 logo—iOS 啟動 logo 不再加密
其實上述變化是蘋果對 iOS 10 性能進行優化做出的一部分努力,因為這三個部分已經沒有必要加密,沒有任何加密的價值,iOS 10 內核不加密不會對平台安全或者用戶數據加密產生影響。
iOS 利用所謂的安全啟動鏈來確保啟動過程中的每一步都帶有蘋果加密簽名的部件,通過保證引導裝載器、內核、內核擴張和基帶固件的完整性來建立信任鏈。這個安全啟動鏈能夠確保最低水平的軟件不被篡改,讓 iOS 只在獲得認證的蘋果設備上運行。
強化 WebKit JIT 映射
JIT 即 Just In Time,指的是 Javascript 代碼即時編譯,對於高性能 JavaScript 來說這是有必要的,但是對於蘋果來說他們認為這種代碼簽名政策太過寬松。JIT 編譯器會生成新的、未簽名的代碼。一名攻擊者,如果他可以管理一個“write-anywhere”攻擊,那麼他就能夠執行任意代碼。
存儲區可標記為讀、寫和執行權限,這種區分方式可以杜絕一些在數據專用區域執行代碼的攻擊。簡單地說,蘋果的解決方案是將編譯 JavaScript 放入允許僅執行的存儲區之中。任何進程都無法讀取到這個區域中的數據或者在其中寫入新數據。iOS 10 中的這種特定變化徹底打破了一些潛在攻擊的可能性。
Secure Enclave 處理器
從 A7 處理器起,蘋果的處理器中都有一個 Secure Enclave 模塊,而配備該模塊的處理器也被稱為 Secure Enclave Processor 或 SEP。該處理器有來自用戶密碼的主密鑰保護。離線攻擊基本不可能。它能夠繞過應用處理器的攻擊面,即使應用處理器已經被攻擊。它判定所有用戶的訪問,管理自己的加密內存。第一次初始化時,它能利用一個隨機數生成器在處理器內創建獨一無二的設備密鑰。密鑰無法導出,而是存儲在不可變的安全的 ROM 之中。
蘋果設備會利用四種不同類型的內部安全密鑰來保護數據安全,它們各有特點。第一種只有存在於設備解鎖的時候;第二種是隨時都有的公開密鑰和設備解鎖時存在的私鑰;第三種是設備重啟第一次解鎖後存在密鑰;第四種就是隨時可用的密鑰。
安全區域通過安全啟動流程來確保其軟件得到蘋果公司的認證和簽名。即使某一處理器核心被攻擊,所有的“安全區域”也能夠獨立發揮功能。而每個“安全區域”都包含獨特的標識符,無法從系統的其他部分訪問,而蘋果公司也沒有這一信息。因此這將避免蘋果公司或其他第三方獲取其中存儲的數據。
每個安全區域在制造過程中都分配了 UID(獨立標識符),無法從系統的其他部分訪問,而蘋果公司也不知道這一信息。當設備啟動時,根據 UID,一個暫時密鑰將被創建,並被用於加密設備存儲空間中‘安全區域’所占的部分。此外,由‘安全區域’保存在系統中的數據使用了這一密鑰來加密。”
由 Touch ID 收集的指紋數據將被存儲在安全區域中。這一數據將被用於信息匹配,從而支持購物等活動。盡管處理器從 Touch ID 傳感器獲取數據,但無法讀取這些數據,因為這些數據使用 Touch ID 和“安全區域”內建的會話密鑰來加密及認證。
關於同步
在多個蘋果設備之間同步數據的方便性相比很多用戶都已經體驗到了。 HomeKit 支持你管理物聯網設備;自動解鎖功能將能夠讓戴著 Apple Watch 的用戶在走近 Mac 時自動解鎖 Mac;還有照片通過 iCloud 同步等。
但是傳統同步方式並不好或者說不安全。其中一種方式就是在讓用戶在所有設備上都使用一種強大的密鑰,一旦這個密鑰丟失,那麼用戶訪問數據的渠道也就隨之丟失。另外一種方式就是將數據打包到派生密鑰中,而這會讓數據保護在賬戶供應者的監控之下。
蘋果公司在實現同步方面有幾個目標:用戶數據在所有設備中都可用,同時有強大的加密技術保護著它。即使用戶丟失所有連接設備,他們還是可以恢復自己的數據。用戶數據不會被暴露在蘋果的顯示之下,另外暴力攻擊也不可能。
iCloud Keychain 系統中的認證其實非常簡單。每一台設備都有相應的密鑰對,為了將新設備添加到同步循環之中,你需要通過現有的設備去認證它。蘋果的後端不參與到這個過程中,毫無特權可言。如果用戶失去了訪問所有設備的渠道,那麼只要還有 iCloud Security Key 和 iCloud 密碼,用戶就可以重新獲得訪問渠道。
為什麼蘋果要銷毀這些卡片?蘋果為了開發安全系統獲取用戶信任方面做出了很多努力。數據離開設備之後,它被攻擊的風險就更大。蘋果需要保持信任關系,他們就必須銷毀這些卡片。這也說明了蘋果將保護用戶數據安全視為一項使命。