关于区块链的安全和隐私

打印 上一主题 下一主题

主题 872|帖子 872|积分 2616

背景

区块链技术在近年来发展敏捷,被认为是安全盘算的突破,但其安全和隐私题目在不同应用中的部署仍处于争论核心。

目标

对区块链的安全和隐私进行全面综述,帮助读者深入相识区块链的相干概念、属性、技术和系统。

布局

首先介绍区块链的根本概念,然后描述其安全属性,接着介绍共识算法,最后讨论安全和隐私技术。

区块链概述

定义

区块链是一种去中心化的分布式账本技术。它由一系列链式的数据区块构成,每个区块包含了一定时间内的交易记录。这些区块按照时间顺序依次相连,形成了一条不可篡改、不可伪造的账本链条。

区块链的特点:


  • 去中心化。去中心化意味着没有中心化的控制机构,所有节点共同参与账本的维护和更新
  • 不可篡改。不可篡改是由于其采用了复杂的加密算法和共识机制,使得一旦数据被记录在区块链上,就很难被修改
  • 安全透明。安全透明则保证了交易的安全性和可追溯性,所有参与者都可以检察账本中的交易记录
  • 去信任化。去信任化让参与者无需依赖第三方的信任背书就能进行安全的交易和交互。
劈头

2008年:发布第一版设计文档

2009年:发布区块链的第一个开源实现(bitcoin-core),比特币系统是基于区块链的首个应用

工作原理

以比特币网络为例,客户端发起交易,矿工收集交易到区块并验证,通过共识协议广播区块以获得网络认可,当其他节点验证交易有效后,区块被添加到区块链中。



根本本领(比特币系统的实现中)

3个基础且重要的本领:


  • 哈希链存储。
  • 数字署名
  • 添加新块的共识机制
通过将一系列盛行的安全技术(如哈希链默克尔树数字署名)与共识机制进行巧妙结合,比特币区块链既可以防止比特币的双重付出题目,又可以防篡改

哈希链存储。

基于哈希链存储比特币系统中构件区块的基础:


  • hash pointer。是数据加密的hash值,可用于检查数据是否被篡改。区块链就是使用hash指针将区块连接起来的。
  • Merkle tree。

默克尔树:A Merkle tree is defined as a binary search tree with its tree nodes linked to oneanother using hash pointers



数字署名

A digital signature establishes the validity of a piece of data by usinga cryptographic algorithm.

有三个核心组件构成了数字署名方案:


  • 密钥天生算法(key generation algorithm)。创建2个key,一个私钥,一个公钥。私钥用于对数据署名,公钥用于验证数据的有效性。
  • 署名算法(signing algorithm)。使用私钥对输入信息进行署名。
  • 验证算法(verification algorithm)。使用署名、数据信息和公钥作为输入,使用公钥验证数据信息的署名,并返回一个布尔值。
一个定义精良且安全的署名算法应该有两个属性:


  • 有效的署名必须是可验证的
  • 署名在存在性上是不可伪造的
椭圆曲线数字署名算法(Elliptic Curve Digital Signature Algorithm (ECDSA)):在比特币的区块链中使用该算法对交易数据进行署名。

比特币系统中,采用去中心化的身份管理,密钥对由用户本身天生,想生产多少就天生多少。公钥用作账户,私钥用作密码。

共识机制

共识机制被用于寻求网络中的大多数节点就单个状态更新告竣一致,以确保环球账本(区块链)的扩展安全,并防止不诚实的尝试或恶意攻击。

交易模子

介绍了比特币采用的未花费交易输出(UTXO)模子和以太坊采用的账户交易模子,以及它们对办理双重花费题目的影响。

2个具有代表性的区块链交易级别的模子:


  • 未花费交易输出模子(the unspent transaction outputs (UTXO)model)。在比特币系统中使用。
  • 基于帐户的交易模子(the account-based transaction model)。在以太坊中使用。
The UTXO Model

任何一个交易,它总是由多少个输入(Input)和多少个输出(Output)构成,一个Input指向的是前面区块的某个Output,只有Coinbase交易(矿工奖励的铸币交易)没有输入,只有凭空输出。所以,任何交易,总是可以由Input溯源到Coinbase交易。

这些交易的Input和Output总是可以串联起来:



给定任何一个区块,盘算当前所有的UXTO金额之和,等同于自创世区块到给定区块的挖矿奖励之和。

想要确定某个人拥有的比特币,并无法通过某个账户查到,必须知道此人控制的所有UTXO金额之和。

在钱包程序中,钱包管理的是一组私钥,对应的是一组公钥和地点。钱包程序必须从创世区块开始扫描每一笔交易,假如:


  • 遇到某笔交易的某个Output是钱包管理的地点之一,则钱包余额增长;
  • 遇到某笔交易的某个Input是钱包管理的地点之一,则钱包余额减少。
钱包的当前余额总是钱包地点关联的所有UTXO金额之和。


每笔 UTXO 交易假如满意以下三个束缚条件就可以得到认可:


  • 交易中引用的每个输入都必须由其所有者(发送者)署名且尚未被花费;
  • 假如交易有多个输入,那么每个输入都必须有与其所有者相匹配的署名;
  • 假如交易输入的总值等于或超过其输出的总值,那么该交易就是正当的。

使用UTXO的利益:


  • 潜在的高度隐私(Potentially high degree of privacy)
  • 潜在的高度可扩展性(Potentially high degree of scalability)
  • 潜在的高度安全性(Potentially high degree of security)。比特币通过为将新区块提交到区块链中实行基于共识简直认机制,并将区块链作为通用账本进行维护,办理了双重付出题目。

Account-based Online Transaction Model

假如满意以下三个有效性束缚,则具有令牌值(ETH)的交易是有效的:


  • 令牌由消息编写者(发送者)署名;
  • 可以证实编写者对令牌值的所有权
  • 编写者的付出账户有足够的余额用于交易。
基于账户的交易模子有许多明显的利益:


  • 与 UTXO 模子相比,它节省了更大的空间,由于 accountbalance-based 模子中的每笔交易只必要一个引用和一个署名来产生输出。
  • 更简单。与 UTXO 模子不同,它不维护区块链交易中硬币的泉源信息。因此,币不会根据收到的泉源进行区分。
  • 它不答应更改每笔交易的引用,但它提供了对账户相干数据的轻松访问。MPT(Merkle Patricia Tree)
关于MPT

MPT树结合了字典树和默克尔树的优点,在压缩字典树中根节点是空的,而MPT树可以在根节点生存整棵树的哈希校验和,而校验和的天生则是采用了和默克尔树天生一致的方式。 以太坊采用MPT树来生存,交易,交易的收据以及世界状态,为了压缩整体的树高,低落操纵的复杂度,以太坊又对MPT树进行了一些优化。将树节点分成了四种:



  • 空节点(hashNode)
  • 叶子节点(valueNode)
  • 分支节点(fullNode)
  • 扩展节点(shortNode)


Account nonce

Account nonce是一个标量值,等于从该地点发送的交易数量,对于有相干代码的账户,它是该账户创建的合约数量。以太坊的交易都是基于账户的,与基于未花费交易输出(UTXO)的比特币不同,因此必要对每次交易按顺序记录,而 nonce 值就是这个顺序,它是交易原始地点的属性,不存储在以太坊区块链上,而是通过盘算从一个地点发送的交易数量来确定。

每发起一笔交易,nonce 就会加一。对于外部账户(EOA)来说,每发送一笔交易,nonce 增长;对于合约账户来说,每创建一个合约,nonce 增长。而转入交易、合约调用其他合约等属于内部调用,nonce 值不变。

Account nonce 的主要作用:


  • 保证交易顺序
  • 防止重放攻击。重放攻击是指将一条用户交易信息在一条链上再次发送。
区块链中的CAP 属性

CAP理论

分布式系统涉及一组通过覆盖网络连接并相互通信以完成某些任务的盘算节点。CAP定理指出,任何分布式系统只能具有以下两个属性:


  • Consistency 一致性:每个盘算节点吸收最近的写入。
  • Availability 可用性:对某些数据的任何哀求始终可用。
  • Partition tolerance 分区容错性:分布式系统始终处于运行状态,即使部门节点无法运行。
分布式账本中的CAP属性

在分布式账本的背景下,CAP属性意味着(1)一致性:所有节点都保持一个具有最新更新的相同账本。(2)可用性:网络中任何时间天生的任何交易都将被接受在账本中。(3)分区容错性:即使部门节点发生故障,网络仍旧可以正常运行。

主要题目是,假如不满意所有三个条件,任何广泛接受的货币都很难存在。

当交易启动或部门交易系统无法辨认的时间,假如系统不可用,没有人会使用这种货币(CP system)。

假如任何一个节点发生故障,系统将无法正常运行,没有人会使用这种货币(CA system)。

假如分布式账本系统中不同节点生存的账本不一致,则没有人会使用这种货币(PA system)。

区块链办理方案

比特币系统的区块链似乎违反了CAP定理,这是最成功的区块链实现之一,由于它实现了一致性、可用性和分区容错。然而,事实并非如此。

在现实中,区块链一致性并不是作为可用性和分区容错同时实现的,而是在一段时间后。比特币中使用了挖矿的概念,结合共识协议和至少六次确认,以确保通过告竣共识最终保持一致性。

区块链的分类和演化

分类



架构分层



区块链的安全和隐私属性

安全和隐私要求

包罗账本一致性、交易完整性、系统和数据可用性、防止双花、交易秘密性、用户身份匿名性和交易不可关联性。

根本安全属性

一致性、抗篡改、抗 DDoS 攻击、抗双重花费攻击、伪匿名性等。

额外安全和隐私属性

不可关联性和交易数据隐私性,比特币区块链仅实现了伪匿名性,未能提供交易的不可关联性和数据隐私掩护。

共识算法

概念

共识是一种基于组的协议,用于在组中动态告竣协议。当前区块链系统中的共识算法为拜占庭将军题目提供了概率性办理方案。

工作量证实(PoW)

比特币采用的共识协议,通过办理盘算困难来验证交易,有效办理了拜占庭将军题目,但存在盘算效率低、依赖挖矿奖励和算力集中等题目。

通过调解nonce,满意H(block header) <= target

权益证实(PoS)

以太坊等采用的共识协议,通过参与者锁定资金作为押金来验证交易,避免了对挖矿奖励的依赖,采用处罚机制确保安全。

在以太坊中,权益证实(Proof of Stake,简称 PoS)是一种用于告竣区块链共识的机制,与比特币所采用的工作量证实(Proof of Work,PoW)有所不同。

在权益证实机制下,验证交易和创建新区块的权利是根据参与者所拥有的以太币数量(即权益)以及他们愿意锁定这些币的时长来决定的(币天)拥有更多权益而且愿意长时间锁定的参与者,更有大概被选中来验证新区块。

与工作量证实相比,权益证实具有一些优势。例如,它消耗的能源相对较少,由于不必要大量的盘算工作来竞争区块创建权。同时,权益证实对于恶意行为的处罚更为直接和有效,由于攻击者必要拥有大量的权益才有本领进行攻击,而一旦被发现作恶,他们将损失巨大的权益。

然而,权益证实也面对一些挑衅和质疑,好比大概会导致富者更富的情况,以及在初期大概存在的安全性和稳定性方面的担心。但随着技术的发展和改进,权益证实机制在以太坊及其他区块链项目中的应用不断完善和优化。

BFT-based 共识算法

拜占庭容错算法,许多相干算法和协议被提出以办理拜占庭故障相干的误解和困难,如 PBFT、AlgoRAND 和 HoneyBadgerBFT 等。


“BFT-based 共识算法” 指的是基于拜占庭容错(Byzantine Fault Tolerance,简称 BFT)的共识算法。
拜占庭容错在存在故障节点乃至恶意节点的情况下,仍能保证分布式系统正常运行并告竣一致的本领。
基于 BFT 的共识算法旨在办理分布式网络中,部门节点大概出现错误、故障或恶意行为时,怎样让整个网络仍能告竣一致的决议和状态同步。
这类算法通常具有较强的容错性,可以在多达三分之一的节点出现错误或恶意行为的情况下,依然保证系统的安全性和活性,确保系统能够正常运行和告竣共识。常见的 BFT 类共识算法包罗实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等。

其他共识算法

包罗 Sleepy Consensus、Proof of Elapsed Time(PoET)、Proof of Authority(PoA)和 Proof of Reputation(PoR)等。

比较

现实应用中根据不同束缚,共识算法分为强一致性共识和最终一致性共识,不同算法适用于不同场景和区块链类型。




区块链中使用的隐私和安全技术

混淆技术

比特币区块链不能保证用户匿名性,由于交易使用假名地点且可公开验证,通过分析地点可关联用户的交易,当交易地点与用户真实身份关联时会导致所有交易泄漏,所以设计了混淆服务(或搅拌器)来防止用户地点被关联。混淆就是随机交换用户的币与其他用户的币,结果是对于观察者来说,币的所有权被含糊了。但这些混淆服务不能防止币被盗。

Mixcoin和CoinJoin,可用于防止用户地点被关联,但存在中心化服务大概泄漏用户隐私等题目。

Mixcoin

Mixcoin 是由 Bonneau 等人在 2014 年提出的,它在比特币及类似加密货币中提供匿名付出

为了抵御被动对手,Mixcoin 扩大了匿名聚集,答应所有用户同时对币进行混淆。

为了抵御主动对手,Mixcoin 提供类似于传统通信混淆的匿名性。

此外,Mixcoin 使用问责机制来检测盗窃行为,而且表明通过鼓励调解,用户会理性地使用 Mixcoin 而不会偷取比特币。

CoinJoin

CoinJoin于 2013 年被提出,作为比特币交易的一种替代性匿名化方法。它的提出基于联合付出的理念

假设一个用户想要进行付出,她会找到另一个也想要进行付出的用户,然后他们通过协商在一笔交易中共同进行付出。通过这种联合付出的方式,显著低落了在一笔交易中连接输入和输出以及追踪特定用户资金活动确切方向的概率。


CoinJoin 要求用户与他们希望共同付出的对象协商交易。提供此功能的第一代混淆服务(如 SharedCoin [66])使用了中心化服务器,并要求用户信任服务运营商不会偷取或答应他人偷取比特币。然而,只管存在单点故障,中心化服务大概存在用户隐私泄漏的风险,由于它们会生存交易日志并记录联合付出的所有参与者。

匿名署名

数字署名技术由几种变体发展而来。一些署名方案本身就具有为署名者提供匿名性的本领。我们称这种署名方案为匿名署名。在匿名署名方案中,群署名和环署名是较早提出的,而且是两种最重要和典型的匿名署名方案

包罗组署名和环署名,能为署名者提供匿名性,组署名适合联盟链,环署名适合公链。

群署名

Group Signature(群署名)是一种密码学方案,最初在 1991 年提出

在一个群组中,任何成员都可以使用本身的个人密钥为整个群组匿名签署消息任何拥有群组公钥的成员都可以检查和验证天生的署名,并确认是某个群构成员的署名用于签署消息。署名验证过程除了能确定署名者是群构成员外,不会透露署名者的真实身份。

群署名有一个群管理员负责管理添加群构成员、处理争议变乱,包罗展现原始署名者。在区块链系统中,也必要一个权威实体来创建和打消群组,动态地向群组添加新成员以及从群组中删除或打消某些参与者的成员资格。

由于群署名必要一个群管理员来设置群组,所以群署名适用于联盟链。最近,PlatON 在其平台中添加了群署名,为用户提供匿名支持。

环署名

环形署名(Ring Signature)也可以通过由一组用户中的任何成员进行署名来实现匿名性。“环形署名”这一术语源自使用环状布局的署名算法。假如难以确定该组中的哪个成员使用其密钥对消息进行署名,那么环形署名就是匿名的。

环形署名与群署名在两个主要方面有所不同:



  • 首先,在环形署名方案中,一旦发生争议,署名者的真实身份无法被展现,由于环形署名中没有群管理员。
  • 其次,任何用户都可以自行构成一个“环”,无需额外的设置。
因此,环形署名适用于公共区块链

环形署名的一个典型应用是 CryptoNote。它采用环形署名来隐藏交易发送者地点之间的接洽。更确切地说,CryptoNote 使用其他几个密钥构建发送者的公钥,使得无法确定现实上是谁发送(署名)了交易。由于使用了环形署名,假如环成员的数量是 n,那么对手成功推测交易真正发送者的概率是 1/n。后来,以太坊在 2015 年添加了环形署名,这为用户提供了像 CryptoNote 货币(如门罗币)那样的匿名性。

同态加密(HE)

可在区块链上加密数据,掩护隐私,以太坊智能合约使用了该技术。

同态加密(Homomorphic encryption,HE)是一种强大的加密技术。它可以直接在密文上进行某些类型的盘算,而且确保在对加密数据进行的操纵所得到的盘算结果进行解密时,会天生与在明文上进行相同操纵所得结果完全相同的结果。

decode(encode(A) + encode(B)) = A+B

可以使用同态加密技术在区块链上存储数据,而不会对区块链的属性产生庞大改变。这确保了区块链上的数据将被加密,办理了与公共区块链相干的隐私题目。同态加密技术的使用提供了隐私掩护,并答应在公共区块链上方便地访问加密数据以用于审计和其他目标,例如管理员工费用。以太坊智能合约在存储在区块链中的数据上提供同态加密,以实现更好的控制和隐私。

基于属性的加密(ABE)

根据用户属性加密密文,具有抗共谋性,但目前应用较少,在区块链上的部署面对挑衅。

基于属性的加密(Attribute-based encryption,ABE)是一种加密方法,其中属性是使用用户密钥加密的密文的定义和调节因素

假如用户的属性与密文的属性一致,那么就可以使用用户的密钥来解密加密数据。

抗合谋性是基于属性加密的一个重要安全属性。确保当恶意用户与其他用户合谋时,除了能用其私钥解密的数据之外,他无法访问其他数据。

基于属性的加密概念于 2005 年被提出,当时是单一授权机构。从那以后,对根本的基于属性的加密进行了许多扩展,包罗具有多个授权机构共同天生用户私钥的基于属性的加密,以及支持任意谓词的基于属性的加密方案。

基于属性的加密非常强大,但由于对核心概念和高效实现的理解不足,迄今为止很少有应用部署它。到目前为止,基于属性的加密还没有以任何情势在区块链上进行实时操纵部署。2011 年,提出了一种去中心化的基于属性的加密方案,以便在区块链上使用基于属性的加密。例如,在区块链上,权限可以由访问令牌的所有权来表示。网络中的所有节点,假如拥有颁发给它们的特定令牌,将被授予与该令牌相干的特殊权利和特权。令牌提供了一种跟踪谁具有某些属性的方法,而且这种跟踪应该由分发令牌的权威实体以算法和一致的方式进行。令牌可以被视为代表属性或资格的徽章,而且应该被用作不可转让的荣誉或属性的量化器。

安全多方盘算(SMPC)

定义了多方协议以掩护输入隐私,在区块链系统中用于掩护用户隐私,如 Enigma 平台。

多方盘算(MPC)模子定义了一种多方协议,答应各方在其私有数据输入上共同进行一些盘算,而不会侵占其输入隐私,这样,对手除了联合盘算的输出之外,对真实方的输入一无所知。

1982 年,姚期智(Andrew Yao)正式定义了安全两方盘算,并在 1986 年针对百万富翁题目进行了推广。

1987 年,Goldreich 等人将两方盘算推广到多方盘算,假设盘算的所有输入和零知识证实都是秘密共享的一部门。这种推广为许多后续且越来越高效的多方盘算(MPC)协议奠定了基础。在分布式投票、私人竞标和私人信息检索中采用 MPC 的成功使其成为许多现实世界题目的盛行办理方案。

MPC 的首次大规模部署是在 2008 年,用于丹麦的一个现实拍卖题目。

近年来,MPC 已被用于区块链系统以掩护用户隐私。2014 年,Andrychowicz 等人在比特币系统上设计并实现了安全多方盘算协议。他们构建了无需任何可信权威的安全多方彩票协议。他们的协议能够保证诚实用户的公平性,无论不诚实的用户行为怎样。假如用户违反或干扰协议,那么她将成为输家,她的比特币将被转移给诚实用户。

2015 年,Zyskind 等人提出了一个名为 Enigma 的去中心化安全多方盘算(SMP)平台。通过使用高级版本的 SMP 盘算,Enigma 采用可验证的秘密共享方案来保证其盘算模子的隐私。此外,Enigma 使用改进的分布式哈希表对共享秘密数据进行编码以实现高效存储。而且,它利用外部区块链作为抗篡改的变乱记录以及对等网络的监管者,用于身份管理和访问控制。与比特币系统类似,Enigma 在消除对可信第三方的必要性和依赖性的同时,提供对个人数据的自主控制和掩护。

非交互式零知识(NIZK)证实

用户可在不透露账户余额的情况下证实有足够余额进行转账,Zcash 使用了该技术。

零知识证实是一种密码学技术,答应一方(证实者)向另一方(验证者)证实某一报告是真实的,而无需透露除了该报告为真之外的任何额外信息。

例如,假设要向朋友证实知道某个秘密房间的开门密码,可在朋友不看到输入密码的情况下,进入房间并拿出预先放置的特定物品来证实,这就是一种零知识证实。

零知识证实包罗交互式和非交互式两种


  • 交互式零知识证实中,证实者和验证者之间有多个来回的通信过程;
  • 非交互式零知识证实则证实者只必要发送一次信息给验证者,不必要后续交互。
零知识证实还可分为完善、统计和盘算三种类型。


  • 完善零知识证实中,验证者在理论上无法从证实过程中获得任何关于证实内容的信息;
  • 统计零知识证实里,验证者获得信息的大概性非常小;
  • 盘算零知识证实是在盘算上,验证者无法从证实过程中获得信息,即使理论上大概,但盘算成本非常高。
可信执行环境(TEE)基于的智能合约

假如一个执行环境为应用程序的执行提供完全隔离的环境,能有效防止其他软件应用和操纵系统篡改及相识在其中运行的应用程序的状态,就被称为可信执行环境(TEE)

英特尔软件防护扩展(SGX)是实现可信执行环境的一种代表性技术。例如,Ekiden 是一个基于 SGX 的掩护秘密的智能合约办理方案。Ekiden 将盘算与共识分离。它在链下的盘算节点的可信执行环境中执行智能合约盘算,然后使用远程证实协议在链上验证盘算节点的执行精确性。共识节点用于维护区块链,不必要使用可信硬件。Enigma 在其当前版本中利用可信执行环境,答应用户使用去中心化的信用评分算法创建掩护隐私的智能合约。信用评分会思量多个因素的权重,如账户的数量和类型、付出历史以及信用利用率。

基于游戏的智能合约

基于游戏的智能合约验证办理方案是非常新的发展,以 TrueBit和 Arbitrum为代表。

TrueBit 使用交互式“验证游戏”来确定盘算任务是否精确执行。TrueBit 提供奖励以鼓励参与者检查盘算任务并发现漏洞,这样智能合约就可以安全地执行具有可验证属性的盘算任务。此外,在每一轮“验证游戏”中,验证者递归地检查越来越小的盘算子集,这使得 TrueBit 大大减轻了节点上的盘算负担。

Arbitrum为各方设计了一种鼓励机制,以便在链下就假造机的行为告竣一致,因此它只要求验证者验证条约的数字署名。对于试图谎报假造机行为的不诚实方,Arbitrum 设计了一种有效的基于挑衅的协议来辨认并处罚不诚实方。假造机行为的链下验证鼓励机制显著提高了智能合约的可扩展性和隐私性。

TrueBit 和 Arbitrum,通过鼓励机制鼓励各方验证智能合约的精确性,提高了智能合约的可扩展性和隐私性,但仍存在被恶意用户欺骗的风险。

讨论

实现区块链的安全和隐私必要综合多种技术,同时要注意新技术大概带来的题目,以及在安全、隐私和效率之间进行权衡。



结论

文章论述了区块链安全和隐私的属性及实现这些属性的技术,深入理解区块链的安全和隐私属性对增强其信任度和发展防御技术至关重要,将来发展必要轻量级加密算法和实用的安全隐私方法。

参考:


  • 区块链技术:架构及进展-盘算机学报
  • B站北京大学肖臻老师的《区块链技术与应用》
  • 以太坊开发文档 以太坊开发文档 | ethereum.org
  • 廖雪峰的区块链教程 简介 - 区块链教程 - 廖雪峰的官方网站




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

知者何南

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表