邱凌志 顾 弘
国家计算机网络应急技术处理协调中心江苏分中心
网络安全漏洞收集与披露有利于国家网络安全应急体系建设,增强国家网络安全监测和防御能力。漏洞平台通过奖励方式吸引白帽子助力漏洞发现与披露,能最大程度避免漏洞走向黑产交易,帮助企业提高网络安全意识。
传统漏洞共享平台由运营人员录入白帽子提交的漏洞信息,这种依赖于管理人员的运营模式可能出现透明度不够的问题:一方面,在漏洞披露上目前尚未形成安全有效的标准,披露流程可溯源性弱;另一方面,在内部人员管理上,由于漏洞审核、验证工作由平台管理人员负责,进而平台管理人员可掌握漏洞细节,所以加剧了漏洞内容泄露的风险。
本文提出一种基于区块链的漏洞共享平台,完成了方案的设计与实现。方案结合区块链技术具有的不可篡改特点,解决传统漏洞平台存在的可溯源性弱的问题,并通过共享协作式漏洞处理过程解决传统漏洞平台存在的中心化管理问题。
方案主要在传统B/S架构的漏洞平台基础上结合区块链技术实现平台数据共享溯源监管。平台基本功能模块有:用户登录、漏洞/补丁发布、漏洞/补丁评估、贡献值计算、技术水平评估、贡献值生态平衡等。
为保障用户登录的安全,平台采用基于椭圆曲线的双密码登录认证模式。新用户在进行注册时,需要填写用户账号口令及个人信息,平台用户名不可更改。平台会根据用户名和个人密码结合,运用椭圆曲线算法生成平台地址作为用户的第二密码,并且该密码需要用户妥善保存,不可丢失。用户能根据平台地址找回自己的个人密码,但无法根据个人密码找回平台地址。用户登录时需要用户名、个人密码和平台地址进行双密码登录认证。
漏洞发布者发布漏洞后,平台将漏洞文件存储到IPFS,并将IPFS返回的漏洞Hash公开共享到区块链上。补丁发布者发布补丁后,会将补丁首先发送给漏洞发布者,只有经过漏洞发布者的审核验证后,才会公布于平台。所有行为都将记录在区块链中,实现可信操作。
平台用户能够在漏洞或补丁评估界面对相应的漏洞或补丁进行多维度打分。平台会根据用户的贡献值情况计算贡献值权重,平台以此权重来判别评估用户的漏洞评估水平。
平台用户贡献值的获得主要有发布漏洞、发布补丁、评估漏洞、评估补丁和匿名举报五个途径。发布漏洞和发布补丁获得的奖励贡献值受到漏洞或补丁的综合评估分影响,因此是不定的。评估漏洞和评估补丁获得的奖励贡献值是固定的。匿名举报需要经过平台审核验证,验证成功根据事件严重程度分发贡献值奖励。
用户技术水平雷达图的生成依赖于用户的个人相关信息,如论文、专利、漏洞挖掘情况、漏洞修复经历等。从这些信息中筛选出与信息安全相关的信息,通过AI智能测评模块生成技术雷达图,并将技术报告记录到区块链上,可供后期认证和检验。
由于平台用户的技术水平存在差异,为了避免一些高技术水平用户的贡献值异常高,导致支配平台漏洞和补丁评估的结果,因此引入精准扶贫机制,保持平台贡献值动态平衡。
区块链网络的主链框架如图1所示,具体分为以下4层结构:
图1 区块链网络的主链框架
(1)通信层:该层分为网页应用通信形式与终端通信形式,作用是区块链和用户通信;
(2)智能合约层:方案的智能合约使用Javascript或者Golang语言编写,该层作用是操作智能合约,智能合约用于提供API接口给用户,以便于区块链底层和用户的通信;
(3)共识机制层:该层是核心部分,用户节点使用P2P网络相连的通讯模式,主链账本共享,并使用处理漏洞的贡献值计算,以及基于贡献值的随机签共识机制模块相互作用,为主链上新的区块挑选矿工,同时发放挖矿奖赏;
(4)存储层:该层作为主链区块的底部,存储区块中的交易、摘要信息,区块将通过levelDB文件格式保存,区块链网络当中的每个用户均拥有一份数据拷贝。
如果有用户申请进入区块链网络,基于电子合约的认证模块首先需要认证用户,认证完成后,便可作为网络中的成员,并得到电子合约。用户登录模块具体流程如下,它基于区块链电子合约签订的认证框架:
(1)申请进入节点,上传用户信息摘要,请求合约签订认证模块进行认证;
(2)认证模块接信息,加密封装后以广播形式通知网络中的所有节点;
(3)网络中的所有节点审核申请信息,同时反馈意见;
(4)认证模块使用安全多方计算方法,梳理所有反馈意见后,输出一个最终结果。所有节点包括新节点可查看最终结果,但无法查看私人的反馈意见;
(5)如果结果通过,认证模块收取新节点以及原有节点的电子章,签订区块链电子合约,该电子合约具备法律保障;
(6)认证模块生成新合约后,计算电子合约MD5、SHA1以及SHA256的哈希值,存储在网络的区块中,并生成合约副本,分发给网络中节点,实现不可篡改存储;
(7)如果需要从区块链中读取对应电子合约,合约获得模块可以从网络中节点按序读取对应合约,同时计算它们MD5、SHA1以及SHA256的哈希值,并同区块中的哈希值相比较,如果一致便得到该电子合约的拷贝。
当用户想要上传漏洞信息时,漏洞发布模块则将上传的漏洞信息广播到区块链上,这样一来网络中的每个节点均能读取发布的漏洞信息,任一节点均可对漏洞进行处理,同时由补丁发布模块提交补丁信息,发布模块的流程为:
(1)如果区块链中的节点想要提交漏洞源代码文件,会先计算文件的SHA256哈希值,同时存储于智能合约之中;
(2)将源代码文件与智能合约文件封装,输出文件组合包,并提交给包处理模块;
(3)包处理模块会解析包,把包还原成源代码文件和智能合约文件,依次将智能合约文件发布至主链仓库,源代码文件发布至侧链源代码仓库,跨链同步主链与侧链数据信息;
(4)发布成功后,网络将广播主链的智能合约地址给每个节点,用户可自行判断处理。
补丁提交模块的流程如下:
(1)用户请求上传补丁文件,区块链接到上传请求并接收补丁文件,计算文件的SHA256哈希值,作为文件的key,key对应的值即是补丁文件,此时调用智能合约,在侧链补丁仓库中存储键值对;
(2)补丁上传成功后,区块链便将该补丁的SHA256哈希值发送给对应的漏洞发布用户,通知用户已经提交新的补丁,此时用户需要验证补丁并反馈确认。
评估模块会对上传的补丁进行验证与反馈:
(1)漏洞发布用户接收到新补丁上传的信息后,依据补丁获取标记,到侧链补丁仓库下载对应补丁;
(2)漏洞发布用户验证新补丁,如果成功,发布者为提交者反馈本次漏洞处理的评分,反馈模块封装验证成功信号和评分,发送给提交者。与此同时,贡献值计算模块也会收到评分信息;如果失败,反馈模块则告知补丁提交者。
区块链的主链以及侧链的区块生成,通过随机签共识机制模块计算漏洞贡献值进行矿工选择,同时由该矿工生成区块;主链模块是整个网络运行的核心部分,用于专门记录链中各个节点的交互和所有行为操作,具体运作方式为:
(1)该模块根据漏洞威胁程度、漏洞处理效果两方面计算区块链网络中各节点用户的贡献值;
(2)漏洞威胁程度的判断标准与漏洞处理效果动态相关,漏洞处理效果评判标准并不是统一的,故而漏洞威胁程度动态决定漏洞处理效果的判断标准;
(3)漏洞威胁程度由复杂度、攻击影响以及创新程度决定;漏洞处理效果由发布者打分、处理时间以及补丁大小决定;
(4)通过对漏洞威胁程度、漏洞处理效果确定一个契合的权重比例,计算最终得分,作为用户提交补丁的贡献值。
方案中区块链类型为联盟链,现在主流的联盟链平台尽管都具有它们各自的认证方法,大多数是根据数字签名和CA证书结合的方式对加入节点进行验证,而仅仅依赖于数字签名和CA证书无法对联盟链中的用户节点进行监管,例如用户节点在联盟链中进行违法行为。为了对已加入联盟链的用户节点进行监管和违法行为的防范,在联盟链用户节点认证过程中加入某些法律协议是必要的。当然,这里的法律协议位于国家颁布的法律框架之下,如参考《电子签名法》以及符合国家相关法律规定的保密协议等等。
认证模块采用了一种基于电子合约的联盟链认证方式,如果新节点申请入联盟链,该用户必须提供它自己的摘要信息,并通知给当前联盟链中的现有节点,各节点需要审核新节点的摘要信息,且提出意见,接着平台会将审核意见梳理,导出最终的结果。如果最终审核结果成功,平台便会输出新节点的联盟链电子合约,而且该电子合约必须联盟链中每个节点包括新加入节点的具备法律意义的唯一标识,平台会生成电子合约拷贝,让每个节点都保存一份该拷贝,这时便完成认证过程。
该方法特点在于:(1)通过电子合同的方式确保了联盟链节点的法律效益;(2)以多副本形式让每个联盟链节点保存电子合同,避免合同丢失;(3)身份认证过程由联盟链所有节点审核,更具有安全性。
在贡献值计算模块中,方案采用了一种基于贡献值的随机签共识机制算法。共识机制是区块链关键部分,常见共识机制有PBFT实用拜占庭容错、DPoS授权股权证明、PoS股权证明、PoW工作量证明等。上述共识机制具备各自特点,但是事实上很难与实际应用相结合。
基于贡献值的随机签共识机制算法目标为通过贡献值与共识机制关联,所有场景下的贡献指标均可被当作贡献值。因为共识机制用以挑选产生区块的矿工,故而贡献值和任一节点相关,任一节点均拥有贡献值。算法取决于节点的贡献值,首先对贡献值标准化,输出合适的贡献值占比公式,用于生成唯一标记的签,然后按照节点的贡献值占比,随机将这些签发送给所有节点,贡献值越高,则得到的签数量越多。最后,随机在产生的签中选取一个,如果某个节点的签和该签一致,则确定为矿工。在下一次选择矿工的时候,需要由下一时间点的贡献值再次产生签,用以确定矿工。算法流程如图2所示。
图2 基于贡献值的随机签共识机制算法流程图
本文提出一种基于区块链技术的漏洞共享平台设计方案,并完成了系统原型的实现。系统包含用户登录、漏洞/补丁发布、漏洞/补丁评估、贡献值计算、技术水平评估、贡献值生态平衡等模块。文章重点介绍了系统实现过程中,采用的基于电子合同的联盟链身份认证方法以及基于贡献值的随机签共识机制算法。方案的设计通过共享协作式漏洞处理过程,解决了传统漏洞平台存在的中心化管理问题。此外,平台利用区块链技术具有的不可篡改特征,解决了传统漏洞平台存在的可溯源性弱的问题。