移動(dòng)應(yīng)用的流行迎程度與日俱增,越來越多的交易開始通過移動(dòng)設(shè)備完成,安全的重要性日益凸顯。在QCon New York 2016活動(dòng)名為“現(xiàn)代化iOS應(yīng)用的安全性”的演講中,Dan Guido詳細(xì)探討了有關(guān)iOS的安全問題。
Guido首先介紹了iOS應(yīng)用程序中現(xiàn)已采用的安全機(jī)制。iOS的安全模型包含下延至基于硬件和具體設(shè)備的加密在內(nèi)的多層面安全通信機(jī)制:
傳輸層安全:iOS可支持安全的網(wǎng)絡(luò)連接。 數(shù)據(jù)保護(hù):iOS能夠?yàn)閼?yīng)用程序使用的幾乎所有文件提供強(qiáng)大的加密保護(hù)。 代碼簽名:Apple要求代碼的每個(gè)片段必須包含簽名,內(nèi)存中的所有內(nèi)容能夠以每4KB頁(yè)為一個(gè)“顆粒”追溯至開發(fā)者。 運(yùn)行時(shí)進(jìn)程安全:iOS會(huì)通過強(qiáng)大的沙箱技術(shù)隔離進(jìn)程,一個(gè)進(jìn)程無法訪問另一個(gè)進(jìn)程的內(nèi)存。 安全飛地(Secure Enclave):帶有指紋傳感器的新款iOS設(shè)備可將加密密鑰存儲(chǔ)在硬件中,這些密鑰是在每款設(shè)備生產(chǎn)過程中,獨(dú)立于操作系統(tǒng)專門為該設(shè)備生成的。雖然這些機(jī)制為應(yīng)用提供了安全的運(yùn)行環(huán)境,Guido進(jìn)一步展示了一系列需要引起我們重視的威脅。
傳輸層安全技術(shù)并非所有網(wǎng)絡(luò)連接必須使用的,如果不進(jìn)行相應(yīng)的數(shù)據(jù)加密和證書檢查,信息很容易受到中間人攻擊。通過對(duì)網(wǎng)絡(luò)連接進(jìn)行配置即可激活必要的安全機(jī)制,或者更簡(jiǎn)單的做法可以直接在應(yīng)用中嵌入諸如TrustKit這樣的庫(kù),借此在后臺(tái)處理安全事宜。
數(shù)據(jù)保護(hù)機(jī)制非常強(qiáng)大,以至于最近在Apple和FBI之間造成了不小的紛爭(zhēng)。如果使用內(nèi)置的硬件密鑰對(duì)數(shù)據(jù)進(jìn)行加密,這些數(shù)據(jù)將無法在設(shè)備之外解密。因此敏感數(shù)據(jù)應(yīng)始終使用密碼和設(shè)備ID進(jìn)行加密。然而開發(fā)者依然需要盡量避免數(shù)據(jù)泄露。有很多應(yīng)用和工具會(huì)嘗試從安全性不夠高的位置,例如剪貼板、應(yīng)用偏好設(shè)置,以及Cookie中查找有用的數(shù)據(jù)。另外敏感數(shù)據(jù)應(yīng)盡量維持最小化痕跡,開發(fā)者應(yīng)當(dāng)避免備份或同步此類數(shù)據(jù),應(yīng)當(dāng)從背景屏幕截圖和日志中排除敏感數(shù)據(jù),鍵盤緩存也需要及時(shí)停用。
根據(jù)Guido的介紹,遵守相關(guān)準(zhǔn)則可進(jìn)一步提高應(yīng)用安全性,但還有一個(gè)問題是開發(fā)者不容忽視的:越獄。設(shè)備一旦越獄,無論用戶主動(dòng)越獄或在不知情的情況下“被”越獄,上述所有安全機(jī)制都會(huì)失去作用。如果開發(fā)者需要更高的安全性,應(yīng)當(dāng)確保設(shè)備未被越獄:
越獄檢測(cè) – 開發(fā)者可以檢測(cè)越獄操作留下的痕跡,例如某些特殊的文件和進(jìn)程。 反調(diào)試保護(hù) – 開發(fā)者需要確保自己的應(yīng)用程序不能在調(diào)試模式下運(yùn)行,因?yàn)槿魏卧姜z檢測(cè)操作在調(diào)試模式下都是可見的。 反逆向 – 開發(fā)者需要確保自己的代碼無法通過再造工程被利用。通??赏ㄟ^人為增加代碼體積或復(fù)雜性的方式實(shí)現(xiàn)。最后Guido通過一些事實(shí)暗示大家,LLVM只能生成Bitcode代碼而非機(jī)器代碼。Apple使用這種技術(shù)的目的在于改進(jìn)或優(yōu)化為不同平臺(tái)提供代碼的方法,開發(fā)者可以借助這一概念增添IDE中已經(jīng)具備的自動(dòng)化的安全加固機(jī)制。但這一過程中也可以使用其他一些工具,例如MAST。
請(qǐng)注意,Qcon大會(huì)結(jié)束后一周內(nèi),大部分演講將免費(fèi)發(fā)布至InfoQ。
查看英文原文:Dan Guido: Modern iOS Application Security