![](https://help.apple.com/assets/6537FB06A074DBB5E802EA07/6537FB31280588A5490B6E1D/zh_HK/52d714626638d3391623c853be0c593b.png)
iMessage 如何安全地傳送和接收訊息
用户藉由輸入地址或姓名來開始 iMessage 對話。如果他們輸入電話號碼或電郵地址,裝置就會聯絡「Apple 識別服務」(IDS)以截取與該收件人綁定的所有裝置的公用密鑰和 APNs 地址。如果用户輸入的是名字,裝置會先使用用户的「通訊錄」App 來收集連繫至該名字的電話號碼和電郵地址,然後再從 IDS 取得公用密鑰和 APNs 地址。
用户送出的訊息會針對接收者的每個裝置進行個別加密。接收裝置的公用加密密鑰及簽署密鑰會從 IDS 取得。針對每部接收裝置,發送裝置會產生隨機 88 位元的值並將其作為 HMAC-SHA256 密鑰,以建立從傳送者與接收者公用密鑰與純文字衍生的 40 位元值。88 位元與 40 位元值串接起來會產生 128 位元的密鑰,該密鑰會在計數器(CTR)模式下使用 AES 來加密訊息。接收者端會使用 40 位元的值來驗證解密純文字的完整性。系統會對接收裝置的公用密鑰使用 RSA-OAEP 以加密每則訊息的 AES 密鑰。加密訊息文字與加密訊息密鑰的組合接着會以 SHA-1 進行雜湊值運算,而雜湊值會使用發送裝置的專用簽署密鑰以橢圓曲線電子簽署算法(ECDSA)進行簽署。在 iOS 13 或較新版本和 iPadOS 13.1 或較新版本中,裝置可使用橢圓曲線整合加密方案(ECIES)加密,而非使用 RSA 加密。
產生的訊息(每部接收裝置一則)是由加密訊息文字、加密訊息密鑰及傳送者的電子簽署所組成。這些訊息會立即分送至 APNs 進行遞送。時間戳記和 APNs 路由資料等後設資料則不會加密。與 APNs 的通訊會使用前向安全 TLS 通道進行加密。
視 iOS 或 iPadOS 版本而定,APNs 最多只可以轉達大小為 4 或 16 KB 的訊息。如訊息文字過長或隨附了附件(如相片),附件會使用 AES 在 CTR 模式下以隨機產生的 256 位元密鑰進行加密並上載至 iCloud。附件的 AES 密鑰、其統一資源識別碼(URI)和其加密表單的 SHA-1 雜湊值隨後會以 iMessage 內容的形式傳送給收件者,並透過一般的 iMessage 加密保護這些內容的保密性和完整性,如下圖所示。
![顯示 iMessage 如何傳送和接收訊息的圖表。](https://help.apple.com/assets/6537FB06A074DBB5E802EA07/6537FB31280588A5490B6E1D/zh_HK/9ffb7fd30090ef88964a75c4e5ab56b5.png)
對於群組對話,每位接收者與其裝置之間都會重複此過程。
接收方的每部裝置都會從 APNs 接收到一份訊息,且如有需要,裝置會從 iCloud 取得附件。如傳送者的來電號碼或電郵地址與接收者的聯絡人相符,則會顯示一個名字。
與所有推送通知一樣,訊息在遞送後便會從 APNs 中刪除。然而,與其他 APNs 通知不同的是,如裝置離線,iMessage 訊息會排入佇列等待發送。訊息在 Apple 伺服器上最多可儲存 30 日。