Apple“查找我的”密鑰輪換
Apple 的 Find My 技術在這篇 Wired 文章中進行了描述,並解釋了 Apple 或其他第三方如何無法解密位置數據。它提到了鍵是如何每小時輪換一次的:
該公鑰經常更改,定期“輪換”為新號碼。多虧了一些數學魔法,這個新數字與以前版本的公鑰無關,但它仍然保留了加密數據的能力,只有你的設備才能解密它。蘋果拒絕透露密鑰的輪換頻率。但是每次發生這種變化時,任何人都更難使用您的藍牙信標來跟踪您的動作。
這是什麼“數學魔法”?Apple 是否在任何地方進一步詳細說明了這一點,或者其他人是否詳細說明了該協議?新密鑰是否加密舊密鑰或有關它的某些資訊,或者是否涉及更多涉及的 KDF 或分層確定性派生?
使用 KDF 功能是對的。請參閱此處的本文,特別是第 6.1 節。本文專門針對 Apple 的離線FindMy 應用程序中的漏洞,該應用程序被破壞並用於使用藍牙跟踪器設備跟踪人員。根據Apple的此連結https://support.apple.com/en-gb/guide/security/sec6cbc80fd0/web,兩者使用相同的方法來“滾動”密鑰。
最初,每個所有者設備都會生成一個私鑰-公鑰對 $ (d_0, p_0) $ 在 NIST P-224 曲線和 32 字節對稱密鑰上 $ SK_0 $ 它們共同構成了主信標密鑰。這些密鑰永遠不會發送出去。
這種方法通過定期更改 BLE 廣告的內容來使設備跟踪變得困難。特別是,OF 使用滾動鍵的概念,如果知道初始輸入鍵,則可以確定地派生該鍵。 $ (d_0, p_0) $ 和 $ SK_0 $ 但否則無法連結。
它使用帶有 SHA-256 和生成器的 ANSI X.963 KDF $ G $ NIST P-224 曲線:
$$ SK_i=KDF(SK_{i-1},“update”,32) $$ 更新 32 字節長的密鑰。
$$ (u_i,v_i)=KDF(SK_i,“diversify”,72) $$ 派生反跟踪密鑰 $ u_i,v_i $ 來自新的對稱密鑰,每個 36 字節長。
$$ d_i=(d_0\ast u_i)+v_i,\quad p_i=d_i\ast G $$ 使用反跟踪密鑰和主信標密鑰創建廣告密鑰對 $ d_0. $ 當設備失去且無法連接到 WiFi 或移動網路時,它開始傳輸派生的公鑰 $ p_i $ 在藍牙有效載荷中的有限時間段內。
蘋果文件還建議每 15 分鐘左右滾動一次按鍵。