天天看點

Dan Guido:現代化iOS應用的安全性

移動應用的流行迎程度與日俱增,越來越多的交易開始通過移動裝置完成,安全的重要性日益凸顯。在qcon new york 2016活動名為“現代化ios應用的安全性”的演講中,dan guido詳細探讨了有關ios的安全問題。

guido首先介紹了ios應用程式中現已采用的安全機制。ios的安全模型包含下延至基于硬體和具體裝置的加密在内的多層面安全通信機制:

傳輸層安全:ios可支援安全的網絡連接配接。 資料保護:ios能夠為應用程式使用的幾乎所有檔案提供強大的加密保護。 代碼簽名:apple要求代碼的每個片段必須包含簽名,記憶體中的所有内容能夠以每4kb頁為一個“顆粒”追溯至開發者。 運作時程序安全:ios會通過強大的沙箱技術隔離程序,一個程序無法通路另一個程序的記憶體。 安全飛地(secure enclave):帶有指紋傳感器的新款ios裝置可将加密密鑰存儲在硬體中,這些密鑰是在每款裝置生産過程中,獨立于作業系統專門為該裝置生成的。

雖然這些機制為應用提供了安全的運作環境,guido進一步展示了一系列需要引起我們重視的威脅。

傳輸層安全技術并非所有網絡連接配接必須使用的,如果不進行相應的資料加密和證書檢查,資訊很容易受到中間人攻擊。通過對網絡連接配接進行配置即可激活必要的安全機制,或者更簡單的做法可以直接在應用中嵌入諸如trustkit這樣的庫,借此在背景處理安全事宜。

資料保護機制非常強大,以至于最近在apple和fbi之間造成了不小的紛争。如果使用内置的硬體密鑰對資料進行加密,這些資料将無法在裝置之外解密。是以敏感資料應始終使用密碼和裝置id進行加密。然而開發者依然需要盡量避免資料洩露。有很多應用和工具會嘗試從安全性不夠高的位置,例如剪貼闆、應用偏好設定,以及cookie中查找有用的資料。另外敏感資料應盡量維持最小化痕迹,開發者應當避免備份或同步此類資料,應當從背景螢幕截圖和日志中排除敏感資料,鍵盤緩存也需要及時停用。

根據guido的介紹,遵守相關準則可進一步提高應用安全性,但還有一個問題是開發者不容忽視的:越獄。裝置一旦越獄,無論使用者主動越獄或在不知情的情況下“被”越獄,上述所有安全機制都會失去作用。如果開發者需要更高的安全性,應當確定裝置未被越獄:

越獄檢測 – 開發者可以檢測越獄操作留下的痕迹,例如某些特殊的檔案和程序。 反調試保護 – 開發者需要確定自己的應用程式不能在調試模式下運作,因為任何越獄檢測操作在調試模式下都是可見的。 反逆向 – 開發者需要確定自己的代碼無法通過再造工程被利用。通常可通過人為增加代碼體積或複雜性的方式實作。

最後guido通過一些事實暗示大家,llvm隻能生成bitcode代碼而非機器代碼。apple使用這種技術的目的在于改進或優化為不同平台提供代碼的方法,開發者可以借助這一概念增添ide中已經具備的自動化的安全加強機制。但這一過程中也可以使用其他一些工具,例如mast。

本文轉自d1net(轉載)