DPKI:利用区块链消除中心化PKI的缺点

DPKI:利用区块链消除中心化PKI的缺点

众所周知,数字证书技术是常用的辅助工具之一,没有它,开放网络中的数据保护就不可能实现。 然而,众所周知,该技术的主要缺点是对颁发数字证书的中心的无条件信任。 ENCRY 技术与创新总监 Andrey Chmora 提出了一种新的组织方法 公钥基础设施 (公钥基础设施, PKI),这将有助于消除当前的缺点,并使用分布式账本(区块链)技术。 但首先要说的是。

如果您熟悉当前的公钥基础设施的工作原理并了解其主要缺点,则可以跳到我们下面建议更改的内容。

什么是数字签名和证书?互联网上的交互总是涉及数据传输。 确保数据安全传输符合我们所有人的利益。 但什么是安全? 最受欢迎的安全服务是机密性、完整性和真实性。 为此,当前使用非对称加密方法或使用公钥的加密方法。

让我们从以下事实开始:要使用这些方法,交互主体必须拥有两个单独的配对密钥 - 公钥和秘密。 在他们的帮助下,我们提供了上面提到的安全服务。

信息传输的保密性如何实现? 在发送数据之前,发送订户使用接收者的公钥对开放数据进行加密(密码转换),而接收者使用配对的密钥对接收到的密文进行解密。

DPKI:利用区块链消除中心化PKI的缺点

如何实现传输信息的完整性和真实性? 为了解决这个问题,创建了另一种机制。 开放数据未加密,但应用加密哈希函数的结果 - 输入数据序列的“压缩”图像 - 以加密形式传输。 这种散列的结果称为“摘要”,并使用发送订阅者(“见证人”)的密钥进行加密。 加密摘要的结果是获得数字签名。 它与明文一起传输给接收订户(“验证者”)。 他解密证人公钥上的数字签名,并将其与应用加密哈希函数的结果进行比较,验证者根据收到的开放数据独立计算该函数。 如果它们匹配,则表明数据是由发送订户以真实且完整的形式传输的,并且未被攻击者修改。

DPKI:利用区块链消除中心化PKI的缺点

大多数处理个人数据和支付信息的资源(银行、保险公司、航空公司、支付系统以及税务服务等政府门户网站)都积极使用非对称加密方法。

数字证书与它有什么关系? 这很简单。 第一个和第二个过程都涉及公钥,并且由于它们起着核心作用,因此确保密钥实际上属于发送者(在签名验证的情况下为见证人)或接收者,而不是属于接收者,这一点非常重要。替换为攻击者的密钥。 这就是为什么存在数字证书来确保公钥的真实性和完整性。

注:公钥的真实性和完整性的确认方式与公共数据的真实性和完整性完全相同,即使用电子数字签名(EDS)。
数字证书从哪里来?受信任的证书颁发机构或证书颁发机构 (CA) 负责颁发和维护数字证书。 申请人向CA申请颁发证书,在注册中心(CR)进行身份验证,并收到CA颁发的证书。 CA 保证证书中的公钥完全属于为其颁发证书的实体。

如果您不确认公钥的真实性,那么攻击者在传输/存储该密钥时可以用自己的密钥替换它。 如果发生替换,攻击者将能够解密发送订阅者传输给接收订阅者的所有内容,或者自行决定更改开放数据。

只要非对称加密可用,就可以使用数字证书。 最常见的数字证书之一是 SSL 证书,用于通过 HTTPS 协议进行安全通信。 在不同司法管辖区注册的数百家公司参与颁发 SSL 证书。 主要份额集中在五到十个大型可信中心:IdenTrust、Comodo、GoDaddy、GlobalSign、DigiCert、CERTUM、Actalis、Secom、Trustwave。

CA和CR是PKI的组成部分,PKI还包括:

  • 打开目录 – 提供数字证书安全存储的公共数据库。
  • 吊销证书清单 – 一个公共数据库,提供已撤销公钥的数字证书的安全存储(例如,由于配对私钥的泄露)。 基础设施主体可以独立访问该数据库,也可以使用专门的在线认证状态协议(OCSP),这简化了验证过程。
  • 证书用户 – 已与 CA 签订用户协议并根据证书中的公钥验证数字签名和/或加密数据的 PKI 服务主体。
  • 关注 – 拥有与证书中的公钥配对的密钥并已与 CA 签订订户协议的 PKI 主体。 订户可以同时是证书的用户。

因此,公钥基础设施的可信实体(包括 CA、CR 和开放目录)负责:

1、核实申请人身份的真实性。
2. 分析公钥证书。
3、为身份得到可靠确认的申请人颁发公钥证书。
4. 更改公钥证书的状态。
5. 提供有关公钥证书当前状态的信息。

PKI 的缺点是什么?PKI 的根本缺陷是可信实体的存在。
用户必须无条件信任CA和CR。 但是,实践表明,无条件的信任会带来严重的后果。

过去十年来,该领域发生了几起与基础设施脆弱性相关的重大丑闻。

— 2010 年,Stuxnet 恶意软件开始在线传播,使用从 RealTek 和 JMicron 窃取的数字证书进行签名。

- 2017年,谷歌指控赛门铁克颁发大量伪造证​​书。 当时,赛门铁克是产量最大的 CA 之一。 在Google Chrome 70浏览器中,已于1年2017月XNUMX日之前停止支持该公司及其附属中心GeoTrust和Thawte颁发的证书。

CA 受到损害,结果每个人都受到影响——CA 本身以及用户和订户。 对基础设施的信心受到削弱。 另外,数字证书在政治冲突的背景下可能会被封锁,这也会影响很多资源的运行。 这正是俄罗斯总统政府几年前所担心的事情,他们在 2016 年讨论了创建国家认证中心的可能性,该中心将为 RuNet 上的网站颁发 SSL 证书。 目前的情况是,即使是俄罗斯的国家门户网站 由美国公司 Comodo 或 Thawte(赛门铁克的子公司)颁发的数字证书。

还有一个问题——问题 用户的主要身份验证(身份验证)。 如何在没有直接个人接触的情况下识别已联系 CA 请求颁发数字证书的用户? 现在,根据基础设施的能力,可以根据具体情况解决这个问题。 从公开登记册中获取一些信息(例如,有关请求证书的法人实体的信息);如果申请人是个人,则可以使用银行办事处或邮局,并使用身份证件(例如护照)确认其身份。

以冒充为目的而伪造凭证的问题是一个根本问题。 让我们注意到,由于信息论的原因,这个问题没有完整的解决方案:如果没有先验的可靠信息,就不可能确认或否认特定主题的真实性。 通常,为了进行验证,有必要出示一套证明申请人身份的文件。 有许多不同的验证方法,但没有一种方法可以完全保证文件的真实性。 因此,申请人身份的真实性也无法得到保证。

如何消除这些缺点呢?如果 PKI 当前状态下的问题可以用中心化来解释,那么可以合理地假设去中心化将有助于部分消除已发现的缺点。

去中心化并不意味着存在可信实体 - 如果您创建 去中心化的公钥基础设施 (去中心化公钥基础设施, DPKI),那么 CA 和 CR 都不需要。 我们放弃数字证书的概念,使用分布式注册表来存储公钥信息。 在我们的例子中,我们将寄存器称为线性数据库,由使用区块链技术链接的各个记录(块)组成。 我们将引入“通知”的概念来代替数字证书。

在拟议的 DPKI 中,接收、验证和取消通知的流程如下:

1. 每个申请人在注册时填写表格,独立提交通知申请,然后创建存储在专门池中的交易。

2. 有关公钥的信息以及所有者的详细信息和其他元数据存储在分布式注册表中,而不是存储在数字证书中,而在集中式 PKI 中,数字证书的颁发由 CA 负责。

3. 申请人身份真实性的验证是由DPKI用户社区共同完成的事后验证,而非CR。

4. 只有此类通知的所有者才能更改公钥的状态。

5.任何人都可以访问分布式账本并检查公钥的当前状态。

注意:乍一看,社区对申请人身份的验证似乎并不可靠。 但我们必须记住,如今所有数字服务的用户都不可避免地留下数字足迹,而且这一过程只会继续获得动力。 法人实体的开放电子登记册、地图、地形图像数字化、社交网络——所有这些都是公开可用的工具。 它们已经在记者和执法机构的调查过程中成功使用。 例如,只要回忆一下Bellingcat或联合调查小组JIT的调查就足够了,该小组正在研究马来西亚波音飞机坠毁的情况。

那么去中心化的公钥基础设施在实践中如何运作呢? 让我们详细讨论一下技术本身的描述,我们 2018年获得专利 我们理所当然地将其视为我们的专业知识。

想象一下,某个所有者拥有许多公钥,其中每个密钥都是存储在注册表中的特定交易。 在没有 CA 的情况下,您如何理解所有密钥都属于该特定所有者? 为了解决这个问题,创建了一个零交易,其中包含有关所有者及其钱包的信息(从中扣除将交易放入注册表的佣金)。 空交易是一种“锚”,后续带有公钥数据的交易将附加到该“锚”上。 每个这样的事务都包含一个专门的数据结构,或者换句话说,一个通知。

通知是一组结构化数据,由功能字段组成,包括有关所有者公钥的信息,其持久性通过放置在分布式注册表的关联记录之一中来保证。

下一个逻辑问题是零交易是如何形成的? 空交易与后续交易一样,是六个数据字段的聚合。 在零交易的形成过程中,涉及到钱包的密钥对(公钥和配对密钥)。 这对密钥在用户注册钱包时出现,将从中扣除在注册表中放置零交易以及随后进行通知操作的佣金。

DPKI:利用区块链消除中心化PKI的缺点

如图所示,依次应用SHA256和RIPEMD160哈希函数生成钱包公钥摘要。 这里RIPEMD160负责数据的紧凑表示,其宽度不超过160位。 这很重要,因为注册表不是一个廉价的数据库。 公钥本身输入到第五个字段中。 第一个字段包含与前一个事务建立连接的数据。 对于零交易,该字段不包含任何内容,这将其与后续交易区分开来。 第二个字段是用于检查交易连通性的数据。 为了简洁起见,我们将第一个和第二个字段中的数据分别称为“链接”和“检查”。 这些字段的内容是通过迭代哈希生成的,如下图链接第二个和第三个交易所示。

DPKI:利用区块链消除中心化PKI的缺点

前五个字段的数据通过电子签名进行认证,该电子签名是使用钱包的密钥生成的。

就这样,空交易被发送到池中,并在验证成功后输入注册表。 现在您可以将以下交易“链接”到它。 让我们考虑一下除零以外的交易是如何形成的。

DPKI:利用区块链消除中心化PKI的缺点

首先引起您注意的可能是大量的密钥对。 除了已经熟悉的钱包密钥对之外,还使用普通密钥对和服务密钥对。

普通的公钥是一切的开始。 该密钥涉及外部世界展开的各种程序和流程(银行和其他交易、文档流等)。 例如,普通密钥对中的密钥可用于生成各种文档(付款订单等)的数字签名,而公钥可用于在随后执行这些指令时验证该数字签名,前提是它已验证。

服务对发布给注册的DPKI主体。 这对的名称与其用途相对应。 请注意,在形成/检查零交易时,不使用服务密钥。

让我们再次阐明这些键的用途:

  1. 钱包密钥用于生成/验证空交易和任何其他非空交易。 钱包的私钥只有钱包的所有者知道,他也是许多普通公钥的所有者。
  2. 普通公钥的用途与在集中式 PKI 中为其颁发证书的公钥类似。
  3. 服务密钥对属于DPKI。 密钥颁发给注册实体,并在为交易(零交易除外)生成数字签名时使用。 公共用于在将交易发布到注册表之前验证交易的电子数字签名。

因此,有两组键。 第一个包括服务密钥和钱包密钥 - 它们仅在 DPKI 上下文中有意义。 第二组包括普通密钥 - 它们的范围可能有所不同,并由使用它们的应用程序任务决定。 同时DPKI保证了普通公钥的完整性和真实性。

注意:服务密钥对可能为不同的 DPKI 实体所知。 例如,对于每个人来说可能都是一样的。 正是由于这个原因,在生成每笔非零交易的签名时,都会使用两个密钥,其中之一是钱包密钥——只有钱包的所有者知道,他也是许多普通钱包的所有者公钥。 所有按键都有自己的含义。 例如,始终可以证明交易是由注册的 DPKI 主体输入注册表的,因为签名也是在秘密服务密钥上生成的。 并且不可能存在滥用行为,例如 DOS 攻击,因为所有者为每笔交易付费。

零一之后的所有交易都以类似的方式形成:公钥(不是零交易情况下的钱包,而是来自普通密钥对)通过两个哈希函数 SHA256 和 RIPEMD160 运行。 第三字段的数据就是这样形成的。 第四个字段包含附带信息(例如,有关当前状态、到期日期、时间戳、所使用的加密算法的标识符等的信息)。 第五个字段包含服务密钥对中的公钥。 在它的帮助下,数字签名将被检查,因此它将被复制。 让我们证明这种方法的必要性。

回想一下,交易被输入到池中并存储在那里,直到被处理。 存储在池中会带来一定的风险——交易数据可能被伪造。 所有者使用电子数字签名来验证交易数据。 用于验证该数字签名的公钥在交易字段之一中明确指示,并随后输入注册表中。 交易处理的特殊性在于,攻击者能够自行更改数据,然后使用他的密钥对其进行验证,并指示配对的公钥以验证交易中的数字签名。 如果仅通过数字签名来确保真实性和完整性,那么这种伪造行为将不会被注意到。 然而,如果除了数字签名之外,还有一个额外的机制来确保所存储信息的归档和持久性,则可以检测到伪造。 为此,只需将所有者的真实公钥输入注册表即可。 让我们解释一下这是如何工作的。

让攻击者伪造交易数据。 从密钥和数字签名的角度来看,可以有以下选项:

1. 攻击者将自己的公钥放入交易中,而所有者的数字签名保持不变。
2. 攻击者在其私钥上创建数字签名,但保持所有者的公钥不变。
3. 攻击者在其私钥上创建数字签名,并将配对的公钥放入交易中。

显然,选项1和2是没有意义的,因为它们在数字签名验证过程中总会被检测到。 只有选项 3 才有意义,如果攻击者在自己的密钥上形成数字签名,那么他被迫在交易中保存与所有者的公钥不同的配对公钥。 这是攻击者强加伪造数据的唯一方法。

我们假设所有者有一对固定的密钥 - 私钥和公钥。 使用该对中的密钥通过数字签名来验证数据,并且公钥在交易中指示。 我们还假设该公钥先前已输入注册表并且其真实性已得到可靠验证。 然后,交易中的公钥与注册表中的公钥不对应的事实将表明伪造。

要总结。 在处理所有者的第一笔交易数据时,需要验证输入注册表的公钥的真实性。 为此,请从注册表中读取密钥并将其与安全边界(相对不易受到攻击的区域)内所有者的真实公钥进行比较。 如果密钥的真实性得到确认,并且在放置时保证其持久性,则通过将后续交易中的密钥与注册表中的密钥进行比较,可以轻松确认/反驳该密钥的真实性。 换句话说,注册表中的密钥用作参考样本。 所有其他所有者交易均以类似方式处理。

交易通过电子数字签名进行认证 - 这就是需要密钥的地方,而且不是一个,而是同时两个 - 服务密钥和钱包密钥。 由于使用了两个密钥,确保了必要的安全级别——毕竟,服务密钥可以为其他用户所知,而钱包的密钥只有普通密钥对的所有者知道。 我们将这种两密钥签名称为“合并”数字签名。

非空交易的验证是使用两个公钥执行的:钱包和服务密钥。 验证过程可以分为两个主要阶段:第一个是检查钱包公钥的摘要,第二个是检查交易的电子数字签名,这是使用两个密钥形成的相同的综合签名(钱包和服务)。 如果确认数字签名的有效性,则经过额外验证后,交易将被输入寄存器。

DPKI:利用区块链消除中心化PKI的缺点

可能会出现一个逻辑问题:如何检查一笔交易是否属于以零交易形式“根”的特定链? 为此,验证过程又补充了一个阶段——连接性检查。 这是我们需要前两个字段的数据的地方,到目前为止我们已经忽略了这些数据。

假设我们需要检查第 3 笔交易是否确实发生在第 2 笔交易之后。 为此,使用组合哈希方法,对 2 号交易的第三、第四和第五字段的数据计算哈希函数值。 然后,将来自事务No.3的第一字段的数据与先前获得的来自事务No.2的第三、第四和第五字段的数据的组合散列函数值进行串联。 这一切也是通过两个哈希函数SHA256和RIPEMD160来运行的。 如果接收到的值与事务 2 的第二个字段中的数据匹配,则检查通过并确认连接。 下图中更清楚地显示了这一点。

DPKI:利用区块链消除中心化PKI的缺点
DPKI:利用区块链消除中心化PKI的缺点

一般来说,生成通知并将其输入寄存器的技术看起来与此完全相同。 下图直观地展示了形成通知链的过程:

DPKI:利用区块链消除中心化PKI的缺点

在本文中,我们不会详细讨论毫无疑问存在的细节,而是回到讨论去中心化公钥基础设施的想法本身。

因此,由于申请人本人提交了通知注册申请,通知注册申请不是存储在 CA 数据库中,而是存储在注册表中,因此应考虑 DPKI 的主要架构组件:

1. 有效通知注册(RDN)。
2. 撤销通知登记册 (RON)。
3. 暂停通知登记(RPN)。

有关公钥的信息以哈希函数值的形式存储在 RDN/RON/RPN 中。 还值得注意的是,当有关普通公钥的状态(撤销、暂停等)的信息输入到注册表中时,这些可以是不同的注册表,也可以是不同的链,甚至可以是作为单个注册表的一部分的一条链。该数据结构的第四个字段的形式为相应的代码值。 DPKI 的架构实现有多种不同的选择,其中一种或另一种的选择取决于多种因素,例如用于存储公钥的长期存储器的成本等优化标准。

因此,DPKI 即使不是更简单,至少在架构复杂性方面也可以与集中式解决方案相媲美。

主要问题仍然是—— 哪个注册表适合实施该技术?

对注册表的主要要求是能够生成任何类型的交易。 分类账最著名的例子是比特币网络。 但在实现上述技术时,会出现一定的困难:现有脚本语言的局限性、缺乏处理任意数据集的必要机制、生成任意类型交易的方法等等。

我们 ENCRY 试图解决上述问题并开发了一个注册表,我们认为该注册表具有许多优点,即:

  • 支持多种类型的交易:它既可以交换资产(即执行金融交易),也可以创建任意结构的交易,
  • 开发人员可以使用专有的编程语言 PrismLang,它在解决各种技术问题时提供了必要的灵活性,
  • 提供了一种处理任意数据集的机制。

如果我们采用简化的方法,则会发生以下操作序列:

  1. 申请人在DPKI注册并收到数字钱包。 钱包地址是钱包公钥的哈希值。 钱包的私钥只有申请人知道。
  2. 注册主体有权访问服务密钥。
  3. 主体生成零交易并使用钱包的密钥通过数字签名对其进行验证。
  4. 如果形成的交易不为零,则使用两个密钥(钱包和服务密钥)通过电子数字签名进行认证。
  5. 主体向池中提交交易。
  6. ENCRY网络节点从池中读取交易并检查数字签名以及交易的连接性。
  7. 如果数字签名有效并且连接得到确认,则它准备将事务输入寄存器。

这里,注册表充当分布式数据库,存储有关有效、取消和暂停通知的信息。

当然,去中心化并不是万能的。 主用户认证的根本问题并没有在任何地方消失:如果目前对申请人的验证是由CR进行的,那么在DPKI中建议将验证委托给社区成员,并利用财务动机来刺激活动。 开源验证技术是众所周知的。 这种验证的有效性已在实践中得到证实。 让我们再次回顾一下在线出版物 Bellingcat 进行的一系列备受瞩目的调查。

但总的来说,出现了以下情况:DPKI 是纠正(如果不是全部的话)集中式 PKI 的许多缺点的机会。

订阅我们的 Habrablog,我们计划继续积极报道我们的研发,并关注 推特,如果您不想错过有关 ENCRY 项目的其他新闻。

来源: habr.com

添加评论