首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Corda数据篡改问题

Corda数据篡改问题
EN

Stack Overflow用户
提问于 2017-12-21 04:43:39
回答 1查看 794关注 0票数 6

背景:我们了解到corda不是防篡改的,而是很明显的篡改。因此,如果其中一个节点在数据库中直接操作一个状态,其他节点将能够检测并标记它,如果在后续事务中使用了该状态。然而,我们的测试结果与我们的预期不符。Corda没有标记被篡改的状态,实际上它在所有参与者节点中用篡改数据记录了新的状态。

Prerequisites:注释掉契约验证:我们注释契约代码以检查是否在Corda中检测到数据篡改,而没有在命令级别显式地进行检查。

复制的步骤:

  1. 开始义务Cordapp。
  2. 在甲方和乙方之间建立3项义务(100 THB,256 THB和100 THB)

  1. 在乙方的数据库中编辑VAULT_STATES表,通过查看十六进制之间的差异。

不同金额的义务位于左侧,而金额相同的两项义务位于右侧。在编辑器中,当它们是相同的数量时,有两个差异(可能与线性id和时间戳相关),而当它们处于不同的数量时,第三个差异显示在左侧。

  1. 用较低的金额覆盖特定部分,在乙方保险库上使用SQL更新保险库:

  1. 在此更新后,检查乙方的金库,并将全部3项义务的金额改为100 THB。

  1. 但是,甲方的保险库将显示原始金额(100,256,100),因为数据没有被篡改到甲方的保险库。

  1. 将乙方的所有义务移交给丙方
  2. 转让义务结果:乙方不再承担任何义务

  1. 转移义务结果:甲方将获得乙方的全部义务(100 THB全部,即篡改的数据被传递给新的一方)

  1. 转让义务结果:甲方的保险库也将被篡改的数据更新。它无法识别或标记被篡改的数据。

如何让Corda参与者节点检测篡改状态?我在设置节点时错过了一些配置吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-22 11:48:36

恐怕这次讨论可能需要一段时间,因为我们大多数人从今天下午起就休假了。

我们会试着复制你在这里所做的。然而,我不清楚这是否是一个bug。

您说您注释掉了合同验证逻辑。听起来可能发生了这样的事情:

  1. 编辑状态表以保存已损坏的状态。
  2. 使用INPUT=pointer构建到以前正确状态的事务。OUTPUT=(损坏状态)+编辑以保存新的所有者字段。
  3. 此事务现在已签署并转移。

这一交易将被视为无效,并被拒绝时,向甲方转移,因为这将是一个非法的状态转换:数字不平衡。但是你注释掉了检查它的代码!所以任何地方都不允许你在任何时候改变义务的大小。如果您注释掉包含此知识的代码,Corda就不知道这一点。因此,从IOU应用程序的角度看,在传输时改变大小是完全合法的。

这里有个问题--如果你不去修改应用程序,不修改它的源代码,是否检测到了篡改?如果答案仍然是“不”,那么我们还有更多的调查要做。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47918053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档