Firefox Syncde的安全功能介紹
什麼是Firefox Sync,為什麼要使用它?
一直在使用Firefox的使用者,其中一個比較重要的原因是習慣了它的書籤同步功能,不過在新版的Firefox,有些使用者會發現原來習慣的書籤同步功能竟然被取消了,這是怎麼回事?原來用的火狐通行證即將停止服務,新版本的Firefix更是直接去除了這個功能,取而代之是Firefox Sync服務,而兩者之間是沒辦法直接互通的。所以,首先得在原來的裝置上升級新版Firefox,然後斷開火狐通行證,登入到新版內建的“同步”,然後在別的裝置上再使用同一賬號登入到“同步”就可以實現多裝置間自動同步書籤等資訊了。
這裡特別要注意一點的是,登入到同步時,有“全球服務”和“本地服務”之分,伺服器是不同的,一定要在各裝置上都選擇同一種服務。
Firefox Sync允許使用者在不同裝置之間共享書籤、瀏覽歷史記錄、密碼和其他瀏覽器資料,並將標籤從一個裝置傳送到另一個裝置。使用者可以使用這一項功能,來優化他們的與網路的互動。
但是在網際網路上,與網路供應商共享資料是常態,我們認為加強Firefox Sync的隱私管理非常重要。
預設情況下,Firefox會同步保護所有同步資料,所以Mozilla無法讀取它。開發人員以這種方式構建了Sync,就是為了將使用者的隱私放在首位。在這篇文章中,我們將詳細介紹Firefox Sync的開發商所做的一些技術設計及背後的原因。
在構建瀏覽器並實現同步服務時,我們認為重要的是要考慮一下所謂的“TCO (Total Cost of Ownership ) 裝置總擁有成本”。Total Cost of Ownership是由華碩提出的一個新的概念,是由購買成本,操作成本,維護成本三方面構成,旨在通過多角度,深層次解釋、剖析為什麼華碩智慧主機板擁有著超高性價比。放在本文,就是指使用者從同步服務的功能中獲得的多還是失去的多。
我們相信,只要開發者通過做出正確的選擇來保護使用者的隱私,則使用者才能覺得使用紹Firefox Sync是個超值的事。當用戶註冊成Firefox Sync使用者並選擇強密碼時,使用者的資料既不受攻擊者的攻擊,也不受Mozilla管理者的監控,此時使用者可以毫無顧慮的嘗試同步。
為什麼Firefox Sync是安全的?
加密後Firefox Sync會對使用者的資料進行保護,這樣在沒有加密金鑰的情況下完全不可讀。經過分析,Firefox Sync背後的加密演算法很強大,已經過數十年的測試,世界上每個政府都使用它來保護其最有價值的資訊。
眾所周知,加密的難點在於金鑰,用了什麼金鑰加密,它來自哪裡,儲存在哪裡,以及它如何在不同地方之間移動?許多雲提供商聲稱他們會對使用者的資料進行加密。雖然他們確實這樣做了,但他們加密的意義不但,只是一個表面的保護措施,不能保護資料免受威脅。
加密金鑰是最基本的保障元素,同步服務提供商絕不能監控它,即使是暫時的,也絕不可以。當用戶登入Firefox帳戶時,輸入使用者名稱和密碼,這些使用者名稱和密碼將傳送到後臺伺服器。也許你會有疑問,既然這些資訊都返回後臺了,那如何保證提供商不監控你的加密金鑰呢?這就要看,服務商是如何處理使用者的密碼了。
網際網路服務的典型登入流程是將使用者的使用者名稱和密碼傳送到伺服器,在伺服器上對其進行雜湊處理,將其與儲存的雜湊進行比較,如果正確,伺服器將允許使用者登入,雜湊是指將密碼轉換為無法讀取的不可讀字串的活動。
Firefox帳戶和Firefox Sync的不同之處在於,使用者永遠不會向Firefox Sync的伺服器傳送他們的密碼。Firefox Sync的開發者會將向用戶計算機上的密碼轉換為兩個不同的、不相關的值。只使用其中一個值,是無法生成使用者密碼的。登入伺服器會將身份驗證令牌(源自使用者的密碼)作為密碼等效項傳送到伺服器,從密碼中提取的加密金鑰永遠不會進入後臺。
具體的技術細節是這樣的:開發人員使用PBKDF2演算法1000 rounds將使用者的密碼匯出到身份驗證令牌1中。在伺服器上,我們另外使用scrypt(引數N = 65536,r = 8,p = 1)2對此令牌進行雜湊,以確保使用者的身份驗證令牌資料庫更難以被破解。
此後,開發人員使用相同的PBKDF2演算法1000 rounds將使用者的密碼匯出到加密金鑰中。通過使用具有單獨資訊值的HKDF,可以將使用者的身份驗證令牌進行域分離。研發人員會使用此金鑰來解包加密金鑰(使用者在安裝過程中生成並且服務商從未看到過解包的加密金鑰),並且該加密金鑰可以用於保護使用者的資料。開發人員使用金鑰在CBC模式下使用AES-256加密使用者的資料,並使用HMAC3進行保護。
雖然這種加密設計是可靠的,但是需要更新常量,比如改進一下PBKDF2演算法1000 rounds,具體過程請 ofollow,noindex">點此 。此令牌僅通過HTTPS連線傳送(帶有預載入的HPKP pin),並且不會被儲存。因此當研發人員一開始開發此令牌時,就需要權衡它們是否支援低功耗、配置較低的裝置。為此,AES-CBC + HMAC是個比較理想的選擇,未來,開發人員可將其升級到一個經過身份驗證的模式。
Firefox Sync的其他安全保護方法
以上講得並不是構建Firefox Sync功能的唯一方法,至少還有三個其他選擇:
方法一:與瀏覽器製造商共享使用者的資料
通過這種方式,瀏覽器製造商能夠讀取使用者的資料,並使用它們來為使用者提供服務。例如,當用戶在Chrome中同步瀏覽器歷史記錄時,除非使用者更改了預設設定,否則它將自動進入使用者的網路和應用活動。正如Google Chrome Help中所述,“使用者的活動可能會用於使用者在其他Google產品上的個性化體驗,例如搜尋或廣告服務。例如,使用者可能會根據Chrome歷史記錄在Feed中看到推薦的新聞報道。
方法二:使用單獨的密碼進行登入和加密
Firefox Sync開發的目的就是為了方便使用,因此研發人員從頭開始設計它,以避免獲取身份驗證令牌和加密金鑰,這意味著開發人員是不會在後臺看到密碼或加密金鑰。如果將密碼傳送到伺服器,則無法從密碼中安全地匯出加密金鑰。
但是,使用者可以新增從未傳送到伺服器的第二個密碼,並使用該密碼加密資料。 Chrome將此視為非預設選項,使用者可以登入並同步Google帳戶憑據,但使用者可以選擇單獨的密碼來加密使用者的資料。
總而言之,我們不關心需要第二個密碼的設計初衷和細節。也許這種方法會讓使用者感到困惑,因為選擇相同或類似的密碼並否定設計的安全性非常容易。很難確定哪個更令人困惑,是將第二個密碼設定為必選項還是可選項,如果是可選項,則意味著它將很少使用,而研發人員則認為使用者不應該選擇隱私項。
方法三:手動同步金鑰
稽核加密設計的關鍵,是對金鑰的使用和用處詳細把控。在Firefox Sync的設計中,使用者只需輸入他們提前設定的密碼,就可以生成永不離開本機的加密金鑰。
Sync的另一個安全選項是刪除使用者選擇,併為使用者提供密碼(永遠不會離開使用者的計算機)。這個密碼不但安全且難以猜測,這是其優點,但缺點是,它們很難被記住。
如果想要新增一個要同步的新裝置時,則需要使用現有裝置才能手動讀取並將密碼輸入到新裝置中。如果使用者的新裝置配有攝像頭,使用者也可以掃描二維碼。
其它瀏覽器的安全性
總體而言,Sync的工作方式就是上述過程,因為研發人員認為它是最佳的設計選擇。預設情況下,第一種方法和第二種方法不提供全面的使用者隱私保護,而第三種方法使用者的使用率卻很低。
如上所述,預設情況下,Chrome會選擇方法一,除非使用者在啟用同步功能之前更改設定,否則這意味著Google會檢視使用者的所有瀏覽歷史記錄和其他資料,並使用這些資訊向用戶推銷各種服務, Chrome還將方法2作為備選項加入。
Opera和Vivaldi也採用了和Chrome同樣的方法,預設情況下選擇方法一,選項二同時作為作為備選項。另外,根據最新的訊息,預設情況下,Vivaldi會提示使用者輸入單獨的密碼(選擇方法二的結果),並允許使用者選擇退出並使用使用者的登入密碼(選擇方法一的結果)。
Brave也是一個以保護使用者隱私為重中之重的瀏覽器,它選擇的是方法三。實際上,Firefox在其最初的同步協議設計中也選擇的是方法三,但在2014年4月,根據使用者對Firefox 29的反饋,對此安全方式進行了更改。例如,Firefox的最初設計(以及Brave目前的設計)會讓使用者在裝置丟失或被盜時,重新獲得資料訪問許可權的困難加大。對於普通使用者來說,這顯然顯得有點多餘了。
不過,Brave的同步協議也出現了一些問題。一個明顯的缺點是,如果密碼被惡意軟體竊取,使用者就無法更改他們的密碼。另一個有趣的問題是,Brave無法跟蹤使用者擁有的裝置數量或型別。雖然這個設計,可以最大限度地降低對使用者資訊的獲取,但缺點是,Brave不允許使用者檢測新裝置何時開始接收同步資料,或者不允許使用者對其進行授權。但是,在Firefox中,研發人員還是選擇為使用者提供這種額外的安全功能,不過提供商就能獲得使用者裝置的更多資訊。
總結
Firefox Sync的出現就是為了更好地保護使用者的資料,預設情況下,Mozilla無法讀取它。