当有人有意直接更改ouchdb中的数据时,如何确保Hyperledger Fabric中的数据完整性

时间:2019-06-25 17:31:53

标签: rest couchdb hyperledger-fabric hyperledger integrity

我现在在Hyperledger Fabric中有2个组织,并且我正在使用composer-rest-server使用生成的API访问这两个组织。

根据我的理解,Hyperledger Fabric将其状态保留在couchdb内,并将其ledger保留在每个组织中,从而提供完整性。

问题是,当我尝试使用couchdb上的cURL方法直接在org2中更改某种数据时,这表明缺乏数据完整性。例如:

此数据

  

“ _ id”:“ \ u0000Asset:org.hospital.record.DataMedis \ u0000001 \ u0000”,“ _ rev”:“ 2-e590415fbc6092dc3ddc0b5271bab524”,“ $ class”:“ org.hospital.record.DataMedis”,“ $ registryId“:” org.hospital.record.DataMedis“,” $ registryType“:” Asset“,” alasanMasuk“:” string“,” alasanPulang“:” string“,” anamnesis“:” string“,” diagnosaPrimer“ :“ DBD Tingkat I ”,“ diagnosaSekunder”:“字符串”,“ dokter”:“ resource:org.hospital.record.Dokter#001”,“ idRekMedis”:“ 001”,“ kondisiSaatPulang” “:”字符串“,” noRekMedis“:” 000001“,” pasien“:”资源:org.hospital.record.Pasien#001“,” pemeriksaanFisik“:”字符串“,” prognosaPenyakit“:”字符串“,” rencanaTindakLanjut “:” string“,” riwayatAlergi“:” string“,” rujukan“:” string“,” terapiDiRs“:” string“,” tglKeluar“:” string“,” tglMasuk“:” string“,” tindakan“: “ string”,“〜version”:“ \ u0000CgMBDQA =”

将诊断更改为该数据

  

“ _ id”:“ \ u0000Asset:org.hospital.record.DataMedis \ u0000001 \ u0000”,“ _ rev”:“ 2-e590415fbc6092dc3ddc0b5271bab524”,“ $ class”:“ org.hospital.record.DataMedis”,“ $ registryId“:” org.hospital.record.DataMedis“,” $ registryType“:” Asset“,” alasanMasuk“:” string“,” alasanPulang“:” string“,” anamnesis“:” string“,” diagnosaPrimer“ :“ 流感”,“ diagnosaSekunder”:“字符串”,“ dokter”:“资源:org.hospital.record.Dokter#001”,“ idRekMedis”:“ 001”,“ kondisiSaatPulang”: “ string”,“ noRekMedis”:“ 000001”,“ pasien”:“资源:org.hospital.record.Pasien#001”,“ pemeriksaanFisik”:“ string”,“ prognosaPenyakit”:“ string”,“ rencanaTindakLanjut”: “ string”,“ riwayatAlergi”:“ string”,“ rujukan”:“ string”,“ terapiDiRs”:“ string”,“ tglKeluar”:“ string”,“ tglMasuk”:“ string”,“ tindakan”:“ string “,”〜version“:” \ u0000CgMBDQA =“

结果是org1org2之间的数据不再相同。这是来自GET API的composer-rest-server方法的结果:

enter image description here

enter image description here

当有人直接攻击我的couchdb时,有什么方法可以保持其数据完整性?还是我应该对composer-rest-server进行任何配置?

非常感谢您能提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

状态数据库不是事实的来源;实际的分类帐是。状态数据库实际上是每个键的最后一个已知值的持久性缓存。

@risabh暗示,认可策略用于确定状态更新。因此,下一次有一次更改状态的交易,只要满足背书策略,“修改的”密钥的最新值将被新值覆盖。

答案 1 :(得分:0)

不能添加评论,因此请在此处添加。

当您尝试通过调用txn再次为同一密钥添加数据时,将出现来自对等端的背书失败消息,其数据已更改,这表明在读写集中和数据之间存在未命中匹配被篡改了。