主页 > imtoken限制中国用户该咋办 > 数字证书签名、Lets Encrypt和数字证书安全

数字证书签名、Lets Encrypt和数字证书安全

在目前的安全体系中,最重要的部分是数字安全加密体系,包括数字内容的加解密、数字签名和验证。 在本文中,虫虫将介绍数字证书签名,全球最大的网站Https免费签名Let\'sEncrypts,以及数字证书签名的安全性。概述 数字签名是遵循信息

在目前的安全体系中,最重要的部分是数字安全加密体系,包括数字内容的加解密、数字签名和验证。 在本文中,虫虫将介绍数字证书签名、全球最大的网站Https免费签名Let\'s Encrypts,以及数字证书签名的安全性。

概述

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

RFC

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

数字证书签名,Lets Encrypt和数字证书安全(图1)

x509格式

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

证书 ::= 序列 {

tbsCertificate TBSCertificate,

签名算法算法标识符,

signatureValue 位字符串 }

这些是 ASN.1 结构。 现代证书如下所示:

第一个对象包含将要签名的所有感兴趣的内容,因此我们将其称为“要签名的证书”

美国数字资产交易所的奥比特币_比特币使用的数字签名方案叫什么_中国央行数字货币比特币

第二个对象包含 CA 用于签署此证书的签名类型(例如:sha256)

最后一个对象不是对象,只是对应于 TBSCertificate 的 DER 编码签名的位

ASN.1

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

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

数字证书签名,Lets Encrypt和数字证书安全(图2)

分布式能源

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

每个字段名称都被忽略,如果我们的证书形成方式,将无法理解每个值的含义。

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

比如看Github的证书

数字证书签名,Lets Encrypt和数字证书安全(图3)

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

正如您在上面看到的,没有 RFC,我们真的不知道每个值对应的是什么。 openssl工具自带很多命令行工具,可以用来解析证书的内容。 只需使用 openssl x509 来验证:

openssl x509 -in cert.pem -noout -text

中国央行数字货币比特币_比特币使用的数字签名方案叫什么_美国数字资产交易所的奥比特币

数字证书签名,Lets Encrypt和数字证书安全(图4)

让我们加密数字签名

说到数字签名,不得不为Let\'s Encrypt竖起大拇指。 可以说它本身就支持整个互联网网站的HTTPS。 Let\'s Encrypt成立于2014年,是一家非营利性的认证机构。 目前为约2亿个网站提供数字证书认证,累计颁发证书10亿张。

数字证书签名,Lets Encrypt和数字证书安全(图5)

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

免费。 在 Let\'s Encrypt 之前,大多数证书颁发机构向网站管理员收取费用以获得证书。

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

数字证书签名,Lets Encrypt和数字证书安全(图6)

它是自动化的。 如果您遵循其标准化协议,则可以通过 API 请求、更新甚至撤销证书。 这与需要手动处理并需要一些时间来颁发证书的其他证书颁发机构形成对比。

如果网站管理员希望网站example-com(通过HTTPS)为用户提供安全连接,他们可以向Let\'s Encrypt签发申请证书,在证明自己拥有example-com域名后签发证书,他们可以使用它的证书与任何信任“让我们加密”的浏览器协商安全连接。

实际过程如下:

1. Alice使用RSA公钥在Let\'s Encrypt注册。

2. Alice 请求 Let\'s Encrypt 证书 example-com。

3. Let's Encrypt让Alice证明她是example-com的拥有者,需要发布一些数据上传到example-com/.well-known/acme-challenge/some_file。

4、Alice签名并上传签名后,让Let\'s Encrypt校验。

比特币使用的数字签名方案叫什么_美国数字资产交易所的奥比特币_中国央行数字货币比特币

5. Let's Encrypt 检查example-com 上的文件是否可访问,如果成功下载签名且签名有效,Let's Encrypt 向Alice 颁发证书。

这个过程的流程图如下:

数字证书签名,Lets Encrypt和数字证书安全(图7)

数字证书劫持

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

数字证书签名,Lets Encrypt和数字证书安全(图8)

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

CA 从多个有利位置验证域名,从而难以发起成功的攻击;

CA 机构通过 BGP 监控系统,检测可疑的 BGP 路由并延迟证书验证,以便网络运营商有时间对 BGP 攻击做出反应。

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

Let\'s Encrypt 攻击的工作原理

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

攻击看起来像这样:

Alice 通过在 example-com 上的某些数据上上传签名(example-com/.well-known/acme-challenge/some_file)来注册并完成域验证。 然后,成功从 Let\'s Encrypt 获取证书。

然后 Eve 使用新帐户和新的 RSA 公钥签署 Let\'s Encrypt,并请求恢复 example-com 域

美国数字资产交易所的奥比特币_中国央行数字货币比特币_比特币使用的数字签名方案叫什么

Let\'s Encrypt 要求 Eve 签署一些新数据并将其上传到 example-com/.well-known/acme-challenge/some_file。

Eve 制作了一个新的假密钥对并在 Let\'s Encrypt 上更新了它的公钥。 然后她要求 Let\'s Encrypt 检查签名。

Let\'s Encrypt 从 example-com 获取签名文件,签名匹配,Eve 被授予 example-com 域的所有权。

攻击示例如下:

数字证书签名,Lets Encrypt和数字证书安全(图9)

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

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

数字证书签名,Lets Encrypt和数字证书安全(图10)

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

签名=消息^e(modN)

人们可以很容易地制作一个(大多数情况下)满足以下等式的公钥:

e=1N=signaturemessage 可以轻松验证身份验证是否有效:

签名=消息(modsignaturemessage)

签名消息=0(修改签名消息)

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

美国数字资产交易所的奥比特币_比特币使用的数字签名方案叫什么_中国央行数字货币比特币

数字签名的安全性

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

通过该模型,生成一个密钥对,然后要求对任意消息进行签名。 在观察签名时,如果在某个时间点可以为未经请求的消息生成有效签名,则获胜。

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

数字证书签名,Lets Encrypt和数字证书安全(图11)

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

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

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

延展性。 大多数签名方案都是可延展的,这意味着给定一个有效的签名,它可以被篡改以使其成为一个不同但仍然有效的签名。 请注意,如果我是签名者,我通常可以为同一封邮件创建不同的签名。 目前尚不清楚这是否会对任何现实世界的协议产生影响,尽管比特币 MtGox 交易所将其资金损失归咎于该协议,并且在 2014 年 2 月,曾经最大的比特币交易所 MtGox 关闭并申请破产,指控攻击者利用可塑性攻击来耗尽他们的账户。

请注意,一种新的安全模型 SUF-CMA(针对强 EUF-CMA)试图将这种行为包含在签名方案的安全定义中,并且最近的一些标准(例如指定 Ed25519 的 RFC 8032)正在减轻其签名可延展性攻击该计划。 .

可以重新签。 这很容易解释。 要验证消息上的签名,通常不需要消息本身比特币使用的数字签名方案叫什么,但需要摘要。这样任何人都可以在不知道消息本身的情况下使用自己的密钥重新签名消息

碰撞能力。 一些方案允许制作将在多个消息下验证的签名。 更糟糕的是,Ed25519 的设计允许人们制作公钥和签名,从而非常有可能验证任何消息。 (在某些实现中,例如 libsodium比特币使用的数字签名方案叫什么,这已得到修复。)

下图概述了证书替换攻击:

数字证书签名,Lets Encrypt和数字证书安全(图12)

最后,一个好的签名方案会积累有效和安全的方法,所以在使用的时候选择main方法一般是没有问题的。 而如果你想重新发明轮子,自己实现更复杂的加密协议,就需要考虑这些问题。