本文主要是介绍基于SSL中间证书的指纹识别技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
为创建一个HTTPS连接,浏览器需要建立从网站SSL证书到根CA证书的完整链条。中间证书组成了这一链条的中间部分。通常至少存在一个中间证书,有时也可能会更多。
如果网站正确配置了服务器并将所有必要的中间证书发送给了浏览器,建立链条的过程就会变得相对简单。但没有配置或错误配置中间证书却是最常见的HTTPS配置错误。
web服务器未提供中间证书的证书链示意图——由shiftordie.de提供
为避免网络上出现大量证书错误的情况,浏览器运营商都制订有应对这些错误配置的办法。Firefox是这样实现的,它接收到正确配置网站的中间证书后,建立了一个本地缓存池。于是当它创建其他连接时,就可以通过查看这个缓存空间来获得正确的证书。
但是,Firefox这样做还有两个弊端。第一,它制造了类似如下的一种幻觉:配置错误的网站在正常工作。一个缺乏经验的服务器管理员可能不会意识到他们网站的HTTPS连接仅仅是依靠浏览器的缓存才正常工作的。
另一个缺点是:研究人员发现了基于他们的特定缓存的唯一性来识别用户指纹的方法。
这项指纹识别技术通过加载多个错误配置的网站的资源来工作,每个这样的网站都使用不同机构颁发的证书。如果能够成功加载这类资源,就意味着你的Firefox浏览器在缓存中已经有了所需要的中间证书。如果不能加载,Firefox就会因为没有中间证书而无法创建连接。那时,某个中间证书是否已被缓存的情况会被记录并保存下来,而如果数据是唯一的,就能创建唯一的指纹。
此外,当今的证书颁发机构多如牛毛。很可能你知道一些大的CA,如Symantec、Comodo和GoDaddy。但你听说过HARICA吗?希腊学术和研究院证书颁发机构?专为希腊学术界提供SSL证书的?
这些针对性很强的CA为特定的地区、政府部门和其他专门社区服务。它们的根证书存在于全球数百万计的计算机内,尽管多数用户可能永远也不会见到它们的证书。
所以,尽管具有任何Symantec根证书的中间证书缓存可能不会对识别有很大帮助,但香港邮政的HARICA的中间证书却可以做到。
创造出这项技术的Alexander Klink在其博客中写道,“某个CA的客户大部分都集中在一个国家或地区,或者可能更特殊,这会让你推测出更多的信息——即,一个缓存了Deutsche Bundestag CA(Bundestag是德国立法机构之一,就像美国的众议院)的用户极可能在德国,而且很可能多多少少对政治有一点兴趣。”
Klink指出了该技术的几种不同的用法,包括将用户连接到一个Private Browsing会话(因为他们共享一个相同的缓存)并检测客户端设备是否为恶意软件分析沙盘工具,“这种工具很可能没有或只有极少几个普通的中间证书缓存。”
Firefox不像其它浏览器那样,它不执行AIA抓取。AIA抓取通过在服务器证书中嵌入信息来了解从何处获得所需中间证书的副本。讽刺的是,Firefox放弃了AIA抓取,是因为它自身在私密性方面有缺陷。相反,它选择了使用缓存,而使浏览器在这项指纹识别技术面前变得异常脆弱。
谷歌Chrome使用AIA抓取,因而对这项技术获得了免疫。Chrome可以在连接期间直接下载所需的中间证书,而想要创建一个它此前遇到过的中间证书的清单则是不可能的。
Klink创建了实例加以证明,你可以来看看这项技术的实际应用(当然你需要通过Firefox访问这个页面)。这项测试找到了325个不同的中间证书。
今年早些时候,Firefox实行了一个“字体白名单”,来防范这项可以通过你的计算机所支持的字体来识别你自身的技术。
Firefox开发人员指出,对这一新的中间证书缓存指纹识别技术进行防御可能并不容易,因为对它的防御很可能需要削弱浏览器的功能或禁用所有缓存。目前,他们还没有做出配套的变更计划。
而在学术界,来自宾夕法尼亚州Lehigh大学的研究人员最近创建了一个指纹识别方法,可以通过计算机的图形渲染能力来唯一确定它,并可以在不同的浏览器中进行跟踪。
我们可以认识到,指纹识别技术正变得越来越复杂,它甚至不需要查看你的特殊习惯或浏览记录,通常只需要依靠硬件/软件功能和设置就可以识别你。而我们平日里所认为的安全,或许并不如想象中那样牢不可破。
这篇关于基于SSL中间证书的指纹识别技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!