浅谈EV证书的作用及思考

2024-04-23 10:38
文章标签 作用 思考 证书 浅谈 ev

本文主要是介绍浅谈EV证书的作用及思考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文由Adam Caudill发表在其个人博客中。原文标题为Looking for value in EV Certificates。

当你搜索TLS(SSL)证书的时候会找到三种不同的类型,它们在价格和获取难度方面的差异很大。而你选择的种类将会影响浏览器对待你的证书的方式。在这篇文章中,我将探讨EV证书的存在意义,以及它是否真的划算?为了回答这些问题,我们首先需要了解三种类型的区别在哪儿。

很多人选择证书类型时往往优先对比价格,但一分价钱一分货,不同类型证书之间确实存在着实质的不同。而其差别在于,在证书颁发之前,CA会怎样对申请者进行核实。以下是对不同选项的简要概述:

DV(域验证)

域验证是今天最常见的类型;对这些证书,CA只会对申请者是否拥有域的控制权进行核实,不管其它事情。有很多方法来做这件事,例如要求申请人在web服务器上某个文件中放置一个随机数。这些证书也是最便宜的,通常比一顿快餐的花费还少,甚至在某些CA(如Let’s Encrypt)那里是免费的。

DV证书由CA颁发,极少或没有人的互动,通常在申请人方面也是自动完成的。ACME之类的协议允许完全自动申请和颁发过程,这使你可以轻易的申请和更新证书——可以预定处理,完全不需要人的介入。

过去,HTTPS被看作是网站可信度的标志;对于一些典型的钓鱼网站来说,获得一个有效的HTTPS证书非常困难。在一项研究中,Dhamija等人对22人进行了识别钓鱼网站的测试,其中17人未检查连接安全标识。这表明,连接安全标识在防止钓鱼攻击方面的效果不好。到如今,HTTPS已不再是一个识别钓鱼网站的有益信号,因为支持HTTPS 的恶意网站已经变得很常见。

DV证书的目的是启用加密联接,它并不会验证是谁在管理着域,或他们是否诚实,或他们的域是否合法——唯一的目的就是在浏览器和服务器之间启用安全联接。

OV(机构验证)

相比之下,机构验证(也叫高可信度)证书要贵得多,大约每年200美元(最多可达到500美元)。由于需要额外的文书工作,其申请过程更复杂。相比DV来说,增加的价格很大程度上是审核过程的额外工作造成的;除了域的验证控制之外,CA还将检查文件以核实申请者是否为合法机构(通过许可证或法人文件)。

EV(扩展验证)

EV证书最为昂贵,大约每年300美元(最多可能达到1000美元),EV证书的审核要求在OV证书的审核基础上有所增加,审核过程最为详细。它可能需要一些文件,如银行账户证明、地址证明、更详细的法人证明以及雇员作为证书申请人并得到授权的证明。

获得EV证书是一个复杂的过程,不仅需要时间,还需要技术人员的努力,以及公司行政部门提供所需要的文件。

CA的营销与竞争

由于多变的价格,CA会倾向于引导客户选择更贵的证书,毕竟OV和EV证书比DV证书产生的利润要多得多。由于少数CA提供免费DV证书以及业务规模庞大的Let’s Encrypt(其市场份额在去年已从5%增长到26%)的介入——从而导致了一场价格战,使这类证书没有了利润。这同时增加了CA对DV证书提供者的攻击,他们大力推动OV和EV的颁发。而这些攻击的焦点主要围绕DV证书在钓鱼攻击中的使用。

OV的价值值得商榷,至于它的使用情况到底怎么样,尽管有大肆宣传,但它并不比DV好。令CA感到苦恼的是,OV证书从浏览器那里得到的待遇和DV证书是一样的——两者之间没有明显差别,所以用户完全不知道你在OV证书上花了额外的钱。CA已经促使浏览器改变这一状况,使这些OV证书对得起它的成本,效果尚未显现。

另一方面,EV证书的确受到了浏览器的特殊对待,比如说Github:

(在某些浏览器中)带有机构名称和地点的绿色栏是EV证书独有的特点,这使用户可以了解到证书颁发给谁。正是这个特殊的字段把EV与其它类型的证书区分开,给营销带来了动力。

安全性对比:DV vs. OV vs. EV

OV和EV两种证书在价格和营销方面都有实实在在的区别,它们是否具有更好的安全性?NO!

不管你怎么看它,不管它卖得怎么样,事实是,全部三种证书的安全性都处在同一级别。它们之间唯一的实质性区别是,OV和EV证书包含一个额外的标识告诉浏览器该证书的类型。它们的加密方法是一样的,浏览器与服务器之间联接的安全性也没有变化。

那为什么不提升OV甚至EV证书的安全性呢?2008年的一篇学术论文对这个问题作了详细的解释。

EV证书和绑定

EV证书可以通过一种机制来增加安全性[1],也没有风险。对于从专门的中间商颁发证书的CA来说(这种情况并不常见),网站可用使用公钥绑定(HPKP)来绑定CA专门的DV中间商,保证只有EV证书可用——阻止DV证书(即使是来自同一个CA)被接受。尽管HPKP已经被预言即将死亡,但在小心使用的情况下,它仍是非常有用的。HPKP允许网站绑定用于特定证书的密钥,因此一旦浏览器见到只信任某些密钥的指示,它将会拒绝任何不匹配的密钥。但就像很多功能强大的工具一样,它也很容易出错。如果一个攻击者试图假冒一个站点(比如通过DNS劫持),这种绑定会阻止浏览器接受任何证书。它可能使网站崩溃较长的时间,且几乎没有恢复的能力。

有关一致性的争议

OV和EV证书的关键卖点——从客户营销和行业政策两方面讲——是这些证书的颁发都涉及一致性验证。争论在于,你可以更加信任那些使用这些证书的站点,就是因为某个CA的人核实过他们的身份。

但首先,这个争论依赖于一个关键点:用户知道DV和OV、EV的区别吗?很多时候,用户并不知道那个绿色的挂锁是什么,有何意义。如果它消失了,他们会注意吗?

基于浏览器的特殊对待,EV证书确实会被用户看到。为了防范钓鱼或类似攻击,EVE证书保证了用户必须知道它的存在,且在它消失的时候能够及时发现。而一旦用户发现了异样,他们就会采取措施,离开该页面。

“尽管由于缺乏一些主流移动端浏览器和大型网站的支持,EV的作用被限制住了,但它无疑是一道反钓鱼的防线。”所有主要桌面浏览器都显示EV信息,但一些移动浏览器(包括安卓版Chrome和Opera浏览器)都不显示EV信息。一些较早的文献建议对EV标识进行改进。Jackson等人要求研究参与者识别钓鱼攻击,发现‘扩展验证不能帮助用户防御任何攻击’。当测试新的安全标识时,Sobey等人得出结论,Firefox 3的EV标识并不影响在线购物决策。”

一小部分用户将会理解这一点,并对改变有所了解——对这部分用户来说,它是有益的。因为这提供了另一条信息,使他们可以评估网站的信任度。然而研究表明,很少有人理解这种差别,因而效用也很小。

因此,EV证书的价值不在于技术安全,而在于对用户认知的潜在促进,帮助用户在输入敏感信息前提供更多信息。这是EV相对OV和DV证书的优势所在。

总结

EV证书的价值受到限制,它确实帮助了一些用户,但这个比例很低,可以将它与HPKP结合起来,使攻击者劫持DNS和成功实施中间人或重定向攻击的难度加大,但这样会带来HPKP的固有问题,可能会使网站完全瘫痪。如果你需要保护一个哪怕一次钓鱼攻击也不能承受的高度敏感的系统,它可能是值得的,但对其它系统来说,则需要仔细考量。


[1]. 尽管它有自己的限制,但仍会有第三方的问题,如JavaScript,它会提供另一条攻击渠道,而不能通过这种方法解决。当使用第三方的内容时,你也就接受了他们的弱点和他们给你的系统增加的风险。如果你依赖于EV+HPKP,但用的JavaScript库是来自使用DV证书的CDN,那么这会提供一个攻击向量绕过EV+HPKP。这就是Jackson和Barth建议使用httpev://URL方案来隔绝https:// URLs的原因,以此,只有使用EV证书的资源才会被加载。

这篇关于浅谈EV证书的作用及思考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

Java 继承和多态的作用及好处

《Java继承和多态的作用及好处》文章讲解Java继承与多态的概念、语法及应用,继承通过extends复用父类成员,减少冗余;多态实现方法重写与向上转型,提升灵活性与代码复用性,动态绑定降低圈复杂度... 目录1. 继承1.1 什么是继承1.2 继承的作用和好处1.3 继承的语法1.4 子类访问父类里面的成

SpringBoot 中 CommandLineRunner的作用示例详解

《SpringBoot中CommandLineRunner的作用示例详解》SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的... 目录1、CommandLineRunnerSpringBoot中CommandLineRunner的作用

$在R语言中的作用示例小结

《$在R语言中的作用示例小结》在R语言中,$是一个非常重要的操作符,主要用于访问对象的成员或组件,它的用途非常广泛,不仅限于数据框(dataframe),还可以用于列表(list)、环境(enviro... 目录1. 访问数据框(data frame)中的列2. 访问列表(list)中的元素3. 访问jav

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

Kotlin运算符重载函数及作用场景

《Kotlin运算符重载函数及作用场景》在Kotlin里,运算符重载函数允许为自定义类型重新定义现有的运算符(如+-…)行为,从而让自定义类型能像内置类型那样使用运算符,本文给大家介绍Kotlin运算... 目录基本语法作用场景类对象数据类型接口注意事项在 Kotlin 里,运算符重载函数允许为自定义类型重

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小