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