我不喜歡的 Firefox 同步

一直想對 Firefox 的同步功能做一個詳細的說明,包括怎樣運作,加密方式,同步規則。以及不停有用戶抱怨「同步功能不好用」,「我的書籤丟失了」,在這篇文章里應該會得到解答。順便 Sync 最近加了很多新功能,比如能「同步其他設備的標籤頁」,和將要實現的「發送標籤頁」,還有類似路由上的踢出設備的「斷開同步設備」功能,也一併簡單提及,文章可能會有點長,可以先馬後看。

Firefox 同步加密方式

Sync 1.0(2010-2014)

自 2010 年 Firefox 4 推出以來,Firefox Sync 採用了一個獨特的加密系統,不使用密碼而是創建了一個唯一的密鑰,用於加密和解密所有的數據。獲取數據的唯一方法是知道這個 key。即使是保存數據的 Mozilla 伺服器也無法解密內容。

這個 key 被稱為「恢復密鑰」,因為通常來設置一個新的設備時我們稱之為「配對」。當你設置一個新的設備,你可以看到一個一次性使用的 12 個字元的「配對代碼」,輸入到其他設備。通過 J-PAKE:Password Authenticated Key Exchange by Juggling,恢復密鑰和同步內容便安全地複製到新設備。同時因為兩個設備都知道密鑰,可以安全地共享書籤和其他數據。

Sync 1.0 存在的問題

在早期通過這種方式同步時最大的問題是:如果你丟失了唯一同步的設備,可能也丟失了密鑰的唯一副本,如果沒有該密鑰,則無法恢復你的同步數據。

同時這種同步還存在其他可用性方面的問題:在設置它時,兩台設備必須在你手邊,並且許多人容易認為這種隨機生成的配對代碼是他們需要記住的。

新的 Firefox Sync(2014-至今)

從 Firefox 28 版本開始,Services group 推出了基於傳統電子郵件地址和密碼的 Firefox 帳戶,並沿用至今。

新的 Firefox Sync 安全標準保持不變:仍然有一個強隨機密鑰,Mozilla 的伺服器無法解密你的數據。但不使用配對,密鑰的「解包」受密碼保護,這意味著即使同時丟失所有的設備,只需要在其中輸入 Firefox 帳戶的電子郵件和密碼依然可以恢復所有的數據。

這是從 Sync 1.0 升級以來的最大變化。數據的安全性取決於你設置的密碼。鑒於密碼的重要性,我們重新設計了 Firefox 帳戶,以便 Mozilla 的伺服器永遠不會看到你密碼的明文。Firefox 首先通過使用 PBKDF2 在客戶端加強密碼,然後通過 HKDF 導出多個特定於用途的密鑰。你的密碼或派生的「解包」密鑰都不會傳輸到 Mozilla。可以在 GitHub onepw protocol · mozilla/fxa-auth-server Wiki · GitHub 的技術說明中閱讀有關協議的更多信息。

我丟失了 Firefox 同步信息

隨著舊的同步服務終止和遷移,目前所有用戶應該都使用的是新的同步服務,如上文所述,Mozilla 的伺服器永遠不會看到密碼的明文,所以一旦忘記密碼選擇重置,將丟失任何未存儲在當前設備上的同步數據。因為以前上傳到伺服器的數據無法解密,一旦選擇「忘記密碼」,可以視為之前同步的數據已經不安全了,所以伺服器在當前賬戶下的內容會「立即清除」,並以本地數據作為初始同步。

對於很多用戶來說,由於經常使用一些國內方便找回密碼的服務,在重置密碼時便不注意提示,誤刪了雲端的同步數據。

重置密碼可分兩種情況討論:

1.之前一直使用火狐同步,本地保留有之前全部的同步數據

在這種情況下,登錄時選擇重置密碼,雖然會清除雲端的全部數據,但隨即會將本地數據同步至雲端,可以認為沒有損失數據。

2.重新安裝火狐,本地沒有之前全部的同步數據

這種情況發生在例如「重裝系統後新安裝火狐」,由於全新安裝,本地沒有任何數據,在重置密碼時清除了原來伺服器上的數據,而本地數據為空,所以也無任何數據上傳到雲端。

所以一旦發生了第二種情況,由於其他設備在「重置密碼」時將停止同步數據,變為需要登錄的狀態,如果有其他設備保留有之前同步的內容,可以用新密碼登錄同步即可還原。

Firefox 同步規則

火狐同步功能是在後台按一定規則自動進行的,第一次登錄同步功能時,會將你瀏覽器中需要同步的數據傳輸至伺服器,此後,只要不斷開同步,那麼伺服器端與本地數據將會始終保持一致,也就是說,當同步沒有斷開時,刪除任一本地數據,如某一條書籤,那麼伺服器端同時也會刪除該條書籤。

同步功能中,書籤是以「合併」的方式進行同步的,也就是說,機器 A 上有 1、2、3 三個書籤,機器 B 上有 4、5 兩個書籤,伺服器端有 6、7、8、9 四個書籤,當機器 A 登錄同步後,A 與伺服器端同時有 1 2 3 6 7 8 9 共七條書籤,不斷開 A 的連接,B 登錄同步,那麼,當同步完成後,A、B 和伺服器端書籤則同為 1 2 3 4 5 6 7 8 9

另外,火狐的同步服務存在「全球服務」和「本地服務」兩套不同的服務,目的是為了解決國內用戶無法連接「全球服務」的伺服器的問題。詳情可參考:如何判斷和切換火狐同步的 全球服務 與 本地服務

Sync 最近的一些升級和改變

從 Firefox 45.0 開始著重對標籤頁同步的功能進行了改進,首先,在工具欄添加了一個「同步標籤頁」按鈕,當開啟了 Firefox 的標籤頁同步功能以後,點擊工具欄上的同步按鈕就可以看到其他設備已打開的所有標籤頁。

其次,在地址欄輸入關鍵字搜索的時候可以在下拉列表裡顯示同步的標籤頁。原本你在地址欄輸入關鍵字的時候下拉列表裡只能顯示你已打開的標籤頁,現在可以顯示在其他設備上打開的標籤頁了。

Firefox 47.0 在此基礎上又繼續改進,添加了一個專門用於顯示同步標籤頁的側邊欄。可以通過點擊工具菜單,「查看」 -- 「側邊欄」,找到 Synced Tabs 打開,或者定製模式下面拖動出側邊欄的按鈕。

Firefox 50.0 開始則繼續提供了一個手動將標籤頁發送到其他設備的功能,用戶可以通過標籤頁右鍵菜單將標籤頁發送到任意一個曾用 Firefox 賬號登錄過的設備,也可以發送到所有的設備。需要注意的是這些設備都需要開啟 Firefox 同步功能並登錄 Firefox 賬號,同時打開標籤頁同步的選項。

然後是設備管理功能,這項功能會羅列所有 Firefox 賬號登陸的設備清單,用戶可以管理這些設備,例如取消部分設備的連接。

在同步界面,用戶還可以快速修改當前設備的名稱。

這項功能會在未來數周逐漸提供給每位用戶。


推薦閱讀:

如何看待 Mozilla 宣布將淘汰(不安全的)HTTP?
有哪些火狐(Firefox) 擴展值得推薦?
瀏覽器起源和瀏覽器內核起源歷史?
火狐瀏覽器(Firefox)與谷歌瀏覽器區別在哪裡?
請問各位大牛,你們用的什麼翻譯插件,為啥我這翻譯插件有些網頁無法翻譯?

TAG:火狐浏览器Firefox | 加密 | 数据安全 |