王慧文, 王亮亮
(上海电力大学 计算机科学与技术学院, 上海 200090)
区块链技术是以比特币、以太坊等数字加密货币为代表的基础核心技术。2008年10月31日,中本聪(Satoshi Nakamoto)发表论文《Bitcoin:A peer-to-peer electronic cash system》[1],首次提出区块链技术。区块链改变了人们对于传统交易的认知,允许在一个分布式网络中进行交易,而不需要中央机构的参与,大大降低了中央机构的成本,将交易信息安全地存储在区块链中,使用密码技术保证记录安全。区块链在金融、能源、医疗、贸易、政务等各个领域均有重要应用前景,是目前最有潜力触发第5轮颠覆性革命的核心技术。
文献[1]指出区块链是一种去中心化的分布式公共账本,具有不可篡改性,按照时间戳将区块用哈希函数的方式链接而成。从交易、时间戳服务器、工作量证明机制、网络、激励、回收磁盘空间、简化的支付验证、合并和分割交易额、隐私和计算等十大部分描述了如何建立了一套去中心化的、不可篡改的分布式账本技术。区块链技术的出现有限解决了拜占庭将军问题[2-3]和双重支付问题[4-5]。拜占庭将军问题是一个分布式一致性问题,指在一个不可靠通信通道上通过点对点通信达成一致性是几乎不可能的。比特币技术采用了一种基于哈希函数的工作量证明机制(PoW机制),双重支付问题指同一笔钱被消费2次,解决双重支付问题类似于数字货币的防伪。比特币通过将所有的交易全网公开,用时间戳对交易排序,投入计算资源对交易进行确认来解决双重支付的问题。
分布式账本、共识机制、密码学和智能合约是区块链的4大核心技术。分布式记账与传统记账最大的区别就在于记账的人数,分布式记账完全公开透明,用户与用户之间毫无关系,大大提高了数据的安全性和不可篡改性。分布式记账采用Token来激励用户,对于系统的发展具有良好的促进作用。智能合约是在计算机系统上,当一定条件被满足的情况下可以被自动执行的合约。智能合约的特点是自动化和可执行性。智能合约本质上是一段写入区块链网络的可执行代码,参与方安装合约,利用区块链技术手段执行合约,以计算机指令的方式实现了传统合约的自动化处理。文献[6]讨论了智能合约的原理、应用和意义。共识机制解决并保证每一笔交易在所有记账节点上的一致性和正确性。区块链的的共识机制使其在不依靠中心化组织的情况下,依然能够大规模高效协作地完成运转。文献[7]先将区块链技术从具体应用场景中抽象出来,提取出其5层核心架构,并对其中数据、网络、共识3层基础架构进行了详细说明。这3层架构包含了区块链系统中的3大核心技术:密码学、共识算法和网络。比特币区块链的整个体系中大量使用了公开的加密算法来保证数据安全,如Merkle树哈希数算法、椭圆曲线算法和哈希算法。比特币系统中使用的两个哈希函数分别是SHA-256和RIPEMD160。Merkle树可以用来对交易数据进行完整性验证,其树状结构能大量减少数据传输和计算的复杂程度。比特币中使用基于secp256k1椭圆曲线数学的公钥算法进行签名与验证签名,保证了身份不可伪造性和签名不可抵赖性。文献[8]分析了区块链技术的应用挑战,对区块链在信息安全领域的发展进行了总结与展望。文献[9]探讨了区块链技术的应用以及所存在的监管问题和安全问题。
区块链运行机制如下。
步骤1 用户节点发起一笔交易,该节点把交易广播到相邻的节点。
步骤2 当一个节点收到一笔交易时先检验这个交易,检验通过后再转发这个交易,检验内容包括:双花;输出额不能超过输入额;对交易进行检验脚本,确定返回值为TRUE;检查交易是否被本节点接收,被接受的交易会被节点放入交易池,然后进行转发。
步骤3 打包区块,通过共识机制选出具有记账权的主节点,拥有记账权的矿工将交易打包成区块。
步骤4 一个节点接收到新区块,检验通过后接收并转发区块。
区块链通过时间戳将区块排序,由哈希函数链接,组成链式结构用来存储数据。除了第一个区块和最后一个区块外,每一个区块都有且仅有一个前驱区块和一个后继区块。区块链的最长链原则就是节点始终认为最长链是有效的。当多个矿工在挖矿时,如果同时挖到了2个区块,则先不入链,继续在此块的基础上挖块,谁先挖到,就把谁的区块入链。一个区块包括区块头和区块体2部分,区块头包括前一区块所有交易数据的哈希值、本区块的时间戳、Merkle Root和难度值等部分;区块体包括各种交易信息,随着时间戳的不断增强,区块链的长度也不断增长。区块链的数据结构如图1所示。区块链底层数据是交易记录。时间戳包含在区块头中,时间戳确定区块的大致写入时间,每一个区块都有一个时间戳,区块链通过时间戳实现了时序性,时间戳是区块数据的存在性证明。区块链将原始交易记录经过哈希运算,将哈希值与数字组成定长字符串作为时间戳保存在区块头中。
图1 区块链的数据结构
Merkle树是一种树状结构。树状数据结构对快速查询和检验大规模数据完整性具有显著优势。在时间复杂度上,树结构优于其他结构。在比特币系统中,Merkle树归纳一个区块中的所有交易,Merkle Root是整个区块中交易的哈希值,叶子节点是交易数据的哈希值,非叶子节点是子节点连接成字符串后的哈希值。区块头中只需记录根节点哈希,树中的任何一个节点被篡改,根节点哈希就会改变,因此其他节点可以验证块中的交易数据是否被篡改。Merkle树的示例如图2所示。由图2可知,以数据D0,D1,D2,D3构造Merkle树,如果D2数据被篡改,N2,N5 和 Root作为父节点也会随之改变。发现根节点Root 的数值发生变化后,根据子节点发现被篡改的数据,沿着路径 Root-> N5-> N2,最多通过 O(lgN)时间就可以快速找到被篡改的交易数据 D2。
图2 Merkle树举例
交易层实现区块链的核心业务,即在2个“地址”之间进行可靠的、具有公信力的数据传递。区块链中的“地址”通常是在用户的控制下利用公钥加密算法(例如ECC)生成。其中生成的公钥信息将用于交易的输入地址或输出地址,私钥信息由用户自己保存,用于对交易签名。区块链中的“交易”记录了用户之间数据交互的过程,通常包括输入地址、输出地址和交易内容等信息。交易内容在数字货币应用中主要包括交易的金额,在其他应用中可能代表一个字符串或者一个证书ID。比特币交易地址和地址持有人真实身份的关联相互隔断,由此保护隐私,达到匿名的效果。
零知识证明是由GOLDWASSER S等人在20世纪80年代初提出,具有完备性、合理性和零知识性3个基本特性。
(1)完备性 在证明方和验证方都诚实的情况下,如果双方都遵循证明过程,并且运算正确,则该零知识证明一定成功,验证方也一定能够接受证明方。
(2)合理性 证明方不可伪造。
(3)零知识性 执行完证明,验证方仅仅得知证明方拥有此知识,并不清楚知识本身的内容。
环签名允许组成员在不暴露其身份(即签名者匿名性)的情况下代表组签名消息,因此无法确定同一个组成员是否签发了2个签名。在假设每个用户已经与某个标准签名方案的公钥相关联的情况下,用户可以通过简单地收集包括他/她自己的所有组成员的公钥来形成一个组,使得这些转移组织成员可能完全不知道被征召入伍。
混币通过割裂交易双方,即买和卖的联系而提高加密货币的隐私性和匿名性,从而实现隐私保护,避免被追踪。
对数据进行同态加密后,将得到的结果解密,解密获得的输出与同方法加密原始数据的输出是相同的。固态加密不需要先解密就可以多加密数据进行计算操作,能够在原有的基础上使用区块链技术。
区块链根据所覆盖的范围可分为3种类型。
即所有人和机构都可以随时进入共有链的系统进行读取数据、交易验证和竞争紧张权。公有链是完全开放的和完全去中心化的,具有保护用户免受开发者的影响、访问门槛低、所有数据默认公开等3个特点。
私有链与公有链相比,将权限进一步缩小,仅对单独的个体或组织开放。因为私有链被中心化机构控制,因此不具有去中心化。一般应用在对于数据管理和访问比较严格的一些组织。具有高速交易、可控性强、更有效的隐私保护、交易成本极低甚至没有交易成本、有助于保护其基本的产品不被破坏等特点。
联盟链的数据访问权限介于私有链和公有链之间,但结合了私有链和公有链的优势,通过私有链提高了数据隐私和安全,利用公有链实现了部分去中心化。联盟链通过内部预选确定记账人,它的数据不会默认公开共享,只有内部记账节点才拥有访问权限。具有更好的保护各方隐私、互相监督、互相发展、部分去中心化等特点。
传统的可搜索对称加密(Searchable Symmetric Encryption,SSE)机制是先付费后使用,这种情况对用户不公平,因为云服务器可能返回错误的结果。文献[10]将区块链与SSE相结合,提出了一种基于区块链解决可搜索对称加密中公平性的SSE方案,保证了用户和服务器双方的公平。如果用户不诚实,他就无法从服务器获得正确的结果,同时服务器在这个搜索过程中也无法获得与明文相关的任何信息。如果服务器不诚实,除了丢失押金外,将无法获得服务费,自动受到惩罚。此方案中的用户不需要在本地验证结果,不仅可以支持单关键字搜索,还可以扩展到多关键字搜索,具有语义安全性和可行性的优点。然而,区块链上的交易时间很长,使得在实验测试阶段的搜索时间很短。
目前物联网第三方服务提供商的服务需要支付费用,并且还需要传感器所有者和传感器数据用户的信任。为了解决可扩展性和信任问题,实现支付的自动化,文献[11]提出了一种基于区块链的代理重加密方案。系统加密后将物联网数据存储在分布式云中。为了共享收集到的物联网数据,系统在传感器和数据用户之间建立运行时动态智能合约,而无需可信第三方的参与。该方案允许数据仅由所有者和智能合约中的人员可见。
随着物联网的发展,云上数据共享趋势得到发展。数据共享带来了许多安全和隐私的问题。在保证数据机密性和对云中数据的细粒度访问控制的过程中,一些研究人员提出了基于属性的加密(Attribute-Based Encryption,ABE)方案,其中以密钥策略ABE(KP-ABE)最为突出。然而,最近的研究表明,被撤销的用户和云服务器之间的串通攻击违反了数据的机密性。文献[12]提出一个安全且有效的代理重加密(Proxy Re-Encryption,PRE)方案。该方案包含一个内积加密(Inner Product Encryption,IPE)方案。其中,如果私钥的内积与数据所有者指定的一组属性关联,并且关联的密文等于零,则可以解密数据。该方案使用一个区块链网络,其记账节点充当代理服务器并对数据执行重新加密。为了保证数据的机密性和防止合谋攻击,将数据分为2部分,一部分存储在区块链网络上,另一部分存储在云上。
区块链可以提高效率、降低成本、增强数据安全,但严重的隐私问题,阻碍区块链的广泛应用。文献[13]通过增加基于身份的加密系统,在许可区块链中的非交易案例基础上,提出了一种改进的实用的方案,有效地提高了非交易应用的数据保密性。方案可以通过将明文加密为密文来隐藏信息,而无需使用环签名、同态加密和零知识证明等技术。该方案不仅避免了传统公钥基础设施(Public Key Infastructure,PKI)系统中复杂的证书管理和颁发,而且具有较高的安全性,既能防止伪装攻击,又能防止被动攻击,具有有效性和实用性。
数据机密性和可追溯性是云环境中的2个主要问题。虽然目前已有许多研究者基于CP-ABE来实现细粒度访问控制和数据保密性的平衡,但在数据所有者端和用户端都无法达到有效跟踪的目的。文献[14]提出了一个可追踪的数据共享方案TraceChain。在TraceChain中,数据通过一个新的CP-ABE方案加密,命名为E-CP-ABE。TraceChain利用E-CP-ABE和区块链构建密码系统。数据所有者可以通过E-CP-ABE加密数据并在云上共享。为保证数据的可跟踪,引入了区块链来共享E-CP-ABE中的系统参数,因为数据所有者和用户都可以通过区块链查询系统参数的交易状态,从而实现了框架的双重跟踪模式。
基于属性的加密,特别是密文策略的基于属性的加密,在数据共享中发挥着重要作用。在数据共享过程中,密钥不包含用户的具体信息,用户可以在不被发现的情况下与其他用户共享密钥以获取利益。属性授权可以从任何属性集生成密钥,如果密钥被滥用,则很难判断被滥用的私钥是来自用户还是来自属性权限。此外,在分布式网络中,访问控制结构通常会泄漏敏感信息,而基于属性的加密效率是其应用的瓶颈。针对上述问题,文献[15]提出了一种高效、隐私保护的可追踪属性加密方案。该方案利用区块链技术保证数据的完整性和不可否认性,并利用预加密技术快速生成密文。此外,在匿名访问控制结构中使用属性bloom过滤器隐藏属性。当密钥被滥用时,可以审计被滥用密钥的来源。
即使区块链在某种程度上支持完整性和不可否认性,数据或设备的机密性和隐私性也不会得到保护。网络中的任何人都可以看到数据的内容,以便进行验证和挖掘。为了解决这些隐私问题,文献[16]提出了一种新的ABE技术的物联网应用隐私保护区块链架构。通过安全性、隐私性和数值分析验证了该模型的有效性。
灵活监管智能电网对电网运营至关重要[17-18]。文献[19]提出了一种基于联盟区块链的智能电网数据聚合和监管机制,其签密算法可应用于联盟区块链中的多维数据采集和多接收方。在监管过程中,控制中心、电网运营商和设备供应商接收来自区块链的固定高度的区块,并解密获得明文。每个接收器为个人用户分析多维度数据并制定相应的控制政策。电网运营商通过智能反馈合同实现用户电力调节。
文献[10]提出了使用用户口令加密密钥信息的方案,实现了增强密钥管理安全及代理间接验证用户身份的目的。文献[11]介绍了隐私保护算法在智能电网中的应用。文献[20]提出了一种基于区块链的隐私保护和高效数据聚合方案。在每个时隙中,根据用户用电量数据与平均值的差异选择记账节点,以保证选择的公平性。记账节点将所有用户的数据记录到区块链中,并在组内发布区块链,以确保消息的完整性。为了防御同一组中其他用户的窥探,采用化名来保护用户的身份,每个用户都将自己的数据与多个化名关联起来。此外,采用Bloom过滤器实现了快速认证。
2015年,文献[21]提出了基于Rabin密码系统的环签名方案,通过与已有的环签名比较,证明了该环签名方案在签名和验证阶段的有效性。文献[22]提出了一种基于环签名的轻量级隐私保护方案。该方案具有匿名性、唯一性、可链接性和不可伪造性,可应用于具有双重开销和双重投票保护中。为了将交易记录与真实身份联系起来,文献[23]提出了一种不可链接的硬币混合方案,允许用户在不信任第三方的情况下混合他们的比特币。该混合方案利用环签名和椭圆曲线数字签名算法(Elliptic Curve Digital Signature Algorithm,ECDSA)来隐藏地址间的硬币转移。为了实现智能电表(SM)和服务提供商(SP)之间的安全通信,文献[24]提出了一种新的智能电网SMs和SPs密钥管理方案,引入了区块链的概念,并利用Merkle树对SM的性能进行了优化。
随着智能家居、智能城市和智能万物的出现,物联网已经成为一个具有影响力和潜力的领域。思科公司预计2020年将拥有500亿台物联网设备,但是这些物联网设备通常在计算、存储和网络容量方面受到限制,比智能手机等其他终端设备更容易受到攻击。文献[25]阐明了物联网存在的安全问题,重点说明了区块链技术应用于物联网体系中的实际效果,指出区块链技术与物联网结合应用的必要性。文献[26]指出物联网与区块链的结合促进了服务和资源的共享;允许我们以可加密验证的方式自动化现有的、耗时的工作流。文献[27]分析了作为比特币底层技术的区块链对物联网安全的有效性。文献[28]针对轻量级物联网设备,提出了一种基于雾计算技术的去中心化的身份验证和访问控制机制。文献[29]提出了一种基于分类账本的物联网设备去中心化认证框架DIoTA。文献[30]将区块链与物联网的结合称为物链(Blockchain of Things,BCoT),并对BCoT进行了深入的研究。为了提高物联网设备高可用性、实时数据传输、可扩展性、安全性、恢复能力和低延迟,文献[31]提出了一种基于区块链的分布式云架构。该架构具有软件定义网络,使得网络边缘的控制器雾节点满足所需的设计原则。该结构是一种基于区块链技术的分布式云架构,为物联网中最具竞争力的基础设施提供低成本、安全和按需访问。此外,将计算资源带到物联网的边缘而使核心网络中的流量能够安全和简化,并在物联网设备和计算资源之间具有最小的端到端延迟。文献[32]介绍了一种结合私钥、公钥和区块链等多种轻量级密码原语优点的混合方法,开发了一种以病人为中心的电子病历访问控制。
区块链是以分布式账本、共识机制、密码学和智能合约等4大计算机技术为核心依托的分布式数据库,具有点对点传输、不可篡改、不可伪造和去中心化等性质。本文对区块链技术的基本原理、关键技术、基础框架做了综述,并简要介绍了区块链技术在密码学信息安全的研究现状及其在智能电网和物联网领域的相关应用方案,以期为未来的研究提供参考与启发。