打造区块链应用的安全性 - 第 1 部分:区块链如何工作和使用私钥

作者:Stephen Evanczuk

投稿人:DigiKey 北美编辑

编者按:区块链技术及其交易方法的细节非常复杂,本系列文章由两部分组成,第 1 部分将概述区块链的结构及其交易过程。这将提供一个背景来了解为什么说保护私钥是区块链安全的核心所在,进而介绍一个用于保护私钥的交钥匙型解决方案。第 2 部分将展示开发人员可如何使用此基于硬件的交钥匙型解决方案更轻松地保护区块链交易。

安全问题推动了区块链技术的发展,该技术在加密货币背景下被许多开发人员所熟知。但是,区块链技术也可以为开发人员提供广泛适用的安全基础设施。它的分布式架构消除了对中央管理机构的需求,转而依靠私钥和加密方法来保护资产及其在各方之间的交换。因此,区块链系统的安全性关键取决于密钥的安全性以及它们在稳健算法中的正确使用。

尽管合适的算法是现成的,但是需要大量的专业知识和经验来实施,以开发安全的解决方案并将其集成到目标应用中。开发人员需要一种更易于获取的方法来确保新兴区块链应用中的密钥安全。

本文简要说明了区块链为何如此广受关注以及该技术的工作原理,然后介绍了来自 Infineon Technologies 的基于硬件的区块链安全解决方案。

区块链的兴起

区块链技术已经在社会的几乎每个领域引起了关注,其应用范围远至加密货币、身份保护、供应链管理和选举。区块链技术的去中心化、身份验证和记录保存组合通常被称为分布式账本技术,由于不需要任何中央管理机构对交易的执行进行监督或中介,而引起了人们的兴趣。

金融机构被区块链吸引是因为其具有巨大的潜力,可实现比现有技术和实践更快捷、成本更低的支付机制。在金融科技之外,关心身份验证和交易可追溯性的公司也被区块链维持真实且有效不可变(永远不变)的记录跟踪能力所吸引。区块链的不变性在于其构造方式,而其真实性则在于交易的执行方式。

就其核心而言,这项技术从根本上取决于对构建传递交易的区块所涉及的密钥的保护能力。尽管区块链技术及其交易方法的细节已经超出了本文的范畴,但是对区块链结构及其交易过程的粗略回顾可以提供一个背景,来了解为什么说私钥保护对于区块链安全至关重要。但是请注意,与本文中简化的概念性区块链技术概述中所提出的相比,现实世界中的区块链系统所依赖的结构和协议要复杂得多。

不可变链

顾名思义,区块链是用于记录一组交易的一连串区块。诸如比特币和以太坊之类的公共区块链中使用的结构细节和协议可能与供单个组织访问的私有区块链差异巨大。此外,还有一些半私有区块链,称为许可区块链,供一组协作实体访问。

但是,在每种类型的区块链中,区块的基础都建立在一些通用元素上(图 1):

  • 前一个区块的哈希值 (Prev_Hash),充当区块链中的链接
  • 区块的关联交易,由称为哈希树或 Merkle 树的根 (Tx_Root) 表示,包括交易 (Txi) 的哈希值 (Hashi)
  • 在生成有效区块中发挥作用的随机数
  • 记录区块创建时间的时间戳

比特币区块链的简化视图图 1:在比特币区块链的简化视图中,每个区块均包含时间戳、任意随机数、哈希树(或 Merkel 树),以及链中上一个区块的哈希值 (Prev_Hash)。(图片来源:Wikimedia Commons/CC-BY-SA-3.0)

在区块链中包含 Prev_Hash 值,为整个区块链的完整性提供了框架。黑客对区块n-1 中某些过去交易进行修改后,即便修正了区块n-1 中的 Merkle 树和 Tx_Root,也会导致区块n 中包含的哈希值失效。如下所述,区块链系统的分布式性质解决了此类哈希不匹配问题。

随机数在使区块链有效不可变的区块创建规则中发挥了重要作用。诸如比特币和以太坊加密货币之类的公共区块链在新区块自身的哈希值可用于扩展链之前,对其施加了人为约束。当收集一组 Prev_Hash 交易用于构建新区块时,这些规则通常要求新构建区块的最终哈希值低于某个指定的最大值。区块链系统中使用的哈希算法对于相同的输入生成相同的结果,但是输入中发生最小的变化也会返回不可预测的全新结果。

随机数提供了一种在不影响对区块链系统及其用户至关重要的元素的情况下更改哈希值的方法。然后,查找符合区块链规则的哈希值将成为一项使用不同随机数值的费力工作。通过处理一系列不同的随机数值并每次重新生成区块的哈希值,最终将找到符合规则的哈希值。从事这项工作的人顺理成章地被称为区块链矿工。

这个最终可接受的随机数被称为工作证明,因为它代表了计算密集型挖矿过程的成功完成。该过程和工作证明也反映了区块链系统的去中心化性质。在找到可接受的随机数后,矿工就获得了使用其新创建的区块扩展区块链的权利(以及加密货币挖矿中的相关报酬)。

其他矿工和区块链用户可以使用新区块和成功矿工发现的随机数计算哈希值,从而轻松确认新区块的有效性。

在区块链的去中心化架构中,区块链分布式网络中的各个节点会根据挖矿期间应用的同一套规则来分析每个区块和交易。因此,区块链可以自我修正,因为节点将忽略由于构造错误或哈希值不一致或不正确而导致的任何无效区块。加密货币和其他区块链系统充分利用区块链去中心化这一建立共识方面的优势,采用了其他机制,使黑客破坏这一过程的尝试变得更加复杂。

计算密集型工作证明规则与基于共识的区块验证流程相结合,为企图修改区块链中过去交易的黑客设置了不可逾越的障碍。任何企图从修改后的区块开始重建链的黑客都需要想方设法比矿工社区更快地完成工作证明。仅此一项,黑客就会陷入虚拟的处理资源军备竞赛,这些竞赛已从使用个人计算机上的图形处理单元发展到现场可编程门阵列,再到专门的专用集成电路。除了在计算资源上进行大量投资的障碍之外,仅随之而来的电量消耗要求都将令人望而却步。

即便解决了所有的处理工作和用电问题,黑客仍然面临着其修改后的链直接遭到基于共识的机制拒之门外的可能性。一连串区块中的结果出现实质性差异的可能性很小,会在受影响的区块链系统中造成轰动性的重大中断,而这可能需要罕见的硬分叉来创建全新版本的系统。

交易验证

先前有关区块链结构和过程的所有讨论均假设区块中以 Merkle 树表示的交易有效。如果无效交易以某种方式进入了区块链系统,则工作证明和去中心化区块验证之类的工作就成为徒劳。确实,区块链技术的基本动机在于其能够将一组有效交易可靠地包含在不可变的区块链中。从这个角度来说,当用户请求交易时,便开始生成区块。区块链技术依赖于使用请求用户所拥有的私钥的加密方法,而不需要中央管理机构来批准交易。

要发起请求,用户使用其私钥对请求进行数字签名,然后将请求提交到包含其他未确认交易的池中(图 2)。反过来,区块链矿工从该池中提取一组未确认的交易,并通过使用每个未确认交易中包含的请求者的公钥来验证每个请求是否源自各自的私钥所有者。在加密货币中,矿工会迅速绕过具有无效签名的交易请求,从而试图超越其他尝试在区块链中创建下一个区块的矿工。

私钥/公钥对为区块链交易提供基础的示意图图 2:私钥/公钥对为由请求者签名(左)并由矿工验证(右)的区块链交易提供了基础。(图片来源:Wikimedia Commons/CC-BY-SA-3.0)

确保私钥的私密性

在区块链的去中心化架构中,拥有一组交易的私钥将获得这些交易的所有权。没有客户服务代表随时准备追查丢失的资金或依照联邦法规进行恢复。出于这个原因,私钥丢失或被盗通常是大量加密货币损失这种头条新闻背后的原因,而分析师预计这种趋势将会持续下去。

区块链技术基本依赖于私钥进行交易签名和验证,这推动了保护这些机密的迫切需求。对于用户而言,安全性较差的密钥可能会成为其失去区块链系统参与控制权的方便之门。

黑客使用网络钓鱼攻击和其他类似的方法来获取在移动设备或计算机上随意存储的未加密私钥的访问权限。通常,加密密钥一样容易受到攻击。密钥生成软件通常允许用户输入用于在用户设备上加密密钥的密码。安全研究人员发现,这种方法具有所有基于密码的方法的通病:用户经常会使用容易猜到的弱口令来加密密钥。

即使当用户对私钥采取了必要的预防措施时,密钥也可能由于密钥生成软件的错误已经遭到破坏。基于软件的密钥生成器通常依赖于以可预测模式运行的随机数生成程序 (RNG),窃贼可以通过简单的脚本来破解这些模式。更糟糕的是,密钥生成算法中的编码错误或故障会使密钥容易受到熟悉该密钥生成软件实用程序的任何人的攻击。

即使完美实施稳健算法也无法保证提供足够的保护。用户仍然面临着真实的风险,即运行该理想化代码的系统还运行着已被黑客完全渗透的软件。在密钥生成软件运行时,它会与被渗透的软件共享内存和处理器周期,从而使黑客可以查看机密数据。

提供可信执行环境 (TEE) 的处理器通过在单独的执行空间中运行受信任和不受信任的代码提供了更高程度的保护。这种方法减少了通过操作系统、中间件或其他应用中的漏洞攻击算法和机密数据(例如私钥)的机会。

即使具有安全执行和密钥保护功能,许多硬件设备仍然容易受到更复杂的微架构和物理攻击的侵害。微架构攻击利用了处理器设计中的弱点。这些类型的攻击因 Meltdown 和 Spectre 而受到广泛关注,它们会利用微处理器内存访问和指令处理中的漏洞。

物理攻击则包括监测用电量、电磁辐射或时序特征的边信道攻击,到暴露受保护的信息等。在其他物理攻击中,黑客使用激光诱发故障或制造电源毛刺来推断内部信号。在更直接的物理攻击中,黑客拆掉半导体设备的外壳,并使用微探针试图读取数据和指令序列。

防范这些广泛的安全威胁需要一个安全控制器,其具有基本的安全功能,并针对用于攻击半导体设备的各种微架构和物理方法提供更深入的保护。Infineon Blockchain Security 2Go 入门套件 (BLOCKCHAINSTARTKITTOBO1) 围绕这种类型的安全控制器构建,提供了一种即时解决方案,可应对保护私钥(用于对交易进行签名以将其包含在区块链中)这一关键挑战(图 3)。

Infineon Blockchain Security 2Go 智能卡示意图图 3:Infineon Blockchain Security 2Go 智能卡简化了包括交易签名在内的区块链安全性,而不会暴露宝贵的私钥。(图片来源:Infineon)

区块链系统集成商无需花费时间来构建安全的签名方法,而只需为用户提供 Blockchain Security 2Go 入门套件或 Infineon Security 2GO 10 卡包 (BLOCKCHAIN10CARDSTOBO1) 中的智能卡。

结论

除了加密货币,区块链技术还有更广泛的适用性。但是,该技术也很复杂,并且依赖于需要强大安全机制的私钥,以防止对用户交易失去控制和区块链系统受损。

虽然设计人员可以选择花时间构建安全的签名方法,但 Infineon Blockchain Security 2Go 入门套件可提供交钥匙型区块链安全解决方案,以节省时间和资源。

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

Stephen Evanczuk

Stephen Evanczuk 拥有 20 多年的电子行业编辑经验,主题涉猎广泛,涵盖硬件、软件、系统以及包括物联网在内的各种应用。他拥有神经网络领域的神经科学博士学位,曾经从事航空航天领域大规模分布式安全系统和算法加速方法方面的工作。目前,他不是在撰写技术和工程文章,就是在研究深度学习在识别和推荐系统方面的应用。

关于此出版商

DigiKey 北美编辑