1.一种基于两阶段自编码器的工业信息物理系统攻击检测方法,其特征在于,包括以下步骤:
1)建立多设备、多链路的FDI攻击模型;
2)引入自编码器技术;
3)构建基于自编码器的生成对抗模型;
4)设计两阶段训练方法;
5)设计攻击检测算法;
6)设计基于两阶段自编码器的攻击检测方法;
所述步骤1)具体包括:多链路和多设备的FDI攻击按其发生位置分为以下两种:
①控制器‑执行器链路或设备攻击:
其中δ1为攻击向量,u1为控制器的输出值, 为执行器的输入值,即为接收值;这类攻击中,攻击者篡改了控制器的指令数据,注入的攻击数据专门用来影响执行器的任务执行,使其执行看起来正确的错误操作达到欺骗控制器的目的;
②传感器‑控制器链路或设备攻击:
其中δ2为攻击向量,y1为传感器输出, 为控制器的输入值,即为实际接收值;这类攻击主要是攻击者篡改了传感器返回给控制器的信息,干扰控制器的数据接收从而影响其调节指令的下发,欺骗了控制器,使控制器下一步发出与实际不符的控制调节指令;
将这两种攻击所产生的执行器和传感器运行数据看作是长时间的时间序列向量:
所述步骤2)中自编码器是一种无监督的神经网络算法,自编码器可以学习到输入数据向量的隐含特征,使之从高维数据变为多维数据,也就是数据降维,这一步称为编码Encoding;同时学习到的新特征还可以重构出原始输入数据,称之为解码Decoding;除了降维,自动编码还可以起到特征提取器的作用,在这里就是要将自动编码作为特征提取器使用,使其学习到传感器和执行器的多维时间序列数据的特征,使其可以重构出正常的系统运行状态时传感器和执行器的运行数据;
搭建一个自编码器需要完成三样工作:搭建编码器,搭建解码器,设定一个损失函数用于衡量由于编码压缩而损失掉的信息,编码器负责接收输入向量X,并将输入通过h函数转变为已降维的编码向量Y:Y=h(X) (4)
解码步骤将编码过的向量Y作为其输入,通过函数f得到重构向量:
定义误差err作为原始输入X与重构向量 之间的差异值, 训练的目标就
是要减少均方误差(Mean Squared Error,MSE);
所述步骤3)具体包括:首先要了解生成对抗的思想,生成对抗网络(Generative Adversarial Networks,GAN)是一种深度学习模型,由生成器G和判别器D组成;首先,G学习给定输入数据集的概率分布,并生成遵循相同分布的人工数据,接着由D计算G生成数据与真实的数据之间的相似性差距,差距值越小说明生成的伪造数据与真实原始输入越像;GAN的整个对抗学习过程可以看成是关于优化目标函数函数V(D,G)极大极小值的博弈过程:由式(6)看出,对于生成器G来说,需要尽可能的欺骗判别器D,所以需要最大化D对生成样本的判别概率D(G(z)),即最小化log(1‑D(G(z)));而对于D来说,其目的是尽可能的分辨出伪造生成样本和真实样本,所以需要最大化log(1‑D(G(z)));
根据步骤2)所述的自编码器的构造步骤,根据已描述的步骤需要构建出两个自编码器,两个都训练完成后,将其中一个编码器解码过的重构输出作为第二个编码器的输入;即第一个作为生成器第二个作为判别器进行对抗判别过程;
所述步骤4)具体包括:
阶段1:两个自编码器模型的前半部分即编码部分共享,共同使用一个编码器网络:
AE1=D1(E(X)),AE2=D2(E(X)) (7)
输入数据X由自编码器的编码部分压缩到隐空间,然后由两个编码器分别重构,直至训练到每个自编码器可以重构输入向量为止,也就是最小化以下两个等式:阶段2:两个自编码器以对抗的方式进行训练,AE1试图去欺骗AE2,并且AE2的目标是学习去判别哪些数据是真实的哪些数据是重构的;该阶段需要使AE2能够识别真实数据和来自AE1的数据,训练AE1欺骗AE2,来自AE1输出的数据再次被编码器压缩到隐空间,然后再被AE2重建;利用对抗训练的思想,该阶段AE1的目标是最小化AE2的输出和X的差异,而AE2的目标是最大化这种差异;AE1训练至能成功欺骗AE2,而AE2则是训练至区分真实数据与从AE1输出重构的数据:进一步将其误损失函数分别表示为:
在这个训练体系结构中,自编码器有双重目的;AE1使X的重构误差最小,并且还要使X与AE2对AE1输出的重构误差最小;至于AE2,与AE1类似,AE2要样本X的重构误差最小,但是AE2后面要使AE1重构的输入数据误差最大;每个自编码器的双重训练目标分别可以表示为式(8)与式(10)的线性组合:式中其中n表示训练的周期;AE2并不是严格意义上的对抗网络的判别器,因为如果AE2的输入是原始数据,那么就要用式(8)来计算损失;当AE2的输入是AE1的重建时,AE2的损失就是用式(10)来计算;在训练过程中的参数更新,使用的是基于Adam优化和梯度下降优化的小批量优化算法;
所述步骤5)具体包括:根据所述阶段1和阶段2的训练方法,在检测阶段,即测试阶段,其异常评分定义为:其中α+β=1并且用于将假阳性和真阳性之间的权衡参数化;如果α大于β,会减少真阳性和假阳性的数量;相反,如果取小于β的α,会增加真阳性的数量,但也会增加假阳性的数量;将α<β表示高灵敏度检测场景,将α>β表示低灵敏度检测场景;允许使用单个训练模型在推理期间获得一组不同的灵敏度异常分数;较大的α对应于在异常分数中更重视AE1自动编码器的重建误差,而较大的β对应于更重视AE2自动编码器的重建误差;无需重新训练模型即可重新调整检测灵敏度;α和β的可参数化调节使得检测模型的灵敏度可以满足各种各样的生产环境的要求;
所述步骤6)具体包括:整个攻击检测方法分为三步:
第一步:数据预处理;训练数据集归一化并分成长度为K的时间序列窗口;单变量时间序列在每一个时刻只包含一个变量,而多维时间序列在每个时刻含有多个变量Γ={x1,mx2...,xT},x∈R ,为了对当前时刻与前面时刻之间的依赖关系进行数学建模,这里再次定义Xt,在给定时间窗口长度K和时刻t下:Xt={xt‑(K‑1),xt‑(K‑2),...,xt‑1,xt};可以将原始时间序列Γ变换为一个时间窗口序列X={X1,...,XT}作为训练输入;
第二步:训练模型;利用步骤4设计的方法来训练模型,训练是离线进行的,旨在捕获到多变量时间序列在某一段时期内的正常行为,并且为每一个时间窗口生成异常判别分数,注意选择不包含大量带攻击过后的异常时间段数据;
第三步:攻击检测;这一步采用第二步训练好的模型在线执行,伴随着新的时间窗口的形成,该模型会生成每一个窗口对应的异常分数Sct,若是高于给定的阈值λ,则新的时间窗口对应的时间段是受到攻击的异常时间段。