基于SSL中间证书的指纹识别技术

2024-04-23 10:38

本文主要是介绍基于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中间证书的指纹识别技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/928564

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2