DPKI:利用区块链解决集中式PKI的弊端



众所周知,数字证书技术是一种常见的辅助工具,如果没有它,就不可能在开放网络中进行数据保护。 但是,该技术的主要缺点不是对颁发数字证书的中心的无条件信任,这不是秘密。 ENCRY的技术和创新总监Andrey Chmora提出了一种组织公钥基础结构( PKI )的新方法,该方法将有助于消除当前的缺陷,并使用分布式注册表技术(区块链)。 但是首先是第一件事。

如果您熟悉现有公共密钥基础结构的操作原理并知道其密钥缺陷,那么您可以立即转到我们建议更改的内容的描述。

什么是数字签名和证书?
Internet上的交互总是涉及数据的传输。 我们都有兴趣确保以安全的方式传输数据。 但是什么是安全性? 最需要的安全服务是机密性,完整性和真实性。 为此,当前使用非对称密码学或具有公共密钥的密码学的方法。

首先,为了使用这些方法,交互的主题必须具有两个单独的配对密钥-公共密钥和秘密密钥。 在他们的帮助下,我们提供了我们上面提到的安全服务。

如何实现信息传输的机密性? 在发送数据之前,发送方使用接收者的公钥对打开的数据进行加密(加密转换),然后他使用一对密钥对接收到的密文进行解密。



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



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

数字证书与它有什么关系? 一切都很简单。 在第一个和第二个过程中,涉及公钥,由于公钥起着核心作用,因此确保公钥真正属于发件人(见证人,如果是签名验证)或收件人真正而不是被攻击者的密钥取代,这一点非常重要。 为此,有一些数字证书可以确保公钥的真实性和完整性。

注意:公开密钥的真实性和完整性的验证方式与开放数据的真实性和完整性相同,即使用电子数字签名(EDS)。

数字证书来自哪里?
数字证书的颁发和维护是受信任的证书颁发机构或证书颁发机构(CA)的责任。 申请人请求在CA中颁发证书,在注册中心(CR)中通过身份证明,并在CA中获得证书。 CA保证证书中的公钥属于颁发它的实体。

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

只要存在非对称密码,就使用数字证书。 SSL证书是最常见的数字证书之一,用于通过HTTPS协议进行交互的安全模式。 在各个司法管辖区注册的数百家公司从事SSL证书的发行。 主要份额落在五到十个大型可信任中心上:IdenTrust,Comodo,GoDaddy,GlobalSign,DigiCert,CERTUM,Actalis,Secom,Trustwave。

CA和CR是PKI组件,还包括:

  • 开放目录 -可公开访问的数据库,可提供可靠的数字证书存储。
  • 证书吊销列表是一个可公开访问的数据库,该数据库提供可靠的已撤销公钥数字证书存储(例如,由于私有密钥的泄露)。 基础架构参与者可以自己访问此数据库,也可以使用专门的在线认证状态协议(OCSP),从而简化了验证过程。
  • 证书用户 -已与CA签订用户协议并根据证书中的公钥验证数字签名和/或加密数据的PKI服务实体。
  • 订户是PKI服务的实体,拥有私钥,证书中的公钥对,并已与CA签订了订户协议。 订户可以同时是证书的用户。

因此,公钥基础结构的受信任实体(包括CA,CR和开放目录)负责:

1.验证申请人的身份。
2.分析公共密钥证书。
3.为申请人签发公钥证书,其身份经过真实验证。
4.更改公钥证书的状态。
5.提供有关公钥证书当前状态的信息。

PKI的缺点是什么?
PKI的基本缺点是存在受信任实体。
用户当然必须信任CA和MD 。 但是,正如实践所示,无条件信任充满了严重的后果。

在过去的十年中,该地区发生了几起与基础架构漏洞相关的重大丑闻。

-在2010年,Stuxnet恶意软件开始在网络上传播,该网络使用RealTek和JMicron的被盗数字证书进行了签名。

-2017年,谷歌指责赛门铁克发行了大量伪造的证书。 在当时,赛门铁克是最大的CA之一。 在Google Chrome 70浏览器中,该公司及其关联公司GeoTrust和Thawte颁发的证书的支持将在2017年12月1日停止。

CA遭到破坏,结果每个人都遭受了损害-CA本身,用户和订户都遭受了损害。 对基础设施的信心遭到破坏。 此外,数字证书可能会在政治冲突中被阻止,这也将影响许多资源的工作。 这正是几年前俄罗斯总统政府所担心的,2016年,他们在会上讨论了建立国家认证中心以向Runet中的网站颁发SSL证书的可能性。 当前的状况是,甚至俄罗斯的州门户网站也使用美国公司Comodo或Thawte(赛门铁克的“女儿”)发行的数字证书。

还有另一个问题- 用户基本身份验证(身份验证)问题 。 在没有直接个人联系的情况下,如何识别申请了数字证书的CA的用户? 现在,这取决于基础架构的功能,视情况决定。 如果申请人是自然人,则可以使用开放式注册表中的某些信息(例如,有关申请证书的法人的信息),可以使用银行办公室或邮局,并且其身份由身份证明文件(例如护照)确认。

为了冒充他人而伪造证书的问题属于基本证书的范畴。 请注意,由于信息论的原因,不存在针对此问题的完整解决方案:如果没有先验可靠的信息,就无法确认或否认特定受试者的真实性。 通常,为进行验证,有必要出示证明申请人身份的一组文件。 验证方法有很多,但都不能完全保证文件的真实性。 因此,也不能保证确认申请人身份的真实性。

如何消除这些缺点?
如果当前的PKI问题可以通过集中化来解释,那么逻辑上的假设是,分散化将有助于部分消除所指出的缺点。

去中心化并不意味着存在受信任的参与者-如果您创建了一个公共密钥的去中心化基础架构 (Decentralized Public Key Infrastructure, DPKI ),那么您既不需要CA也不需要中央办公室 。 我们放弃了数字证书的概念,而是使用分布式注册表来存储有关公钥的信息。 在我们的案例中,我们将寄存器称为线性数据库,该数据库由通过区块链技术连接的独立记录(块)组成。 代替数字证书,我们引入“通知”的概念。

在提议的DPKI中,接收,检查和取消通知的过程将是什么样的:

1.每个申请人通过在注册过程中填写表格自行发送通知申请,此后形成存储在专用池中的交易。

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

3.事实证明,申请人的身份是由DPKI用户社区而不是CR共同努力验证的。

4.仅此类通知的所有者可以更改公钥的状态。

5.每个人都可以访问分布式注册表并检查公钥的当前状态。

注意:乍一看,社区的身份验证似乎不太可靠。 但是,我们必须记住,目前,所有数字服务用户肯定会留下数字足迹,而这一过程只会继续增强。 公开的法律实体电子注册表,地图,地形图数字化,社交网络都是公开可用的工具。 它们已被记者和执法机构成功用于调查。 例如,只要回想起Bellingcat或联合调查小组JIT的调查,该调查就研究了马来西亚波音飞机坠毁的情况。

那么,去中心化的公共密钥基础架构将如何在实践中起作用? 让我们关注技术本身的描述,该描述已于2018年获得专利并正确考虑了我们的专有技术。

想象有一个拥有许多公共密钥的所有者,其中每个密钥都是存储在注册表中的某个事务。 在没有CA的情况下,如何理解所有密钥都属于该特定所有者? 为了解决此问题,创建了一个零交易,其中包含有关所有者和他的钱包的信息(从中扣除将交易放入注册表的佣金)。 零事务是一种“锚”,后面的事务中将包含有关公钥的数据。 每个此类事务都包含一个专门的数据结构,或以另一种方式包含一个通知。

通知是一个结构化的数据集,由功能字段组成,并包含有关所有者的公共密钥的信息,其持久性由放置在分布式注册表的相关条目之一中来保证。

下一个逻辑问题是如何形成零交易? 零事务(与后续事务一样)是六个数据字段的集合。 在零交易的形成期间,涉及钱包的密钥对(公共密钥和密钥对)。 该密钥对出现在用户注册其钱包时,从该钱包中扣除在注册表中过帐零交易的佣金,以及随后发生的带有通知的操作的佣金。



如图所示,通过连续应用SHA256和RIPEMD160哈希函数来生成公共钱包密钥的摘要。 RIPEMD160负责紧凑显示位容量不超过160位的数据。 这很重要-因为注册表不是便宜的数据库。 公钥本身在第五字段中输入。 第一个字段包含与上一个事务建立连接的数据。 对于零交易,此字段不包含任何内容,这使其与后续交易区别开来。 第二个字段是用于检查事务连接性的数据。 为了简洁起见,我们将第一和第二字段的数据分别称为“捆绑”和“检查”。 这些字段的内容是通过迭代哈希方法生成的,如以下图中链接第二个和第三个事务的示例所示。



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

一切都将零事务发送到池,并在成功验证(如下图所示)之后将其输入注册表。



现在,您可以将以下交易“捆绑”到其中。 考虑如何形成零以外的事务。



可能令您印象深刻的第一件事是大量的密钥对。 除了已经熟悉的钱包钥匙对之外,还使用普通和官方钥匙对。

普通的公用密钥实际上是所有事物都已针对其启动的密钥。 该密钥涉及周围世界中展开的各种过程和过程(银行和其他交易,单据流等)。 例如,来自普通对的密钥可用于生成各种文件的数字签名-付款单等,并且是公开可用的-验证此数字签名并随后执行这些命令(视其有效性而定)。

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

再一次,我们将阐明密钥的用途:

  1. 钱包密钥用于生成/验证零交易和任何其他非零交易。 钱包的秘密密钥仅由钱包所有者知道,而钱包所有者同时是许多普通公共密钥的所有者。
  2. 单个公用密钥的目的类似于在集中式PKI中为其颁发证书的公用密钥。
  3. 服务密钥对归DPKI所有。 秘密密钥被发布给注册实体,并用于电子数字交易的形成(零除外)。 Public用于在将交易放入注册表之前验证其数字签名。

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

注意:各种DPKI实体可能知道服务密钥对。 例如,每个人都可能是相同的。 因此,在生成每个非零交易的签名时,将使用两个秘密密钥,其中之一是钱包密钥-只有钱包所有者(也是许多普通公共密钥的所有者)才知道。 所有键都有自己的含义。 例如,您可以始终证明交易是由注册的DPKI实体输入到寄存器中的,因为生成的签名包括在秘密服务密钥上。 而且不会有滥用,例如DOS攻击,因为所有者要为每笔交易付费。

跟随零的所有事务都以类似的方式生成:通过两个哈希函数SHA256和RIPEMD160运行公钥(但不是钱包,如零事务,而是来自普通密钥对)。 这样就形成了第三场的数据。 在第四个字段中输入伴随信息(例如,有关当前状态,有效期,时间戳,所用密码算法的标识符等信息)。 在第五个字段中,来自服务密钥对的公共密钥。 在它的帮助下,将检查EDS,然后将其复制。 我们证明需要这种方法。

回想一下,已将事务输入池中并存储在池中,直到处理完毕为止。 池中的存储存在一定风险-这些交易可以被伪造。 所有者证明数字签名交易的数据。 用于检查此数字签名的公共密钥以显式形式在事务字段之一中指示,然后输入到注册表中。 , , . , . , , , . . , .

. :

1. .
2. , .
3. .

, 1 2 , . 3, , , . .

, — . , . , . , .

. . ( ). , / . , . .

— - , , — . — , . “” .

, , : . : — , — , , , ( ). , .



: “” ? — . - , .

, , №3 №2. - , №2. №3 - , №2. - SHA256 RIPEMD160. №2, . .




. :



, , , , .

, , , , DPKI :

1. ().
2. ().
3. ().

// -. , , , (, .) . DPKI , , , .

, DPKI , .

?

— . — . : , , , .

ENCRY , , , , :

  • : ( ), ,
  • PrismLang, ,
  • .

, :

  1. DPKI . — - . .
  2. .
  3. .
  4. , : .
  5. .
  6. ENCRY , .
  7. , .

, , .

, . : , DPKI , . . . - Bellingcat.

: DPKI — , , PKI.

, , , ENCRY.

Source: https://habr.com/ru/post/zh-CN461761/


All Articles