区块链学习笔记(2)--区块链与审计part1 (对论文Blockchain as an Audit-able Communication Channel的学习)

区块链作为一种审计信息信道

对论文”Blockchain as an Audit-able Communication Channel“的学习笔记
图片来自于原论文,侵删

摘要

Applications requiring strict access control, such as medical record query, often require auditing of the query. The current typical design relies on server side logging. However, logging on server-side do not provide strict means of auditing, since the server can be tampered with attackers, and also anybody who has permission to write can modify the log. We propose a scheme using blockchain technology, as a requestresponse channel for a client-server system, to record both client request and server reply in an audi-table manner. We have implemented a proof-of-concept system on top of a publicly available blockchain testbed. By using a blockchain as a clientserver request-response channel, the request-response sequence can be verified by anybody who has access to the blockchain, providing a way to implement audit log for strictly controlled resources.

文章主要介绍了使用区块链作为一种存储结构,将审计信息存储在区块中,利用区块链数据难以篡改等特点保证带审计数据的安全性。
文章以分布式系统为例,针对C\S系统设计了一种以区块链为基础的审计系统,并设计实验对该方案进行了验证,虽然最终结果并不十分尽人意,但在一定程度上证明了该方案的可行性。

介绍

使用区块链作为审计信息的通信渠道(信道),sender将想要发送的带有receiver身份信息的消息挂在区块链的尾端,receiver监听区块链增长的新区块,一旦发现该区块所包含的信息可以用自己的身份标识进行访问(表达不太学术,大致是这个意思),便可知该消息使发送给自己的。

研究背景

传统的C\S模型

传统C\S模型
client向server发送请求,server根据client的请求发送回复。
对于传统的C\S系统,如果我们能够在不借助C或S 的帮助下对C\S之间的信息发送与接收进行监听的话,那么我们便可以建立一个针对C\S系统的审计系统,但实际上,1)对信道的监听并不容易,2)即使我们成功监听到了消息,这些消息通常也是加密的。
除此之外,即使我们得到了C或S的帮助成功的监听到了消息,这个消息的可靠性也是存疑的,C或S都有可能遭到了第三方入侵发送了假的消息对审计系统造成破坏。
将区块链系统应用于审计的原因主要是1)区块链的去中心化;2)区块链对篡改的抵抗性。

模型的提出

我们需要用的区块链的特点:

  • 区块链将事务记录在连接在一起的块中
  • 事务有额外的存储空间来存储request-reply信息
  • 参与节点可以通过事务中使用的签名或存储在上面提到的额外数据区域中的身份验证凭证来验证事务的发送方和接收方的身份
  • 主管审计人员可以访问该链,这不是必需的,但可能是公开的(不是很懂,为什么不是必须的,但是可能是公开的)
    将区块链与我们所要实现的审计系统相结合后的特点:
  • 将事务作为消息的传递的单元(最小单元?)
  • 使用数据区域(上述额外的存储空间)作为消息的有效负载,如果需要,还可以使用数据区域作为凭据
  • 使用付款人和收款人的身份来识别发送者和接收者
  • 有权访问分类帐的一方可以审核通信

该模型的通信方式

  • 1)client使用函数选择器和函数参数准备请求消息。只要目的地的标识在消息或事务中可见,就可以选择性地加密参数。
  • 2)client通过将消息包装为一个事务的方式发送消息,并将消息定位到server
  • 3)server持续监听最后链接且被承认的区块,通过检验是否有事务指向它来确认该消息是否发往它
  • 4)当server发现发给它的消息后,便对消息进行复原和解码,接着根据client发送的参数和选择的函数执行
  • 5)完成函数执行后,sever开始准备包含执行结构在内的reply消息,只要目的地的标识在消息或事务中可见,就可以选择性地加密参数
  • 6)server发送定向于client的回复消息
  • 7)client以同样的方法接收回复信息
  • 8)当client发现发给它的消息后,便对消息进行复原和解码,使用执行之后的返回结果

该模型的特点

  • 1)高度可信,难以篡改,易于审计
  • 2)网络上的结点位置是低可见度的

概念实施证明

概念系统证明

一个将请求信息存储在比特币系统中的例子
一个将请求信息存储在比特币系统中的例子


  • client和server各持有两副秘钥用于标记比特币地址,比特币地址是比特币的绑定位置,他是由公钥创建的。两组秘钥分别为:client primary(CP),client sencondary(
    CS),server primary(SP),server secondary(SS)。其中,CP和SP被用于真实的事务处理,SP和SS用于接收找零(严格按照UTXO账户模型)。
  • 为了存储数据,模型采用了OP_RETURN注释语言存储额外的数据,可以将额外的数据存储空间扩大至40bytes,sender和receiver的身份将被标识为payer和payee。
  • 当client想要发送信息到server时,他会创建一个输入来自多个UTXO的事务,其三个输出用于OP_RETURN的注释,SP用于真实的交易,CS用于找零,之所以拥有找零这个过程是因为我们必须使用完整的UTXO交易过程
  • 在此交易过程中,虽然CP和SP可以对等的交换BTC,但是还要保证付给矿工的事务处理费用
  • 由于比特币系统的平均区块挖掘时间为10mins,因此我们期望信息的发送延迟为10mins

实验设置

实验设置
实验设置


实验采用专用于测试的比特币网络“Testnet3”,即使出于测试目的,我们也需要除我们之外的活动事务来链接矿工创建的加密块,正是因为这个原因,我们自己建立一个比特币网络是很难的。
为此我们分别在三台虚拟机上运行一个连接至TestNet3网路的用于监听的BTC结点,一个server结点,以及一个client结点。client结点和sever结点通过TestNet3网络上的开放结点进行事务的收发。我们本地运行的比特币节点和TestNet3的开放可访问节点都在监听TestNet3的比特币区块链。

实验结果

实验结果记录
实验结果记录

扫描二维码关注公众号,回复: 6463360 查看本文章

实验结果表明,首先,通过区块链上的事务来设计一种信息的交换方式是可行的。但是消息的收发间隔时间对传统的C\S系统来说过长。
此外,本文记录的实验在实施期间,使用的的TestNet3网络遭到了延展性攻击,因此实验的可信性是存疑的。

猜你喜欢

转载自blog.csdn.net/weixin_44826484/article/details/91865574
今日推荐