
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、iPadOS 13.1、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、iPadOS 13.1、macOS 10.11 或較新版本編譯的 App。
憑證有效性檢查
評估 TLS 證書的信任狀態是依據已建立的業界標準進行(如 RFC 5280 所列),以及整合的新興標準,例如 RFC 6962(證書透明度)。在 iOS 11 或較新版本和 macOS 10.13 或較新版本,Apple 裝置會定期更新吊銷以及受約束的證書的列表。該列表由證書吊銷列表(CRL)整合而成,而這些 CRL 為 Apple 信任的每個內置憑證授權單位及其附屬 CA 核發者所公佈。Apple 也會自行決定將其他約束包括在此列表內。當網絡 API 功能用於執行安全連接時,都會諮詢此資料。當 CA 撤銷的憑證太多而無法逐一列出時,信任評估可能會改為要求需取得線上憑證狀態回應(OCSP),而如果無法取得回應,評估便會失敗。