《区块链蓝皮书》指出—— 金融区块链安全检测面临三大难点 生态瞭望者 2020-11-15 23:48:47 区块链系统安全检测的难点区块链系统是一种“弱中心”甚至“无中心”的分布式系统。首先,分布式系统相比常规的集中式系统,要复杂得多,涉及大量的不可靠网络交互。构建一个可靠的分布式系统很难,而做好分布式系统的检测同样不简单。其次,区块链系统作为一类弱中心或无中心的网络系统,比常规的分布式系统更加“分布”,因此针对区块链的测试和评估也就更加困难。
1.难点之一:系统安全边界模糊传统的软件,不管是独立的应用程序还是C/S模式、B/S模式的服务器程序,都有明显的中心节点和围绕中心节点的系统边界。前者可以通过用户界面UI进行测试,后者可以通过专用客户端或通用浏览器,通过固定的网络接口进行测试。 区块链系统则是一个多中心或无中心、更加分布式的网络。这个网络有可能跨越多个子网、多个数据中心、多个机构、多个运营商,甚至多个国家,其边界是模糊的。对于区块链底层的测试,不仅是前端API与某个区块链节点之间的测试,还得考虑大量区块链节点之间的交互。 2.难点之二:软件故障类型复杂由于区块链是一种由多方共同维护的IT系统,需要尽可能减小软件失效,提高软件可靠性。按照软件可靠性模型。 其中,软件故障(Software Fault)是指软件运行过程中出现的一种不希望或不可接受的内部状态。若此时无适当的措施(容错或异常处理机制)加以及时处理,便会产生软件失效。 虽然软件错误、软件缺陷、软件故障都有可能导致软件失效,但对于区块链系统而言,由于其运行环境的复杂性,需要尤为重视应对软件故障和进行容错处理。 一般的软件故障有三类。 (1)宕机故障(Crash Fault),外部表现为“服务不再可用”。 (2)宕机—恢复故障(CrashRecovery Fault),外部表现为“丢消息”。 (3)拜占庭故障(Byzantine Fault),外部表现为“部分消息不可信”。 第三类故障来自著名的“拜占庭将军问题”:所有忠诚的将军决定一致的计划,但是少数叛徒不能使忠诚的将军采用错误的计划。而拜占庭故障就是在需要共识的系统中由“拜占庭缺陷”导致系统服务不可用。拜占庭缺陷(Byzantine Defect),是指任何从不同观察者角度看表现出不同症状的缺陷。简单来说,就是存在某些“拜占庭故障节点”,其可能会恶意地发送一些假消息。这可能会导致系统服务失效,或者无法达成一致,或者达成了一致但结果不正确。 传统的软件只需要对前两种故障进行容错处理,当软件由于故障而失效时,可以由相关人员进行运行维护。 基于区块链的软件系统,由于需要在一个相对不可信的环境中由多方共同运行维护,一般不配备统一的运行维护人员,因此,要求软件系统本身具有高度健壮性,能对包括拜占庭故障在内的所有故障进行高度容错,确保系统安全可靠地运行,避免软件失效。 3.难点之三:区块链的类型各异 区块链产品本身包含公有区块链、行业联盟链、企业私有链等多种类型,不同类型的区块链在治理模式、节点许可性、网络覆盖性、典型节点规模等方面的特征均不同。区块链检测需要考虑支持全部的类型,导致测试方案更加复杂。 |
《区块链蓝皮书》指出—— 金融区块链安全检测面临三大难点
