数字证书签名-Lets-Encrypt和证书劫持 (数字证书签名验证报告)

教程大全 2025-07-09 10:43:55 浏览

现在安全体系中,最重要的一部分是数字安全加密体系,包括数字内容的加密解密,数字签名和验证。本文虫虫给大家介绍一下数字证书签名以及世界最大的网站HtTPS免费签名Let’s Encrypts,及数字证书签名的安全性等问题。

概述

数字签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过,怎么样可以达到这个效果呢?一般是对信息做不可逆的哈希计算得到一个哈希值。在把信息发送出去时,把这个哈希值加密后做为一个签名和信息一起发出去。接收方在收到信息后,会重新计算信息的哈希值,并和信息所附带的哈希值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过。数字签名在现在现代安全体系中非常重要基础,可以用来确保文件的完整性、防止文件篡改以及身份认证等。首先我们说说几个常见的数字证书基本概念:

RFC的意思是Request For Comments,中文对应为请求注释,它是一堆描述不同协议的文本文件。如果想了解ssl,TLS(新的SSL)和x509证书(用于SSL和TLS的证书)如何工作,例如,想编写自己的OpenSSL,则必须阅读相应的TLS RFC。:的X509证书对应的rfc5280和TLS(1.2)对应的rfc5246。

x509是为非正式的互联网电子邮件,IPsec和WWW应用程序定义的证书规范,x509发展了三个版本,现在广泛使用的RFC v3,其结构如下:

这些是ASN.1结构。现代的证书就是这样的:

它看起来很小,但是每个对象都有一定深度。

TBSCertificate是最大的TBSCertificate,包含一堆有关客户端,CA,客户端的公钥等信息。

当然不会像这样发送证书。而使用DER将其编码为二进制格式。

每个字段名都会被忽略,如果我们证书的形成方式,那么将不可能理解每个值的含义。

每个值都编码为TLV三元组:[TAG,LENGTH,VALUE]

例如,查看Github的证书

右边是DER编码证书的十六进制转储,左边是ASN.1格式的译文。

如上面所见,如果没有RFC,我们真的不知道每个值对应什么。openssl工具中自带了很方面的命令行工具,可以用来解析证书的内容,简单使用

openssl x509 -in cert.pem -noout -text即可

Let’s Encrypt数字签名

说到数字签名就不能不对Let’s Encrypt竖起大拇指,可以说它以一己之力为整个互联网网站撑起了HTTPS的天。Let’s Encrypt成立于2014年,是一家非盈利性的认证机构,目前为约2亿个网站提供了数字证书认证,累积签发了10亿张的证书。

Let’s Encrypt成功的关键取决于两点:

(1) 它是免费的。Let’s Encrypt之前,大多数证书颁发机构向要获得证书的网站管理员收取费用

Let’s Encrypt证书和商业证书的区别:

(2) 它是自动化的。如果遵循其标准化协议,则可以通过API请求,续订甚至吊销证书。与此形成对比的是其他证书机构需要手动处理并需要一些时间来颁发证书。

如果网站管理员希望网站example-com(通过HTTPS)向用户提供安全的连接,则可以向Let’s Encrypt发出申请证书,并在证明自己拥有域example-com并颁发证书后,便可以使用该证书来与任何信任”Let’s Encrypt”的浏览器协商安全连接。

这个实际流程如下:

这个过程的流程图如下:

数字证书劫持

那么,我们假设Alice并不会实际拥有example-com,但是她通过中间劫持的方法实现了步骤5中进行加密。自从Let’s Encrypt推出以来,这一直是个问题。事实上普林斯顿大学的一组研究人员在Bamboozling证书颁发机构的BGP中证明了这一点:他们执行了一个真实的BGP攻击演示,以合乎道德的方式从顶级CA获得虚假证书。为了评估PKI的脆弱性,研究人员收集了180万个证书的数据集,发现这些数据集中绝大多数域都可以成功伪造证书。

该论文中,研究人员提出了两种解决方案,以进行补救,或至少降低这些针对KPI攻击的风险:

最近Let’s Encrypt实现了第一个解决方案:多角度域验证。该方法改变了上述流程的第5步:在新的策略下Let’s Encrypt会从多个位置下载域名的证书验证。

Let’s Encrypt攻击的工作原理

安德鲁·艾耶(Andrew Ayer)在2015年发现了对Let’s Encrypt的攻击。在其中,Andrew提出了一种方法来控制已经验证了域的Let’s Encrypt帐户(例如example-com)

攻击是这样的:

Lets

攻击的图示如下:

在上述攻击中,Eve设法创建了一个有效的公钥,该公钥验证了给定的签名和消息。数字签名不能唯一地标识密钥或消息

根据RSA的工作原理(这是现代证书交换链的基础):

对于固定签名signature和(PKCS#1 v1.5)消息message,公钥(e,N)必须满足以下方程式以验证签名:

一个人可以很容易地制作一个(大部分时间)满足以下等式的公钥:

可以轻松验证验证是否有效:

根据定义,最后一行是正确的。

数字签名的安全性

由于理论领域与应用领域之间安全性证明与已实施协议之间存在差距。密码学中的签名通常使用EUF-CMA模型进行分析,该模型代表自适应选择消息攻击下的存在不可伪造性。

通过模型中,生成了一个密钥对,然后要求签署一些任意消息。在观察签署的签名时,如果可以在某个时间点对未请求的消息产生有效的签名,将获胜。

不幸的是,尽管现代签名方案似乎通过了EUF-CMA测试,但它们往往表现出一些令人惊讶的特性。论文《Automated Analysis of Subtle Attacks on Protocols that Use Signatures》中Dennis Jackson,Cas Cremers,Katriel Cohn-Gordon和Ralf Sasse试图对使用签名的协议进行细微的攻击的自动化分析,试图列出这些令人惊讶的特性以及受它们影响的签名方案(然后找到一堆)在使用正式验证的协议。

保守的排他性(CEO)/破坏性的排他性(DEO):

(1) 密钥替换攻击(CEO),其中使用不同的密钥对或公钥来验证给定消息上的给定签名。

(2) 消息密钥替换攻击(DEO),其中使用不同的密钥对或公共密钥来验证新消息上的给定签名。

请注意,一种新的安全模型SUF-CMA(用于强EUF-CMA)试图将这种行为包含在签名方案的安全定义中,并且一些最新标准(如RFC 8032指定Ed25519)正在缓解对其签名方案的延展性攻击。。

下图中概括了证书替代攻击:

最后,好的签名方案会将有有效的安全的方法都会累积完善起来,所以在使用时候选择主要的方法一般是没有问题。而如果你要重复造轮子,要自己实现一套更为复杂的加密协议,则需要考虑这些问题。


网银支付的时候金邦达U盾显示“未找到证书公钥”

要下载数字证书 登录工行个人网上银行,进入“客户服务-U盾管理-U盾自助下载”,下载证书信息并安装. 然后在开始菜单所有程序里找到工行人个网上银行证书工具软件打开金邦达工具箱 点击“证书密码”,选择“校验”,在弹出的口令窗口中输入当初你设置的U盾密码后点“确定”。应该就行了.

财付通数字证书介绍有哪些?

财付通数字证书相当于网上的身份证,它以数字签名的方式通过第三方权威认证有效地进行网上身份认证,帮助各个实体识别对方身份和表明自身的身份,具有真实性和防抵赖功能。 与物理身份证不同的是,数字证书还具有安全、保密、防篡改的特性,可对网上传输的信息进行有效保护和安全的传递。

我的工行U盾在下载时总提示你的数字证书正常,不能重新下载证书。那我怎样将它下到我的U盾里呀

你的U盾里本来就已经下载好了数字证书 你要做的就是把这个数字证书安装到你的电脑上 启动>程序>工行个人网上银行证书工具软件>捷德>智能卡管理 然后右键选择‘存在’的硬件令牌:显示硬件令牌对象 选择‘证书’>‘查看证书’ 再选择‘存入文件’。 比方命名为‘A’,存放在桌面 然后在桌面上选中刚才保存的‘A’证书文件,双击点开 最后选择‘安装证书’就可以了。 安装完成之后就可以正常使用U盾了

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐