gpt4 book ai didi

Corda 数据篡改问题

转载 作者:行者123 更新时间:2023-12-04 18:57:59 25 4
gpt4 key购买 nike

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

先决条件 :
注释掉契约(Contract)验证:我们对契约(Contract)代码进行了注释,以检查是否在 Corda 中检测到数据篡改,而无需在命令级别明确进行检查。

复制步骤:

  • 启动义务 Cordapp。
  • 在甲方和乙方之间建立3项义务(100泰铢、256泰铢和100泰铢)
    Obligations
  • 通过查看十六进制之间的差异,编辑乙方数据库中的 VAULT_STATES 表。
    Vault State Hexs
    不同数额的债务在左边,两个数额相同的债务在右边。从编辑器来看,当它们的数量相同时,有 2 个差异(大概是线性 ID 和时间戳相关),当它们的数量不同时,第三个差异显示在左侧。
  • 用较低的值覆盖特定部分,在乙方的保险库上使用 SQL 更新保险库:

  • h2 Update
  • 此更新后,检查乙方的保险库,所有 3 项义务的金额都更改为 100 泰铢。
    edited balance
  • 但是,由于甲方金库中的数据没有被篡改,所以甲方金库将显示原始金额(100、256、100)。
    Party A Balance
  • 将乙方所有义务转给丙方
  • 转让义务结果:乙方不再承担义务
    Party B Obligations
  • 转让义务结果:丙方将获得乙方的所有义务(全部100泰铢,即篡改数据被传递给新方)
    Transferred Obligations
  • 转移义务结果:甲方的保险库也将被篡改数据更新。它无法识别或标记被篡改的数据。
    Final Result

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

    最佳答案

    我担心这个讨论可能需要一段时间,因为我们大多数人从今天下午开始休假。

    我们将尝试复制您在此处所做的工作。但是,我不清楚这是一个错误。

    你说你注释掉了契约(Contract)验证逻辑。听起来可能发生的事情是这样的:

  • 编辑状态表以保存损坏的状态。
  • 使用 INPUT=pointer 建立一个指向先前正确状态的事务。 OUTPUT=(损坏状态)+编辑以保存新的所有者字段。
  • 此交易现已签署并转让。

  • 当尝试转移到 C 方时,此交易将被视为无效并被拒绝,因为这将是非法的状态转换:数字不平衡。但是你注释掉了检查它的代码!所以没有任何地方说你不能随意改变义务的大小......如果你注释掉包含这些知识的代码,Corda 不会隐含地知道这一点。因此,从 IOU 应用程序的角度来看,在转移时更改大小现在是完全合法的事情。

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

    关于Corda 数据篡改问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47918053/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com