如今,区块链已成为一个热门词汇。在一系列新兴的分布式账本技术中,区块链已成为全球最丰富,发展最快的分布式网络,例如比特币,以太坊等,它们是可用于交易和资产交换的可信赖媒介。自2009年推出比特币以来,区块链技术在其价值、可行性、普及度等方面都经历了许多起伏。但是,到2020年,区块链的可行性已通过各种开创性的用例和技术得到证明。
回溯过去几千年的发展历程,账本已经成为贸易的中心,账本被用作各种资产记录的保存载体,例如记录商品、货币和财产的交换。分布式账本作为这个概念的扩展,其本质是可以在多个站点、地理区域或机构之间共享的资产存储载体。网络中的所有参与者都有相同的副本,对账本的任何更改都会反映给所有人。分布式账本也已经存在了数千年,第一个实现是罗马帝国使用的银行系统,该系统允许人们参与其整个地区的交易。
九十年代开始,这些思想进一步扩展到了数字领域。1991年,一家冰淇淋厂提出了使用许多分散但相互关联的共享账本副本的概念。Stornetta与Haberto合作开发了一种密码安全的存档,可以在不泄露记录内容的情况下验证记录。这种机制使协作创建数字分布式账本的能力远远超过了基于纸张的账本。这项早期工作促使了分布式账本技术DLT概念的提出,DLT被定义为在没有中央管理员或集中式数据存储的情况下,在多个站点、国家或机构中复制、共享和同步数据的共识技术。其中,Distributed Ledger Technology(DLT)各个部分定义如下:
- Distributed:分布式反映了其分散而非集中的特性;
- Ledger:账本代表了记录的数据库;
- Technology:技术定义了用于同步数据的协议,以便数据库可以以分散的方式运行,而无需中央机构对其进行管理。
就像文中提到的那样,DLT和区块链经常被用作同义词,但实际上,区块链是DLT的一种特殊类型,它包含自己的一组规则和功能,包括将交易组织成一条由区块组成的链条。区块链定义了实现DLT的特定方式,而DLT通常具有更广泛的范围和灵活的结构。
像DLT一样,区块链是一种分布式账本,无需交易中心即可永久存储不可变也不可否认的交易记录。区块链中的算法将若干个交易组合形成一个个的区块,并将每个区块添加到现有的区块序列中,顾名思义,形成一个链。与传统的数据库架构相反,区块链要求参与者之间形成共识,新的信息被收集到区块中并使用哈希加密签名链接到前面的区块后。此过程确保可验证性,因为在不更改哈希值的情况下无法对信息进行操作,并且每个哈希值均构成该信息的一部分,被认为是唯一代表数据内容的数字指纹。
网络上的每个节点都维护账本的共享副本,并且为了进行同步,需要一个对等网络以及一种共识算法来确保在节点之间添加和复制区块。有一种共识算法称为工作量证明(Proof of Work, PoW),参加该过程的是称为矿工的特殊节点,将此证明过程称为挖矿。在PoW中,矿工通过解决一个复杂的数学难题来相互竞争,第一个解决难题的人是获胜的矿工。获胜的矿工验证新交易,将其记录在区块链上,并通过数字令牌获得奖励。但是,交易的记录过程一般很慢,通常需要花费几秒钟来添加一个块,比特币就使用PoW机制。虽然区块链作为比特币背后的技术而闻名,但现在有数百种不同的区块链提供了超越加密货币的多种功能。
此外,PoW是专为开放的公共网络而设计的,因此通常不适合大多数企业的应用。特别是对于国防部的情况,网络是私有且安全的,就可以使用除PoW之外的其他更有效的共识算法,这些算法不需要使用加密货币或令牌。例如,流行的Quorum企业区块链中使用了权威证明、拜占庭容错或基于Raft的共识,每秒可实现数千笔交易。
公链或私链?
区块链可以是公共的(公链)也可以是私有的(私链)。顾名思义,公链不提供访问许可要求,因此该网络是完全公开的,就像比特币一样。与私链相比,公链往往分散得多,并且运行速度也较慢。
现在大多数的区块链是私链,需要访问权限才能参与,通常着重于两个主要方面:谁可以加入网络?以及谁有权访问哪些交易?通常,私链的所有者可以定义谁可以参与网络,还可以定义谁可以访问网络中的哪些内容。有关私链的信息通常仅由其批准的成员进行验证。
对于私链,有许多不同的方法可以定义谁有权访问什么。在更高级别上,可以使用现有的身份验证和授权机制来确定谁可以访问网络以及每个用户可以访问网络的哪些内容。但是,网络本身可以定义更精细的粒度。例如,Quorum在节点层面和事务层面定义许可。它使用网络许可来定义哪些节点可以连接到指定节点,以及该指定节点可以连接到哪些节点,这样可以确保仅列出的节点成为网络的一部分。其次,Quorum所谓的安全区加密技术对有效负载/事务进行加密,以使其仅对网络的一个子集专用。
钱包和密码签名
大多数区块链使用钱包的概念,最初以这种方式命名是因为它存储了一个特殊的密钥,该密钥可以访问加密货币。但是,现在即使是在不使用加密货币的网络上,仍然使用钱包,并且该钱包包含标识网络上用户/钱包的加密凭据,并且允许用户签名交易,从而使每笔交易都可识别。一个简单的钱包可以使用非对称密钥系统生成。这些系统有两个密钥:可以共享的公共密钥和保密的私有密钥。对于区块链,它们构成了钱包的基础,该钱包使用了这两个密钥和一个派生密钥,即地址。它包含:
- 私钥:不能公开的密钥;
- 公钥:可以公开的密钥;
- 网络上的地址:通常是利用公钥的哈希码生成的。由于哈希码是单向函数,因此不可能从该地址反推出公钥。
每个区块链中的交易都有一个可以通过数字签名来识别的所有者,该数字签名是使用钱包中的私钥和交易内容创建的。从技术上讲,数字签名是使用用户的私钥对交易内容的哈希码进行加密。这提供了一种既可以标识事务的创建者,又可以验证事务内容尚未更改的机制。实际上,在区块链中,此哈希码验证执行两次,每个事务一次,每个区块一次。
在区块链上存储大数据?
如上所述,在区块链上存储数据可确保其完整性和不可否认性。但是,如果数据很大,该怎么办?大数据将使得区块链迅速膨胀,使其昂贵且效率低下。解决这个问题的方案是使用所谓的脱链数据。脱链数据允许将数据的指纹或哈希码存储在链上,并将数据存储在外部存储介质中。哈希码是一种加密机制,可以为任何大小的文件生成一个固定大小的指纹。因此以这种方式,实际上可以确保两个文件永远不会生成相同的指纹,意味着哈希码唯一地表示文件的内容。
因此,如果我们将文件的哈希码存储在区块链上,然后将该文件存储在另一存储介质中,则可以确保两件事:
- 文件的内容自存储以来不会被更改:因为如果被更改的话,哈希码将与外部存储的文件不匹配;
- 标识存储外部文件的用户:因为每笔交易都是由用户使用其钱包进行签名的。
脱链是跟踪区块链上外部文件或数据集的绝佳策略,因为它可以最大程度地减少了链上的存储,同时为外部数据提供了不可否认的审计线索。这意味着可以将区块链与现有数据和系统无缝使用,极大地保证数据的完整性和可追踪性,并且可以跨越不同的数据系统和应用程序聚合数据的多个副本。
就在几年前,我们抛弃Web 2.0(即Google和Facebook等“大技术”公司)的想法几乎是不切实际的。但是分布式共识协议的出现使对等交易可以取代依靠中央机构来保存或传输数据的方式。比特币和以太坊证明了这一概念,并为未来的发展提供了极大的可能性。
注:本文翻译自《POTENTIAL USES OF BLOCKCHAIN BY THE U.S.DEPARTMENTOF DEFENSE》
转载请注明:IT运维空间 » 安全防护 » 区块链的 “前世今生”
发表评论