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)與密碼區塊連結(CBC)模式中的 ECDHE_ECDSA_AES 和
ECDHE_RSA_AES
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),而如果無法取得回應,評估便會失敗。