1.一种基于数据分析的软件安全需求推荐模型的实现方法,该方法包括以下流程:
步骤一、收集不同软件产品的安全威胁描述:从软件securitytarget文档中手动抽取出安全威胁描述,构建安全威胁描述数据库;依据在securitytarget文档中包含的软件产品的安全威胁,构建每个软件产品和安全威胁描述之间的映射关系,同时,根据软件securitytarget文档中所需的安全需求,构建产品与安全需求之间的映射关系;
步骤二、提取不同软件产品之间的安全威胁的特征:首先,对commoncriteria官网中提供的securitytarget文档进行详细解读,从中抽取出安全威胁描述构成数据集;然后,计算不同产品之间安全威胁的相似度,并将数据集中的安全威胁编码为向;基于步骤一收集的不同软件产品的安全威胁描述,使用自然语言处理技术中的语义模型skip-thoughts来聚类不同软件产品中安全威胁之间的相似度,并生成一个不同软件产品之间安全威胁的安全威胁相似度特征矩阵,安全威胁相似度特征矩阵表示为
s(pnt'x1,pmt'x2),m∈n,n=1,2,...,n,n≠m,x1∈mn,x2=1,2,...,mm
其中,s表示不同产品之间的安全威胁相似度,pnt’表示产品n编码后的安全威胁向量,n表示产品的编号,m表示安全威胁的数量,mn表示产品n的威胁数量,mm表示产品m的威胁数量;
过滤掉安全威胁相似度特征矩阵的特征值为1、2或3时的安全威胁,继而得到相似安全威胁特征;
步骤三、构建共现模型,即删除中间产品层,为每个软件产品的安全威胁标记安全需求,挖掘新的安全威胁与安全需求映射关系:首先,根据所选类别标记软件产品的安全要求构建当前产品和对应的安全需求的二元组;然后,根据通用标准对安全需求进行预处理和编号;根据软件产品和安全威胁的一对多关系以及软件产品和安全需求之间的一对多关系,删除中间产品层后,获得安全威胁与安全要求之间的映射关系,进而,建立安全威胁-安全需求之间的关系,将安全威胁与安全需求的映射关系表示如下:
{<ti,1,ti,2,…ti,j,…,ti,n>,<sri>}
其中,i表示产品编号,n表示产品i的安全威胁的数量,ti,j表示安全威胁描述,sri表示产品i的安全需求,其包括安全保证组件和安全功能组件;
计算每个软件产品与其他软件产品的共有安全需求,获得n个[n-1,k]的0-1矩阵,k表示当前软件产品所包含的安全需求组件的总数;结合安全威胁相似度矩阵,进一步得到了不同安全威胁之间的共有组件标识矩阵
w(pitncj)=w-1(pitncj)+s(pnti',pmt'x2)
其中,w(pitncj)表示第n个产品的第i个威胁的第j个组件的权重,初始化为0,w-1(pitncj)表示第n个产品的第i个威胁的第j个组件在前一个状态时的权重;
根据步骤二得到的安全威胁相似度特征矩阵,结合标注的安全需求,通过累加权重的方式得到安全威胁与安全需求之间的相关程度矩阵
经过以上处理之后得到了安全威胁与安全需求的共现模型,共现模型的输入为:不同产品之间的安全威胁相似度特征矩阵s、每个安全威胁的安全需求向量集