TLS 保安
iOS、iPadOS 和 macOS 支援傳輸層保安(TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3)和資料包傳輸層保安(DTLS)。TLS 通訊協定同時支援 AES128 和 AES256,且偏好使用提供前向保密的加密套件。Safari、「日曆」和「郵件」等互聯網 App 會自動使用此通訊協定,在裝置和網絡服務之間建立一條加密的通訊通道。高階 API(如 CFNetwork)讓開發者可以輕鬆在其 App 中採用 TLS,而低階 API(如 Network.framework)則提供精細的控制。CFNetwork 不允許 SSL 3,而使用 WebKit 的 App(如 Safari)也禁止進行 SSL 3 連線。
在 iOS 11 或較新版本及 macOS 10.13 或較新版本中,除非受到用户信任,否則不再允許使用 SHA-1 證書進行 TLS 連線,也不允許使用 RSA 密鑰短於 2048 位元的證書。在 iOS 10 和 macOS 10.12 中,RC4 對稱加密套件已淘汰。依照預設,以 SecureTransport API 導入的 TLS 用户端或伺服器並不會啟用 RC4 加密套件,且當 RC4 是唯一的加密套件時,便無法連接。為加強安全,需使用 RC4 的服務或 App 應升級,以使用安全的加密套件。在 iOS 12.1 上,2018 年 10 月 15 日以後從系統信任的根憑證核發的憑證,都必須記錄在受信任的「憑證透明度」記錄中,才允許用來進行 TLS 連線。在 iOS 12.2 中,TLS 1.3 針對 Network.framework 和 NSURLSession API 預設為啟用。使用 SecureTransport API 的 TLS 用户端無法使用 TLS 1.3。
App 傳輸保安
「App 傳輸保安」提供預設連線的需求,以便 App 在使用 NSURLConnection、CFURL 或 NSURLSession API 時,遵循安全連線的最佳做法。依照預設,「App 傳輸保安」會將加密選取項目限制為僅包含提供前向保密的套件,特別是:
Galois/計數器模式 (GCM) 中的 ECDHE_ECDSA_AES 和 ECDHE_RSA_AES
密碼區塊鏈 (CBC) 模式
App 可針對不同網域停用前向保密要求,停用後便會將 RSA_AES 加入可用加密集中。
伺服器必須支援 TLS 1.2 和前向保密功能,且憑證必須有效並使用 SHA256 或更高的強度(最低限度為 2048 位元 RSA 密鑰或 256 位元橢圓曲線密鑰)加以簽署。
不符合這些要求的網絡連線作業將會失敗,除非 App 凌駕「App 傳輸保安」。無效證書會造成嚴重的作業失敗和連線中斷。「App 傳輸保安」會自動套用到針對 iOS 9 或較新版本和 macOS 10.11 或較新版本編譯的 App。
憑證有效性檢查
評估 TLS 證書的信任狀態是依據已建立的業界標準進行(如 RFC 5280 所列),以及整合的新興標準,例如 RFC 6962(證書透明度)。在 iOS 11 或較新版本和 macOS 10.13 或較新版本,Apple 裝置會定期更新吊銷以及受約束的證書的列表。該列表由證書吊銷列表(CRL)整合而成,而這些 CRL 為 Apple 信任的每個內置憑證授權單位及其附屬 CA 核發者所公佈。Apple 也會自行決定將其他約束包括在此列表內。當網絡 API 功能用於執行安全連接時,都會諮詢此資料。當 CA 撤銷的憑證太多而無法逐一列出時,信任評估可能會改為要求需取得線上憑證狀態回應(OCSP),而如果無法取得回應,評估便會失敗。