导语:在这篇文章中,我们将详细介绍Firefox Sync的开发商所做的一些技术设计及背后的原因。

什么是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管理者的监控,此时用户可以毫无顾虑的尝试同步。

1.png

为什么Firefox Sync是安全的?

加密后Firefox Sync会对用户的数据进行保护,这样在没有加密密钥的情况下完全不可读。经过分析,Firefox Sync背后的加密算法很强大,已经过数十年的测试,世界上每个政府都使用它来保护其最有价值的信息。

众所周知,加密的难点在于密钥,用了什么密钥加密,它来自哪里,存储在哪里,以及它如何在不同地方之间移动?许多云提供商声称他们会对用户的数据进行加密。虽然他们确实这样做了,但他们加密的意义不但,只是一个表面的保护措施,不能保护数据免受威胁。

加密密钥是最基本的保障元素,同步服务提供商绝不能监控它,即使是暂时的,也绝不可以。当用户登录Firefox帐户时,输入用户名和密码,这些用户名和密码将发送到后台服务器。也许你会有疑问,既然这些信息都返回后台了,那如何保证提供商不监控你的加密密钥呢?这就要看,服务商是如何处理用户的密码了。

互联网服务的典型登录流程是将用户的用户名和密码发送到服务器,在服务器上对其进行哈希处理,将其与存储的哈希进行比较,如果正确,服务器将允许用户登录,哈希是指将密码转换为无法读取的不可读字符串的活动。

2.png

Firefox帐户和Firefox Sync的不同之处在于,用户永远不会向Firefox Sync的服务器发送他们的密码。Firefox Sync的开发者会将向用户计算机上的密码转换为两个不同的、不相关的值。只使用其中一个值,是无法生成用户密码的。登录服务器会将身份验证令牌(源自用户的密码)作为密码等效项发送到服务器,从密码中提取的加密密钥永远不会进入后台。

3.png

具体的技术细节是这样的:开发人员使用PBKDF2算法1000 rounds将用户的密码导出到身份验证令牌1中。在服务器上,我们另外使用scrypt(参数N = 65536,r = 8,p = 1)2对此令牌进行哈希,以确保用户的身份验证令牌数据库更难以被破解。

此后,开发人员使用相同的PBKDF2算法1000 rounds将用户的密码导出到加密密钥中。通过使用具有单独信息值的HKDF,可以将用户的身份验证令牌进行域分离。研发人员会使用此密钥来解包加密密钥(用户在安装过程中生成并且服务商从未看到过解包的加密密钥),并且该加密密钥可以用于保护用户的数据。开发人员使用密钥在CBC模式下使用AES-256加密用户的数据,并使用HMAC3进行保护。

虽然这种加密设计是可靠的,但是需要更新常量,比如改进一下PBKDF2算法1000 rounds,具体过程请点此。此令牌仅通过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无法读取它。

源链接

Hacking more

...