网络安全态势感知研究综述、MD5C#实现

之前接触过一点网络空间安全相关的东西,做了一些笔记,简单分享一下。

笔记三 网络安全态势感知研究综述

对经典的态势感知模型和新发展的网络安全态势感知模型进行了总结与对比;介绍了网络安全态势感知的关键技术,主要分为基于层次化分析、机器学习、免疫系统和博弈论的技术;介绍了近年来网络安全态势感知在因特网、工控网和物联网中的应用;对其未来发展趋势和待解决的问题进行了总结与展望。

一、网络安全态势感知(Network Security Situation Awareness,NSSA)是近几年发展起来的一个热门研究领域。它能够融合所有可获取的信息并对网络的安全态势进行评估,为安全分析员提供决策依据,将不安全因素带来的风险和损失降到最低,在提高网络的监控能力、应急响应能力和预测网络安全的发展趋势等方面都具有重要的意义。

网络安全态势感知是指通过收集网络环境中综合、全面的安全要素并进行数据融合后,对网络的安全态势有宏观、全面的认知,并且能对网络系统的安全趋势进行预测的过程,是保障网络安全的有效手段。

二、网络安全态势感知的模型

数据融合作为态势感知的核心,其中最具影响力的是JDL(Joint Directors of Laboratories)数据融合模型。

JDL 模型将融合分为4 个层次:目标细化、态势细化、风险细化、过程细化,其中:态势感知作为中间层次,向下从低层次融合接收网络元素的监测数据,为态势感知提供信息来源;向上为高层次融合提供态势信息,用于威胁分析和决策支持。

三、网络安全态势感知的关键技术

 

对网络安全态势感知的关键技术进行了总结和分类,主要分为基于层次化分析、机器学习、免疫系统和博弈论的态势感知方法

四、基于层次化分析的态势感知技术

 

层次分析法(Analytic Hierarchy Process,AHP)是一种定量和定性相结合的多目标、多准则的决策分析方法,基于层次化分析法的态势感知将较为复杂的态势感知过程分层处理,将网络系统分为服务、主机、系统三个层面,简化每一层的处理过程,采取自下而上,先局部后整体的方针,通过计算底层安全要素的局部影响来评估系统整体的安全态势。

 

国内具有较大参考价值的是陈秀真等人的层次化网络系统安全威胁态势量化评估模型,该模型从上到下分为网络系统、主机、服务和攻击/漏洞4 个层次,如图3 所示,采取“自下而上、先局部后整体”的评估策略,

五、基于机器学习的态势感知技术

 

安全态势值具有不确定性和非线性的特点,而机器学习在描述非线性的复杂系统方面有着很好的性能,并且有着很好的自适应、自组织和无限逼近能力,因此使用机器学习来进行态势评估和态势预测的方法受到了人们的广泛关注。下面主要分为支持向量机(SVM)、RBF神经网络和小波神经网络三种方法进行讨论。

  1. 支持向量机(SVM)

由于SVM 具有良好的泛化能力且不容易过拟合,很多研究人员使用SVM 以及支持向量回归(SVR)的方法进行态势评估和预测。虽然与神经网络相比SVM 具有收敛速度快、抗过拟合能力强等优点,但单独使用 SVM 做预测模型也存在训练过程中参数选取盲目的问题,因此为提高预测精度,Chen 等[26]将回归预测的思想引入SVM,提出了RF-SVM 算法,该算法可以根据历史攻击数据预测未来网络数据流中的潜在的攻击,不仅提高了预测准确率,而且降低了误差。许建华[27]将支持向量回归算法(SVR)优良的非线性拟合能力和果蝇优化算法(FOA)良好的全局寻优能力相结合,利用果蝇优化算法对支持向量回归的参数进行优化,避免了参数选择的盲目性,提高了网络安全态势预测的准确性。

2、RBF 神经网络

RBF 神经网络具有函数逼近和自适应能力强、学习速度快等优点,可以描述非线性的复杂系统,因此适用于网络安全态势预测,例如,将RBF 神经网络和时间序列预测法结合可以很好地实现网络安全态势预测。但是神经网络在实际应用时会产生收敛速度慢、网络层次设计困难和容易陷入局部最优解的情况,因此很多学者结合其他方法来对RBF 神经网络的参数和结构进行优化。江洋等人提出采用改进的粒子群算法(PSO)优化RBF 神经网络;谢丽霞等人利用改进的遗传算法来对RBF 神经网络的参数进行优化;李喜喜则将C-均值聚类(FCM)和混合递阶遗传算法相结合,来对传统 RBF 神经网络的学习过程进行改进。

  1. 小波神经网络

小波神经网络结构更简单,收敛速度更快、学习能力更强、精度更高,在达到全局最优解的同时还能够保持局部细节最优解。由于这些显著优点,人们开始将小波神经网络应用到态势感知领域,并且可以使用遗传算法、种群优化算法等对小波神经网络进行优化。Cong 等提出基于优化的动态小波神经网络的网络安全态势感知,该方法可以将异构的安全数据和威胁的演化趋势的动态感知相结合,在一定程度上有着自我调节和控制的能力,不仅达到了态势感知的目标,并且提供了网络监督和管理的新方法。

 

六、基于免疫系统的态势感知技术

免疫是指生物体对感染具有的抵抗能力,计算机安全系统与生物免疫系统中遇到的问题非常相似,由于生物免疫系统有着特征提取、分布式检测、自我容忍、自适应、稳健等优势和模式识别、学习、记忆等能力,很适合用作态势感知的研究。

一些模型:

Sun 等[33]提出基于抗体浓度的态势感知,对其原则和框架进行了描述,建立了用于态势感知的淋巴细胞生命过程的数学模型。该系统可以学习到所遭受的攻击以及入侵的地点、严重性和最严重的区域。

由于人工免疫系统有着可扩展性差和覆盖范围受限的缺点,Qiao 等[34]提出了协同人工免疫系统的概念和相关的态势感知模型。在该模型中,不同计算机中的记忆检测器可以共享不同点以提高人工免疫系统的覆盖率和可扩展性。

Zhang 等[35]将人工免疫和云模型理论相结合,利用危险理论和云模型的入侵检测技术对网络攻击进行实时监控;通过抗体浓度的变化评估网络安全状况,利用基于云模型的时间序列预测机制进行预测。

七、基于博弈论的态势感知技术

传统的态势感知方法大都仅着眼于攻击或防守一方,忽略了攻防双方策略相互依存的情况,而在实际攻防过程中必须充分考虑对方可能的策略并在此基础上制定自身的对策。只要网络安全中的攻防双方存在,两者间的博弈过程也就始终存在,不考虑网络安全中攻防双方的对抗性,往往会导致结果不够准确,大大降低了态势感知模型对实际情况的描述能力。

博弈论是研究具有斗争或竞争性质的数学理论和方法,博弈双方的概念、特征与网络安全中的攻防双方具有相似性,研究人员一直在探索博弈论方法的适用性,以解决网络中的安全问题,将博弈论的思想运用于网络安全态势感知逐渐成为一个热门的研究方向。

一些基于博弈论的态势感知技术:

张勇等提出一种基于马尔可夫博弈分析的网络安全态势感知方法,通过对威胁、管理员和普通用户的行为进行博弈分析,建立三方参与的马尔可夫博弈模型,并对相关算法进行优化分析,使评估过程能够实时运行。

Zhou 等提出基于阻止威胁传播的网络安全态势感知方法,通过在攻击者、防御者和中间人三者间构建博弈模型来帮助系统管理者进行实时分析,从而对最脆弱的节点进行加强。

针对现有的一些评估方法缺少对威胁信息、防护信息、环境信息的综合分析导致评估结果不准确的问题,翁芳雨提出一种基于攻防随机博弈模型的网络安全态势评估模型。该模型通过建立威胁传播网络,对威胁动作和防护策略的博弈过程建立随机博弈模型并求解混合策略纳什均衡,基于纳什均衡的结果对攻防双方动作进行判断并对网络安全态势量化分析。

八、网络安全态势感知的应用场景

1、因特网

在因特网中,态势信息主要通过防火墙日志、入侵检测日志、病毒日志、网络扫描等方法提取,通过层次化分析、机器学习、D-S 证据理论、博弈论、免疫系统等方法进行态势感知[53-54],从资产、脆弱性、威胁等角度进行态势值的计算。

2、工业网和物联网

近年来,工业控制系统与互联网的深度融合使其暴露在很多威胁和攻击之下,这对国家安全、经济发展和社会稳定等方面产生了严重影响,因此可以利用态势感知对工控系统的整体运行情况进行有效地监测和控制,从而保证工控系统的安全运行。

态势感知的研究仍然处于初级阶段,仍有很多问题需要完善和解决,但随着相关技术和研究的不断完善,态势感知定会得到更大的发展,发挥其本身的优势和特点为网络安全提供强有力的保障。

参考文献:石乐义, 刘 佳, 刘祎豪,朱红强,段鹏飞 . 网络安全态势感知研究综述 [J]. 计算机工程与应用2019,55(24)

 

笔记四 MD5C#实现

在.net中,由 System.Security.Cryptography 命名空间提供了加密和哈希的几个类。其中 md5 编码由 MD5CryptoServiceProvider 实现。

在使用过程中由于 MD5CryptoServiceProvider 提供了多种方法去计算md5的hash值,介绍计算md5的几种常见方法

 

先引用命名空间:

using System.Security.Cryptography;

using System.Text;

然后:

MD5CryptoServiceProvider md5=new MD5CryptoServiceProvider();//新建类

string source="HelloWorld";//定义字符串source

byte[] message;//定义字节类型message

message=Encoding.Default.GetBytes(source);// 在派生类中重写时,将指定字符串中的所有字符编码为一个字节序列

 

方法1

//  使用ComputeHash方法,适合用于计算简单的字符串的md5值时

md5.ComputeHash(message);

//输出:将指定的字符串值(后跟当前行终止符)写入标准输出流。

// 强制类型转换:将 8 位无符号整数的数组转换为其用 Base64 数字编码的等效字符串表示形式。

Console.WriteLine(Convert.ToBase64String(md5.Hash));

 

//方法2

//初始化:将哈希算法重置为其初始状态。 (继承自 HashAlgorithm)

//  使用TransformFinalBlock方法,适合用于原始数据不多时

md5.Initialize();

// TransformBlock(Byte[], Int32, Int32, Byte[], Int32)计算输入字节数组指定区域的哈希值,并将输入字节数组指定区域复制到输出字节数组的指定区域。 (继承自 HashAlgorithm)

md5.TransformFinalBlock(message,0,message.Length);

Console.WriteLine(Convert.ToBase64String(md5.Hash));

 

//方法3

//  将原始消息分两次编码,得出的结果跟上面的一样,适合用于计算大量原始数据时,例如计算一个文件的md5值

md5.Initialize();

message=Encoding.Default.GetBytes("Hello");

md5.TransformBlock(message,0,message.Length, message,0);

message=Encoding.Default.GetBytes("World");

md5.TransformFinalBlock(message,0,message.Length);

Console.WriteLine(Convert.ToBase64String(md5.Hash));

参考文献:CSDN博客原文链接:https://blog.csdn.net/kwanhong/article/details/535747

笔记五 RSA加密原理

CTF密码学类题目中,RSA加密可谓是很重要且常见的加密类型,今天就总结下RSA加密的原理及解密方法。

RSA算法:

RSA加密算法是一种非对称加密算法,RSA算法相比别的算法思路非常清晰,但是想要破解的难度非常大。

RSA算法基于一个非常简单的数论事实:两个素数相乘得到一个大数很容易,但是由一个大数分解为两个素数相乘却非常难。

公钥和私钥的生成:

第一步:随机找两个质数 P 和 Q ,P 与 Q 越大,越安全

比如 P = 67 ,Q = 71。计算他们的乘积 n = P * Q = 4757 ,转化为二进为1 0010 1001 0101,该加密算法即为 13 位,实际算法是 1024 位 或 2048 位,位数越长,算法越难被破解。

 

第二步:计算 n 的欧拉函数 φ(n)

φ(n) 表示在小于等于 n 的正整数之中,与 n 构成互质关系的数的个数。

例如:在 1 到 8 之中,与 8 形成互质关系的是1、3、5、7,所以 φ(n) = 4。 如果 n = P * Q,P 与 Q 均为质数,则 φ(n) = φ(P * Q)= φ(P - 1)φ(Q - 1) = (P - 1)(Q - 1) 。 本例中 φ(n) = 66 * 70 = 4620,这里记为 m, m = φ(n) = 4620

 

第三步:随机选择一个整数 e,条件是1< e < m,且 e 与 m 互质

公约数只有 1 的两个整数,叫做互质整数,这里我们随机选择 e = 101 请注意不要选择 4619,如果选这个,则公钥和私钥将变得相同。

 

第四步:有一个整数 d,可以使得 e*d 除以 m 的余数为 1

即找一个整数 d,使得 (e * d ) % m = 1。 等价于e * d - 1 = y * m ( y 为整数) 找到 d ,实质就是对下面二元一次方程求解。 e * x - m * y =1 ,其中 e = 101,m = 4620; 101x - 4620y =1 这个方程可以用扩展欧几里得算法求解,此处省略具体过程。

总之算出一组整数解 (x,y )= ( 1601,35),即 d = 1601。 到此密钥对生成完毕。不同的 e 生成不同的 d,因此可以生成多个密钥对。 本例中公钥(n,e) = (4757 , 101)私钥为 (n,d) = (4757 ,1601) ,仅 (n,e) = (4757 , 101)是公开的,其余数字均不公开。可以想像如果只有 n 和 e,如何推导出 d,目前只能靠暴力破解,位数越长,暴力破解的时间越长。

 

加密生成密文 :

比如甲向乙发送汉字“中”,就要使用乙的公钥加密汉字 “中”, 以 utf-8 方式编码为 [e4 b8 ad],转为 10 进制为 [228,184,173]。要想使用公钥(n,e) = (4757 , 101)加密,要求被加密的数字必须小于 n,被加密的数字必须是整数,字符串可以取 ascii 值或unicode值,因此将“中”字折为三个字节 [228,184,173],分别对三个字节加密。

假设 a 为明文,b 为密文,则按下列公式计算出 b

加密公式

a^e % n = b

计算 [228,184,173]的密文:

228^101 % 4757 = 4296

184^101 % 4757 = 2458

173^101 % 4757 = 3263

即 [228,184,173]加密后得到密文 [4296,2458,3263] ,如果没有私钥 d ,神仙也无法从 [4296,2458,3263]中恢复 [228,184,173]。

 

解密生成明文:(只有用私钥才能)

乙收到密文 [4296,2458,3263],并用自己的私钥(n,d) = (4757 ,1601) 解密。解密公式如下:

假设 a 为明文,b 为密文,则按下列公式计算出 a

a^d % n = b

密文 [4296,2458,3263] 的明文如下

4296^1601% 4757 = 228

2458^1601% 4757 = 184

3263^1601% 4757 = 173

即密文 [4296,2458,3263] 解密后得到 [228,184,173]
将[228,184,173] 再按 utf-8 解码为汉字 “中”,至此解密完毕。

参考文献:CSDN博客原文链接:https://blog.csdn.net/qq_43531669/article/details/99608686

 

猜你喜欢

转载自blog.csdn.net/dujuancao11/article/details/109138455