「尋找」保安
Apple 裝置的「尋找」App 的建置基礎為先進的公用密鑰加密編譯技術。
概覽
「尋找」App 將「尋找我的 iPhone」和「尋找我的朋友」結合為 iOS、iPadOS 和 macOS 中的單一 App。「尋找」可以協助用户定位遺失裝置,甚至是離線的 Mac。在線上的裝置只需透過 iCloud 向用户報吿位置。「尋找」可從遺失裝置送出短距離藍牙訊號,以達到離線運作的目的,而附近正在使用的其他 Apple 裝置可以偵測到該訊號。其後,附近的裝置可將偵測到的遺失裝置位置傳送到 iCloud,讓用户可以在「尋找」App 定位裝置,以上操作皆會保障所有參與用户的私隱和保安。「尋找」甚至適用於處於離線和睡眠狀態的 Mac。
使用藍牙和世界各地正在使用的數以億計的 iOS、iPadOS 和 macOS 裝置,即使裝置無法連接到 Wi-Fi 或流動網絡,用户也可以找到遺失的裝置。在「尋找」設定中啟用「離線尋找」的任何 iOS、iPadOS 或 macOS 裝置都可以作為「尋找者裝置」。這代表着該裝置可以使用藍牙偵測到另一部遺失的離線裝置,然後使用其網絡連線將大約位置報吿給擁有者。當裝置啟用了離線尋找功能時,這也代表了其他參與者也可以用相同的方式來找到該裝置。整個互動會點對點加密和匿名進行,且設計是要提高電池和資料效率。對電池壽命和流動數據方案使用的影響最小,並且用户私隱得到更好的保護。
附註:「尋找」可能無法在部份國家或地區使用。
點對點的加密
「尋找」建立在進階公用密鑰密碼學的基礎上。當「尋找」設定中的離線尋找啟用時,會直接在裝置上產生橢圓曲線(EC)P-224 私人加密密鑰組,其標註為 {d,P}(d 表示專用密鑰,P 則為公用密鑰)。此外,一個 256 位元密鑰 SK0 和一個計數器 i 被初始化為零。該專用密鑰組和密鑰將永遠不會發送給 Apple,並只使用「iCloud 鑰匙圈」以端到端的加密方式在用户的其他裝置之間同步。密鑰和計數器用於透過以下遞迴構造得出目前對稱密鑰 Ski:SKi = KDF(SKi-1, “update”)。
基於密鑰 SKi,使用 (ui,vi) = KDF(SKi, “diversify”) 計算兩個大整數 ui 和 vi。接下來會使用與兩個整數相關的仿射關聯,衍生出以 d 表示的 P-224 專用密鑰和以 P 代表的對應的公用密鑰,以便計算出暫時性密鑰組:衍生的專用密鑰為 di,其中 di = ui * d + vi(以 P-224 曲線的順序為模型),而對應的公用密鑰部份為 Pi 且驗證 Pi = ui*P + vi*G。
當裝置遺失且無法連接 Wi-Fi 或流動網絡時(例如將 MacBook Pro 遺落在公園長椅上時),裝置會於有限期間內,在藍牙承載資料中開始定時廣播衍生的公用密鑰 Pi。透過使用 P-224,公用密鑰代表可以放入單一藍牙承載資料中。周圍的裝置可以透過將其位置加密至公用密鑰來幫助找到離線裝置。大約每 15 分鐘,系統會使用遞增的計數器值和上述過程,將公用密鑰替換為新的公用密鑰,所以無法使用永久識別碼來追蹤用户。衍生機制的設計用意是防止將不同的公用密鑰 Pi 連接至同一部裝置。
保持用户及裝置匿名
除了確保位置資料和其他資料完全加密之外,參與者的身份在彼此之間以及與 Apple 之間都保持私密。尋找者裝置傳送至 Apple 的流量中,內容或標頭均不含任何認證資料。因此 Apple 無從得知尋找者是誰,也不知道誰的裝置被找到。此外,Apple 不會記錄可能透露尋找者身份的資料,並且不會保留可讓任何人將尋找者與擁有者連繫的任何資料。裝置擁有者只會收到已解密並顯示在「尋找」App 中的加密位置資料,而資料不會指出誰是找到裝置的尋找者。