当人们可以直接更改couchdb数据时,Hyperledger Fabric中的数据如何安全

时间:2018-04-20 05:01:42

标签: couchdb hyperledger-fabric fauxton

我想知道如果管理员可以直接使用// MARK: Snippet to show full globe in 3d view private func updateMapToShowGlobe(location :CLLocationCoordinate2D) { let span = MKCoordinateSpanMake(130, 130) let region = MKCoordinateRegionMake(location, span) if( region.center.latitude > -90 && region.center.latitude < 90 && region.center.longitude > -180 && region.center.longitude < 180 ){ mapView.setRegion(region, animated: true) } } Couchdb Fauxton更改cURL中的最新状态,那么您的数据是如何安全的。

根据我的理解Couchdb提供了不可变数据功能,最适合防欺诈(区块链功能)。

问题是: - 我可以轻松更改Hyperledger Fabric中的数据,当我从couchdb查询时,它会显示已更改的数据。但是当我使用chaincode查询ledger时,它并未显示我对GetHistoryForKey()所做的更改。有什么办法可以防止这种欺诈吗?因为用户将始终看到最新的状态,即couchdb的数据而不是couchdb

任何答案都将不胜感激。

由于

8 个答案:

答案 0 :(得分:5)

您必须保护您的couchdb不被对等方以外的进程修改,就像您通常必须保护文件系统或内存一样。

如果您使文件系统可写,则其他用户可以覆盖分类帐内容。同样,如果你没有在couchdb写入上放置访问控制,那么你将失去不变性属性。

答案 1 :(得分:5)

这是分布式分布式系统的美妙之处。即使您或其他人更改了数据库/分类帐的状态,它也不会与网络中其他人的状态相匹配,也不会与事务块哈希匹配,导致任何交易无效的交易,除非您可以恢复实际约定的来自网络参与者或订货人的分类帐的状态。 要利用分类帐的不变性,您必须查询分类帐。查询数据库不利用区块链的强大功能,因此必须以类似于保护对任何其他数据库的访问的方式进行保护。

答案 2 :(得分:5)

在Hyperledger Fabric v1.2中,每个对等方都有自己的CouchDB。因此,即使您直接从一个对等方的CouchDB更改数据。认可将失败。如果认可失败,则不会以世界状态或当前状态写入您的数据。

答案 3 :(得分:5)

您不应将CouchDB端口暴露在对等方的网络之外,以免数据被篡改。只有对等方的管理员才能访问CouchDB,并且管理员没有动机来篡改自己的数据。让我进一步解释...

Hyperledger Fabric状态数据库类似于未使用的比特币交易数据库,因为如果同级管理员篡改其自己的同级数据库,则该同级将无法说服其他对等方其来源的交易是有效的。在这两种情况下,数据库都可以视为当前区块链状态的缓存。在这两种情况下,如果数据库损坏或被篡改,则可以在区块链的对等点上重建数据库。对于比特币,这是通过-reindex标志完成的。对于Fabric,这是通过删除状态数据库并重新启动对等方来完成的。

在Fabric中,背书策略中指定的来自不同组织的同级必须返回相同的链码执行结果才能进行验证交易。如果对等节点上的账本状态数据已被更改或损坏(在CouchDB或LevelDB文件系统中),则在认可的对等节点之间链码执行结果将不一致,将发现“不良”对等点/组织,并且应用程序客户端应在提交交易以进行订购/提交之前,先从不良的同行/组织中剔除结果。如果客户应用程序尝试提交的交易的签注结果不一致,那么它将在验证时在所有对等方上检测到,并且该交易将无效。

答案 4 :(得分:2)

您需要在这里了解两件事

  1. 尽管可能篡改了对等方的ouchdb的数据,但您应该以所有对等方都必须认可的方式设置背书策略。

  2. 您无法公开更改沙发床,建议您查看Cilium

答案 5 :(得分:1)

正如其他人所解释的那样-认可/共识是关键。尽管背书对等方的分类账状态可以在外部进行修改-在那种情况下,该背书对等方背书的所有交易都将被丢弃,因为其他背书对等方将发送正确的交易(假设其他人的世界状态也未受到篡改)和共识将在这里起到关键作用,以帮助选择正确的交易。

最坏的情况是所有事务都将失败。

超级账本结构的世界状态(账本状态)可以随时从区块链(交易日志)中重新生成。而且,在对等故障的情况下,此重新生成会自动发生。通过一些仔细的配置,人们可以构建一个自我修复的网络,使处于故障状态的对等节点自动从灰烬中恢复元气。

这里要考虑的关键是八卦数据分发协议,可以将其视为神秘的治疗者。网络中的所有对等方不断连接,并与网络中的其他对等方交换数据。

引用文档-

  

受延迟,网络分区或其他原因导致丢失块的对等体最终将通过与拥有这些丢失块的对等体进行联系而被同步到当前分类账状态。

和...

  

任何与数据与其他通道不同步的同位体会识别丢失的块,并通过复制正确的数据进行自身同步。

这就是为什么始终建议在网络和组织中拥有越来越多的认可对等方的原因。网络越大,就越难被恶意攻击。

我希望我能有所帮助。引用链接:https://hyperledger-fabric.readthedocs.io/en/release-1.4/gossip.html

答案 6 :(得分:0)

即使这是合理的,但认可政策是保护自己(系统)免受此类行为影响的一般手段。

答案 7 :(得分:0)

“状态协调过程会在每个通道上的对等节点之间同步世界状态。每个对等节点会不断从该通道上的其他对等节点获取数据块,以便在发现差异时修复其自身的状态。”