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)對他們的 App 進行簽署。他們還可以在 App 中嵌入框架,並使用 Apple 核發的憑證(透過團隊識別碼)對程式碼進行驗證。
憑證的驗證:若要在 iPhone 或 iPad 裝置上開發並安裝 App,開發者必須向 Apple 註冊並加入 Apple Developer Program。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 的確認。