壹Linux
作者壹Linux2017-03-08 10:30
其它, 壹Linux

怎样解决金融行业区块链应用的安全和性能问题?

字数 2764阅读 3310评论 0赞 1

随着区块链影响力日渐提高,以及各企业不断寻找新方法来采纳并测试该技术,特别是在金融行业。区块链技术是对当前中心化金融系统的改进,使之成为互联网金融乃至整个金融业的关键底层基础设施,因此必须要保护好安全和隐私。同样,性能问题也是企业区块链必须关注的内容,如果一个金融区块链交易应用像比特币一样需要1个小时确认交易,那一定是满足不了要求的。

一、安全问题

区块链技术如果要在金融行业大规模应用,那么其安全程度至少要达到与“银行同等的安全级别”。尽管银行也会遇到自然灾害,人为犯罪等事故,但是人们还是认为银行能够提供相对安全的钱财保护。即使存在银行里的钱遇到了各种灾难,但是与个人无关,银行会承担这些损失。但是在区块链的技术里,由于采用的是去中心化的模式,如果发生安全问题,个人用户可能会遭受损失。
区块链技术本身已经提供了非常多的安全特性,如可追溯,不可篡改、不可抵赖;这些是通过大量的密码学技术来实现的。因此在使用区块链的时候,在很多场景下我们可以放心的利用技术本身的特性,同时也存在一些不得不考虑的安全问题:
1、密钥泄漏
区块链技术一大特点就是不可逆,不可伪造,但前提是私钥是安全的。私钥是每个用户自己生成并且自己负责保管的,一旦丢失,便无法对账户的资产做任何操作。如果说用这个密钥来管理你的资产,这个密钥丢了,你的资产就丢了。如果这个密钥是管理你的身份,这个密钥丢了,你身份都丢了。
软件架构的不足,会有硬件的体系架构的优化来去满足。解决这类安全问题如果采用硬件设备存储密钥的话安全性就会提升很多,因为专用的硬件设备相当于另外一把锁,要获取专有设备的访问本身就很困难,加之设备本身就是加密处理的,安全性会提高很多。例如LinuxONE利用PCle密码卡支持进行秘钥保护,保障秘钥安全。
2、错误的实现
近来的the DAO合约漏洞致使业务还没有开展的时候,准备的钱已经不见了。需要注意防范,通过技术手段去解决安全漏洞。
3、信息泄露
尽管区块链使用了大量的加密算法,但是交易数据在服务器内存中仍然是明文的方式存在,只要能够攻破服务器的操作系统,便可以通过内存嗅探的方式来窃取商业数据。
在信息泄露的问题上,可以使用更加安全的服务器。以LinuxONE平台为例,它独有安全服务容器(SSC)技术,如果需要,不管是攻击者还是系统管理员都没有办法登录系统。同时安全容器从硬件底层加密了BIOS,Bootloader,内存和存储,使整个区块链系统固若金汤,任何试图破解这个环境的尝试都需要花费巨大的代价,这些都是普通的硬件平台无法提供的。
LinuxONE的安全服务容器现在已经通过Bluemix提供了HSBN这样的区块链云服务,提供企业级的区块链平台托管服务,对于不想自建数据中心又担心云平台安全的用户来说,也不失为一个好的选择。
4、算法方面
目前区块链的算法是相对安全的。但是,随着数学、密码学和计算技术的发展,未来非对称加密算法具有一定的破解可能性,这也是区块链技术面临的潜在安全威胁。
5、协议方面
基于PoW共识过程的区块链主要面临的是51%攻击问题,即节点通过掌握全网超过51%的算力就有能力成功篡改和伪造区块链数据。区块链应用前景广阔,不排除攻击者为了某种目的不惜成本地攻击,且理论上技术手段可实现。
6、实现方面
区块链大量应用了各种密码学技术,属于算法高度密集工程,如果爆发漏洞,可以说区块链整个大厦的基础将轰然倒塌,不会有一个幸存者。

二、性能问题

在金融行业,每天都有大量的数据交易。如果采用区块链技术,那么就意味着每个人都有一份完整账本,并且有时需要追溯每一笔记录,因此随着时间推进,交易数据超大的时候,就会有性能问题,如第一次使用需要下载历史上所有交易记录才能正常工作,每次交易为了验证你确实拥有足够的钱而需要追溯历史每一笔交易来计算余额。
区块链的去中心化(decentralized)和分布式(distributed)并不是同样的概念。在分布式网络当中,每个节点都是一个大的计算任务的子集,节点可以根据自身能力分配算力,能者多劳,最终再汇总结果;假设总任务量是W网络节点数是N的话,那完成任务W的时间是W/N,在这样的网络当中,节点越多整体网络的性能越好;而在区块链的去中心化网络当中,每个节点都需要独立的存储账本,完成共识并运行智能合约,并且整个交易必须等到每一个节点都完成交易并达成共识之后才能确认,因此整个网络的效率是WxN,区块链系统的瓶颈是网络当中算力最差的那个。因此对区块链应用,绝不能采用分布式那种随便拉几台机器,效率不行就增加机器的办法。因此,整个网络的总存储和计算能力,取决于单个节点。甚至当网络中节点数过多时,可能会因为一致性的达成过程延迟降低整个网络的性能。尤其在公有网络中,由于大量低质量处理节点的存在问题将更明显。
虽然可以通过一些技术手段(如索引)来缓解性能问题,但问题还是明显存在的,而且整个区块链的性能瓶颈会出现在性能最差的那个节点上。以下是解决性能问题的一些建议:
1、 做好规划

对于区块链验证节点这类核心节点,不仅要选用性能和稳定性都好的高端服务器,同时也要尽量保证网络当中的节点性能差距不要过大,不然性能差的节点会成为木桶原理中的短板,影响整个系统的性能。

2、软硬结合
区块链平台技术是在不断的演化中,这中间必然会产生大量的优化,从安全性,健壮性和效率上,都会有提升。
尽管区块链是开放的技术,但是对基础架构平台的性能有相当高的要求。LinuxONE通过内置的CPACF芯片进行HASH运算,可将哈希性能提升近十倍。SIMD指令集将椭圆曲线加密的速度提升数十倍,同时大幅节约CPU开销。根据近期的测试,LinuxONE平台在某些场景的TPS可以达到2000+,响应时间可以做到毫秒级,而其他平台则不到这个值的1/4。
3、 平台调优

推荐使用pbft batch模式而不是Single模式,因为共识是串行执行,那么一次性处理多个请求显然要比每个请求都做一次共识要来的快,batch size目前建议是100;建议优化智能合约的运行环境,目前智能合约主要是在Go语言的运行环境执行,适当提高GOGC大小;如果小伙伴的CPU支持SIMD指令集的话,不妨尝试用SIMD指令集实现椭圆加密算法的部分实现,实测可以最高提升30倍的算法性能;另外如果安全开关打开的话,建议采用证书批量发放的模式设置Tcert Batch Size,提高CA节点的证书方法效率。在实际测试场景中,CA节点的压力是验证节点的2-3倍,建议CA节点多分配资源。

以上观点来自2月10日区块链学院线上活动“如何构建高安全性企业级区块链平台”:http://www.linuxonechina.com.cn/Activity/?id=475


如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广