iOS 和 iPadOS 的 App 程式碼簽署程序
在 iOS 和 iPadOS 中,Apple 透過強制程式碼簽署、嚴格的開發者登入程序等方式來提供 App 保安。
強制程式碼簽署
iOS 或 iPadOS 核心啟動後,會控制哪些用户程序和 App 可執行。為了協助確保所有 App 均來自核准的已知來源且未經竄改,iOS 及 iPadOS 會要求所有可執行的程式碼均使用 Apple 核發的證書進行簽署。裝置所隨附的 App(如「郵件」和 Safari)則由 Apple 簽署。第三方 App 也必須使用 Apple 核發的證書進行驗證和簽署。強制性程式碼簽署將信任鏈的概念從作業系統延伸至 App,可有助於防止第三方 App 載入未簽署的程式碼資源,或使用自行修改的程式碼。
開發者如何簽署其 App
開發者可以透過憑證驗證(透過 Apple Developer Program(Apple 開發者計劃))對他們的 App 進行簽署。他們亦可以將程式框架嵌入 App,並以 Apple 核發的證書驗證其程式碼(透過團隊識別碼字串)。
證書驗證:如要在 iPhone 或 iPad 裝置上開發並安裝 App,開發者必須向 Apple 註冊並加入 Apple Developer Program(Apple 開發者計劃)。Apple 會先驗證每位開發者(無論是個人或企業)的真實身份,然後再核發憑證。開發者可使用該憑證對 App 進行簽署,並將其提交至 App Store 進行發佈。因此,App Store 中的所有 App 都是由身份可識別的個人或機構提交的,藉此阻止製作惡意 App。這些 App 都經過 Apple 審核,以協助確保它們一般可以如所述方式執行,且沒有明顯的程式錯誤或其他顯著的問題。除了已討論過的技術外,此挑選過程還會讓用户對所購買的 App 的品質更加放心。
程式碼簽署驗證:iOS 及 iPadOS 允許開發者將程式框架嵌入 App 中,以便供 App 本身或 App 內嵌入的延伸功能使用。為了保護系統並防止其他 App 在其地址空間中載入第三方的程式碼,系統將會為啟動程序時所連結的所有動態資料庫執行程式碼簽署驗證。此驗證過程透過團隊識別碼(Team ID)來達成,該識別碼截取自 Apple 核發的證書。團隊識別碼是 10 個字元的英數字元字串,例如 1A2B3C4D5F。程式可透過連結到隨系統發佈的任何資料庫平台,或其程式碼簽署中具有相同團隊識別碼的資料庫平台來成為主要執行檔。因為作為系統一部份發佈的可執行檔不具有團隊識別碼,所以只能連結到隨系統本身發佈的資料庫。
驗證專有的內部 App
合資格的企業也可以編寫供機構內部使用之專有的內部 App,並分發給員工。企業和機構可以請加入 Apple Developer Enterprise Program(ADEP,Apple 開發者企業計劃)。如需更多資料並檢閲資格要求,請參閲:Apple Developer Enterprise Program 網站。機構成為 ADEP 的成員後,便可註冊以獲得一個配置描述檔,該描述檔允許專有的內部 App 在其授權的裝置上執行。
用户必須安裝配置描述檔才能執行這些 App。這有助於確保只有機構要求的用户能夠將 App 載入到其 iPhone 或 iPad 裝置上。透過流動管理裝置(MDM)安裝的 App 會間接獲得信任,因為機構與裝置間的關係已建立。在其他情況下,用户必須在「設定」中核准 App 的配置描述檔。機構也可以限制用户,不允許其核准來自未知開發者的 App。第一次啟動任何專有的內部 App 時,裝置必須從 Apple 收到允許執行 App 的肯定確認。