什么是SSL绑定?

0
3656

本文将对SSL绑定做一个简单的介绍,以及它是如何保护你的。

如果你知道HPKP(HTTP公共密钥绑定)这个术语,那么你就知道这是一种具体的绑定实现,经常与SSL一起使用。本文我们将从更广义的角度讲述“绑定”这一个词。请注意,绑定和HPKP是不同的,而且本文所讨论的关于HPKP的东西并不是完全准确的。然而,本文将帮助你理解HPKP的一些概念。

什么是绑定?

绑定是一种可选机制,能够用来提高依赖于SSL证书的服务或网站的安全性。绑定允许你指定一个加密身份,而访问你的网站的用户应当是可以接受这个身份的。

这听起来有点复杂,但事实上它是相当简单的。让我们来逐一讲给您听吧:

加密身份是一种可以通过密码来证明服务器/主机的身份的文件。SSL证书、公有密钥和CSR都是一种加密身份。这个密码之后将会告诉客户端记住这个身份(或者这些身份),并且未来在建立安全的连接时,只接受这些身份。

因此,如果你想要使用绑定,那么你将需要对你的服务器进行配置(在某些情形中——想想内部系统——你可能还需要对客户端进行配置)并指定你希望绑定的东西。浏览器和其他客户端将会在每次连接时对绑定的身份进行评估。如果出现了其他身份,那么客户端就会中止这个连接。

总的来说,SSL连接会告诉客户端进行一个加密连接,只要所使用的身份与这个主机相匹配。而绑定则会告诉客户端在进行安全连接时,它们应当接受的特定的身份。

因此,举例来说,假设现在有一个网站Bisend.cn,然后我们为它绑定了一个身份。当用户访问这个网站时,他们就会接收到绑定的信息。在未来的访问中,如果这个网站试图获取客户端来使用不同的身份,那么他们的浏览器就会采取行动。

绑定是如何对你进行保护的?

SSL生态系统固有风险之一是错误签发。为你所控制的域名/主机签发未经授权的证书时,就会发生这种情况。公有和私有PKI都有可能发生这种情况,尽管这些公有案例肯定更广为人知。

错误签发可能有多种形式。2011年,Dutch CA DigiNotar被黑,这很可能是公共CA有史以来所遭受的最大的一次攻击。黑客可以访问其内部系统并为所有网站签发证书。这对CA系统来说是一次全线崩溃,因为这些证书拥有了不正确的加密身份,从而未经授权的用户得以访问CA的签发系统。

更近一点,微软在芬兰的一个网站Live.fi也成为了错误签发的受害者。在这个例子中,CA并没有过错,而是提供免费网页邮件的Live.fi错误地让一个用户注册了一个电子邮件地址,而这个电子邮件地址被列为在白名单上,可以核准作SSL证书使用。这就让那些没有恰当授权的人得以为其并不拥有的网站获取证书。

在这两个案例中,绑定本来都可以对这些网站的用户进行保护的(在DigiNatar的例子中,谷歌的许多服务都得到了保护,因为它们在之前就已经采用了绑定)。当用户的设备遇到了错误签发的证书时,它就会与绑定的数据进行比较,从而查看到存在不匹配的情况。之后系统就会警告或阻止访问该网站。

正如你所看到的,错误签发是很复杂的。根据网站的不同,错误签发的风险也会有所不同。相比个人博客,像gmail.com这样的网站更有可能遭受攻击。但根据威胁模型的不同,任何网站都有可能处于危险之中。一直以来,人们就知道国家行为者在不断地为各种各样的网站签发虚假的证书,包括出于政治原因,那些可能获得关注的小型网站。

部分密码比其他一些更好

实际上,绑定对象从客观上来说有更好的选择。举例来说,绑定终端实体证书(这是一些向特定域名签发的证书,比如为“wikipedia.org”签发的证书)并不是一个非常好的选择。这是因为在很多情形下,你可能想要或需要更改你的终端实体证书,而且在这些情形中,某些可能是不可预测的,或者不在你的控制范围内。

回到我们之前谈到的例子wikipedia.org;如果它们绑定了这个终端实体证书,然后密钥又遭到了攻击,那么它们就会惹上麻烦。记住,绑定是利用特定的身份来完成的(正如我们之前所讨论的,这可能是一个证书,密钥等)。因此,即使它们从相同供应商那里获取了另一个终端实体证书(并且它使用的是相同的密钥对),绑定也会把它视作错误的身份。

绑定中间证书能够让你获取更多的灵活性。如果我们绑定了一个中间证书,而不是终端实体证书,那么我们就可以将终端实体证书替换为另一个来自这个相同中间体的终端实体证书。但是,如果我们使用的是公共CA,那么它们就可能在没有告知我们的情况下更改其基础设施。

你可以选择绑定多个身份,并且设置几个备用身份,以便降低发生问题的可能性。但是什么才是最好的绑定实践,这是一个十分复杂的话题,我们在这里就不讨论了。你只需要知道,在你选择绑定对象时,一定要深思熟虑,再做出选择。

LEAVE A REPLY

Please enter your comment!
Please enter your name here