区块链学习笔记(3)--区块链与审计part2(对论⽂SecureandTranspare。。
使⽤区块审计进⾏安全透明的⽇志审计
论⽂ “Secure and Transparent Audit Logs with BlockAudit” 学习笔记
⽂章⽬录
摘要
本⽂介绍了⼀种基于区块链技术的审计⽅式,由于是政府的基⾦项⽬,该系统对安全性和吞吐速度有着较⾼的要求。
本⽂假设系统可能遭受两种攻击:1.物理访问攻击,既是直接修改数据库或者区块链数据;2.远程弱点攻击,既是到系统的弱点进⾏远程⼊侵。按照这两种可能遭受的攻击构建了威胁模型,并设计了在⼀定程度上可以抵御这两种攻击的审计系统。
介绍
区块审计的原理:
1.通过企业应⽤的数据访问层收集系统的事件信息;
2.将收集到的事件信息转化为可以当做事务写⼊区块链的事务;
3.构建点对点⽹络,该⽹络通过执⾏共识算法来验证和接受事务;
4.将事务锁定在只可追加的区块链上,该链被所有实体持有。
评判标准:延迟、⽹络⼤⼩、区块承载的信息量
背景以及威胁模型
hibernate要学多久
⽇志审计
普通基于数据库的⽇志审计的缺点:数据库作为惟⼀的⽇志存储,⼀旦遭受攻击,系统便很容易瘫痪,攻击者不仅可以直接删除数据库信息,甚⾄可以篡改数据来左右审计的进⾏。
威胁模型
物理访问攻击:攻击者⽤于接触系统核⼼部分的能⼒,可以任意篡改数据库。
远程弱点攻击:SQL注⼊,弱⼝令等
研究现状
emmm
问题陈述以及需求
Q1:本⽂的系统主要⾯向企业事务级应⽤,重视系统的可扩展性和表现。
Q2:考虑到拜占庭容错,对共识算法的选择显得很重要。
⼯程设计
功能需求
为防⽌恶意⼊侵,审计⽇志应该存储在多个对等节点中,以便快速的检测错误并进⾏修正。
快速的共识,任何的延迟都将对系统产⽣不利的影响,另外的,任何应⽤都不能在不经过共识的情况下添加数据。
⽇志审计系统应该是模块化、⾯向服务的,即是说⽆论应⽤给予怎么的数据格式,都可以将其转化为审计信息,同时不依赖于该数据中的任何⾃然信息。
⽇志审计系统应该具有搜索能⼒和复原能⼒。
结构需求
区块审计系统应该是建⽴在分布式⽹络基础下,没有中⼼权威机构的系统。
拥有⾼吞吐量,能够处理⼤量的事务,并且能够⽀持不同长度的事务。
仅对现有的应⽤做简单的修改。
独⽴于应⽤数据库。
安全、透明、对所有结点可见。
安全需求
对于物理访问攻击,能够快速检测并且阻⽌起修改数据;
对于远程攻击,能够及时的阻⽌对对等结点攻击的传播。另外,对于拜占庭结点也要有⼀定的防御能⼒。
区块审计
应⽤架构
web应⽤
使⽤asp设计web应⽤。
业务逻辑层
该层是客户和数据库层的接⼝,对业务规则的表述负责。与其他功能相⽐,该层也负责管理数据⽣成、数据存储、在ORM的帮助下转化数据。在收到客户端的请求后,web服务器在业务逻辑层实例化相应的对象,,然后使⽤ORM发送处理过的对象给客户端,同时,ORM将对该对象的变化写⼊数据库。
ORM
应⽤程序中的ORM提供了⼀种映射机制,允许使⽤⾯向对象的范例查询来⾃RDBMS的数据。现代Web应⽤程序⾮常适合这种技术,因为它们是多线程的并且正在快速发展。 ORM还降低了代码复杂性,使开发⼈员专注于业务逻辑⽽不是数据库交互。
该⽤⽤程序使⽤NHibernate——⼀种针对Microsoft.NET的ORM平台。
⽣成审计⽇志
⾸先介绍Hibernate提供的三种事件events。
IPostInsertEventListener。瞬态实体第⼀次被持久化时,就会触发该事件。需要审计的每个类都标有Auditable属性,它们随后便会⽤来⽣成审计⽇志。默认情况下,所有映射properties将被审计,⼀些不需要审计的properties将被添加suppress audit属性。通常情况下,所有properties都是需要审计的。
该事件被触发后⽣成审计⽇志的过程如算法1。
当⼀个审计条⽬被创建后,它包含⼀个session ID(transaction ID),audit ID, creation date, user ID, URL 和 ⼀个包含values of all properties 的集合 (collection)。该集合是由修改前的旧数据以及修改之后的新数据。更多的,新数据和旧数据会被⽐较,只有发⽣改变后这些数据才会被提交。
在算法2中,列出了更新审计⽇志的过程,当前,这些审计⽇志被存储在数据库中的两个表中,AuditL
og table和AuditLogDetail table表,除此之外,使⽤全局唯⼀标识符GUID作为各表的主键。
为了防⽌为审计类AuditLog and AuditLogDetail class创建⽇志,从⽽使系统陷⼊死循环,算法1和2的2-5⾏设计避免了这⼀情况的发⽣。
⽣成审核⽇志后,应⽤程序会从主对象提供指向审核⽇志页⾯的链接link。该链接允许最终⽤户查看对象历史记录并跟踪任何由错误或恶意活动引起的差异。
将审计⽇志集成于区块链
将审计⽇志数据转化为可以加载于区块链的形式,接着构造点对点⽹络将区块链的复制存储于各结点。使⽤ORM调⽤**表述性状态转移(REST)**应⽤程序的接⼝API来存储⽇志条⽬。
ORM可以很⾼效的捕获数据库的改变并将其转化为JSON packet以便调⽤REST API。
创建区块链⽹络
访问控制
在需要许可的区块链中,调整访问控制是没有必要的,因为任何costume membership service都可以⽤于访问控制。
另外,要求每个对等节点都保留⼀份区块链的复制在其服务器,并且保持与相应的应⽤服务器的持续性连接。持久连接对于维护区块链的最新视图以处理,验证和转发事务以及避免可能由过时的区块链视图导致的不需要的分⽀和分区攻击是必要的。
创建区块链事务
创建好⽹络后,下⼀步便是创造区块链事务,我们将审计⽇志数据转化为JSON形式,这⾥不使⽤其他的标准数据存储格式,⽐如XML的原因是,JSON数据结构的紧凑和存储灵活性。
To obtain a blockchain transaction, we first pass the audit log data to a function that serializes it to JSON and cal ls create AuditREST] web service to create the audit log transaction. Each JSON packet is then treated as a blockchain transaction, and as soon as a node in the network receives a transaction, it broadcasts the packet to the rest of the network. Nodes can connect to multiple peers to avoid the risk of delayed transactions due to malicious peer behavior or network latency.
对表或类⽣成⽇志table/class: 为事务中的每⼀个对象⽣成⼀个JSON packet,这样做会使得每个packet⾮常⼩,⽽且调⽤web服务的次数也会快速增多,对于系统来说并不理想。
对事务⽣成⽇志: 审计⽇志⽣成器audit event logger创建⼀个跨越多个对象且包含所有更新、插⼊和删除信息的packet,并将其发送⾄figure5所⽰的区块审计,这样做会将审计⽇志信息固化,⽽且很难去寻⼀个确定的class,但采⽤这种策略会提⾼整个⽹络的吞吐量,使其更有效率。
共识协议
在上表的对⽐中可以发现,PoW和PoS有很⾼的可扩展性和容错性,但他们的吞吐量太低⽽且有很长的确认时间,相⽐⽽⾔,PBFT有着较⾼的吞吐量和较快的确认速度,但其容错率较低。
在区块审计中,我们使⽤PBFT,他本设计来加速分布式系统的决策,moreever,区块审计使⽤需要许可的区块链,这意味着结点之间互相可见(know to one another),⽽且匿名性较低。这使得PBFT更适合于我们的设计。
In PBFT, the system comprises of a client that issues a request (transaction) , and a group of replicas that execute the request. The primary replica orders transactions and relays them to other replicas. The transaction is processed in four stages, namely pre-prepare, prepare, commit, and reply. When the client receives a minimum of 3f + 1 responses,
f bein
g the number of faulty replicas, the transaction processed. In Figure 7, we provide an illustration of PBFT, which
we later use to design and calibrate BlockAudit. In Figure8, we show the complete design of BlockAudit, where the blockchain is integrated with the serialized JSON output of the business application.
区块审计的分析
设计分析
在区块审计系统中,每个对等结点使⽤者连接到数据库的基于ORM的⽇志审计系统,⼀旦ORM发现数据库发⽣改变,便会更新数据库,⽣成⼀个事务并发送给主要结点(获主要复制,primary replica),主要结点对收到的事物按照时间戳的顺序进⾏排序,然后进⾏⼴播,其他结点收到事务后,按照时间戳的正确顺序对事务进⾏验证,这种策略主要⽤来防⽌恶意结点修改事务的时间戳。
同时防⽌了以下情况的出现:在时间Ta,发⽣了对某类的⼀个更新,在时间Tb发⽣了⼀个恢复上述更新的事务,那么我们就有必要保证Ta 发⽣在Tb以前。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。