《2022年网络安全导论大作业 .pdf》由会员分享,可在线阅读,更多相关《2022年网络安全导论大作业 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、网络安全导论课程考核大作业题目:AES 高级加密标准网络攻击图研究院(系) :物联网工程学院专业: 计算机科学与技术班级: 计科 1101 班学号: 0304110106 姓名: 冯小龙成绩:目录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - 1.AES 高级加密标准 . 31.1 AES 算法基本原理 . 31.1.1 AddRoundKey 步骤 . 31.1.2 SubBytes 步骤 . 41.1.3 ShiftRow
2、s 步骤 . 41.1.4 MixColumns 步骤 . 51.2 AES 算法流程图 . 61.3 测试结果 . 71.4 程序清单 . 71.5 设计心得 . 172. 网络攻击图研究. 182.1 基本概念 . 182.2 研究现状 . 182.2.1、针对攻击模型的研究. 192.2.2、攻击分类研究. 192.2.3、具体攻击原理的研究. 192.2.3.1 认证协议攻击研究. 192.2.3.2 缓冲溢出研究. 192.2.3.3 木马技术研究. 202.2.4、攻击发现技术研究. 202.3 面临的问题 . 202.3.1、可扩展性 . 202.3.2、漏洞细节 . 202.3
3、.3、可达性计算. 202.3.4、攻击图分析. 212.4 发展趋势 . 212.5 参考文献 . 21名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 1.AES 高级加密标准密码学中的高级加密标准(Advanced Encryption Standard ,AES) ,又称 Rijndael 加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高
4、级加密标准由美国国家标准与技术研究院(NIST )于 2001 年 11 月 26 日发布于FIPS PUB 197,并在 2002 年 5 月 26 日成为有效的标准。 2006 年,高级加密标准已然成为对称密钥加密中最流行的算法之一。1.1 AES算法基本原理AES 加密过程是在一个44 的字节矩阵上运作,这个矩阵又称为“体(state) ” ,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte) 。 (Rijndael 加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES 加密循环(除最后一轮外)均包含4 个步骤:1.AddRoundKey :矩阵中的每
5、一个字节都与该次回合金钥(round key )做 XOR 运算;每个子密钥由密钥生成方案产生。2.SubBytes:通过个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。3.ShiftRows :将矩阵中的每个横列进行循环式移位。4.MixColumns :为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。最后一个加密循环中省略MixColumns 步骤,而以另一个AddRoundKey 取代。1.1.1 AddRoundKey 步骤AddRoundKey步骤中,回合密钥将会与原矩阵合并。在每次的加密循环中,都会由主密钥产生一把回合密钥(通过 Rijnd
6、ael 密钥生成方案产生) ,这把密钥大小会跟原矩阵一样,以与原矩阵中每个对应的字节作异或()加法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - 1.1.2 SubBytes步骤在 SubBytes 步骤中,矩阵中的各字节通过一个8 位的 S-box 进行转换。这个步骤提供了加密法非线性的变换能力。S-box 与 GF(28) 上的乘法反元素有关,已知具有良好的非线性特性。为了避免简单代数性质的攻击,S-box 结合了乘法反
7、元素及一个可逆的仿射变换矩阵建构而成。此外在建构S-box 时,刻意避开了固定点与反固定点,即以S-box 替换字节的结果会相当于错排的结果。此条目有针对S-box 的详细描述: Rijndael S-box 1.1.3 ShiftRows 步骤ShiftRows 是针对矩阵的每一个横列操作的步骤。在此步骤中, 每一行都向左循环位移某个偏移量。在AES 中(区块大小128 位) ,第一行维持不变,第二行里的每个字节都向左循环移动一格。 同理,第三行及第四行向左循环位移的偏移量就分别是2和 3。128 位和 192比特的区块在此步骤的循环位移的模式相同。经过ShiftRows 之后,矩阵中每一竖
8、列,都是由输入矩阵中的每个不同列中的元素组成。Rijndael 算法的版本中, 偏移量和AES 有少许不同;对于长度256 比特的区块,第一行仍然维持不变,第二行、第三行、第四行的偏移量分别是 1 字节、 3 字节、 4 位组。除此之外,ShiftRows 操作步骤在Rijndael 和 AES 中完全相同。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - 1.1.4 MixColumns 步骤在 MixColumns 步骤,
9、每一直行的四个字节通过线性变换互相结合。每一直行的四个元素分别当作1 , x , x2 , x3 的系数, 合并即为 GF(28)中的一个多项式,接着将此多项式和一个固定的多项式c(x) = 3x3 + x2 + x + 2在 modulo x4+1 下相乘。此步骤亦可视为Rijndael有限域之下的矩阵乘法。MixColumns 函数接受4 个字节的输入,输出4 个字节,每一个输入的字节都会对输出的四个字节造成影响。因此ShiftRows 和 MixColumns 两步骤为这个密码系统提供了扩散性。矩阵表示形式:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
10、 - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - 1.2 AES算法流程图加密流程图如下:算法流程图如下:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - 1.3 测试结果测试结果如下:1.4 程序清单#include #include #include usingnamespace std; / 构造AES 类class AES publi
11、c : AES(unsigned char* key); /AES类中的构造函数,给类传进密钥virtual AES(); / 释放类unsigned char * Cipher(unsignedchar * input); / 先将输入的明文按列序组合成4*4的矩阵,直接与第 0组密钥(即输入的密钥)相加(异或),作为轮加密的输入unsigned char * InvCipher(unsigned char * input);/ 对加密后的函数逆字节替代,逆行移位,逆列混淆,得到解密函数的输入字符串void * Cipher(void * input, int length=0); / 加密
12、函数void * InvCipher(void * input, int length); / 解密函数private: unsigned char Sbox256; / 仿射变换置换表名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - unsigned char InvSbox256; / 乘法逆置换表unsigned char w1144; / 密钥调度表void KeyExpansion( unsignedchar* key
13、, unsignedchar w44); / 密钥扩展unsigned char FFmul( unsignedchar a, unsigned char b); / 有限域 GF(28)上的乘法void SubBytes( unsignedchar state4); / 用一个代替表替换单个字节void ShiftRows(unsignedchar state4); / 行移位变换void MixColumns( unsignedchar state4); / 列混淆变换void AddRoundKey(unsignedchar state4, unsignedchar k4);/ 轮密钥加
14、变换void InvSubBytes( unsignedchar state4); / 逆字节替代void InvShiftRows(unsignedchar state4); / 逆行移位void InvMixColumns( unsignedchar state4); / 逆列混淆; / 用于加密方法的两个表被初始化AES:AES(unsignedchar* key) unsigned char sBox = /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */0 x63,0 x7c,0 x77,0 x7b,0 xf2,0 x6b,0 x6f,0 xc5,0 x30,
15、0 x01,0 x67,0 x2b,0 xfe,0 xd7,0 xab,0 x76, /*0*/0 xca,0 x82,0 xc9,0 x7d,0 xfa,0 x59,0 x47,0 xf0,0 xad,0 xd4,0 xa2,0 xaf,0 x9c,0 xa4,0 x72,0 xc0, /*1*/0 xb7,0 xfd,0 x93,0 x26,0 x36,0 x3f,0 xf7,0 xcc,0 x34,0 xa5,0 xe5,0 xf1,0 x71,0 xd8,0 x31,0 x15, /*2*/0 x04,0 xc7,0 x23,0 xc3,0 x18,0 x96,0 x05,0 x9a,
16、0 x07,0 x12,0 x80,0 xe2,0 xeb,0 x27,0 xb2,0 x75, /*3*/0 x09,0 x83,0 x2c,0 x1a,0 x1b,0 x6e,0 x5a,0 xa0,0 x52,0 x3b,0 xd6,0 xb3,0 x29,0 xe3,0 x2f,0 x84, /*4*/0 x53,0 xd1,0 x00,0 xed,0 x20,0 xfc,0 xb1,0 x5b,0 x6a,0 xcb,0 xbe,0 x39,0 x4a,0 x4c,0 x58,0 xcf, /*5*/0 xd0,0 xef,0 xaa,0 xfb,0 x43,0 x4d,0 x33,
17、0 x85,0 x45,0 xf9,0 x02,0 x7f,0 x50,0 x3c,0 x9f,0 xa8, /*6*/0 x51,0 xa3,0 x40,0 x8f,0 x92,0 x9d,0 x38,0 xf5,0 xbc,0 xb6,0 xda,0 x21,0 x10,0 xff,0 xf3,0 xd2, /*7*/名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - 0 xcd,0 x0c,0 x13,0 xec,0 x5f
18、,0 x97,0 x44,0 x17,0 xc4,0 xa7,0 x7e,0 x3d,0 x64,0 x5d,0 x19,0 x73, /*8*/0 x60,0 x81,0 x4f,0 xdc,0 x22,0 x2a,0 x90,0 x88,0 x46,0 xee,0 xb8,0 x14,0 xde,0 x5e,0 x0b,0 xdb, /*9*/0 xe0,0 x32,0 x3a,0 x0a,0 x49,0 x06,0 x24,0 x5c,0 xc2,0 xd3,0 xac,0 x62,0 x91,0 x95,0 xe4,0 x79, /*A*/0 xe7,0 xc8,0 x37,0 x6d
19、,0 x8d,0 xd5,0 x4e,0 xa9,0 x6c,0 x56,0 xf4,0 xea,0 x65,0 x7a,0 xae,0 x08, /*B*/0 xba,0 x78,0 x25,0 x2e,0 x1c,0 xa6,0 xb4,0 xc6,0 xe8,0 xdd,0 x74,0 x1f,0 x4b,0 xbd,0 x8b,0 x8a, /*C*/0 x70,0 x3e,0 xb5,0 x66,0 x48,0 x03,0 xf6,0 x0e,0 x61,0 x35,0 x57,0 xb9,0 x86,0 xc1,0 x1d,0 x9e, /*D*/0 xe1,0 xf8,0 x98
20、,0 x11,0 x69,0 xd9,0 x8e,0 x94,0 x9b,0 x1e,0 x87,0 xe9,0 xce,0 x55,0 x28,0 xdf, /*E*/0 x8c,0 xa1,0 x89,0 x0d,0 xbf,0 xe6,0 x42,0 x68,0 x41,0 x99,0 x2d,0 x0f,0 xb0,0 x54,0 xbb,0 x16 /*F*/; / 下面是逆置换表,解密时使用unsigned char invsBox256 = /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */0 x52,0 x09,0 x6a,0 xd5,0 x30,0 x
21、36,0 xa5,0 x38,0 xbf,0 x40,0 xa3,0 x9e,0 x81,0 xf3,0 xd7,0 xfb, /*0*/0 x7c,0 xe3,0 x39,0 x82,0 x9b,0 x2f,0 xff,0 x87,0 x34,0 x8e,0 x43,0 x44,0 xc4,0 xde,0 xe9,0 xcb, /*1*/0 x54,0 x7b,0 x94,0 x32,0 xa6,0 xc2,0 x23,0 x3d,0 xee,0 x4c,0 x95,0 x0b,0 x42,0 xfa,0 xc3,0 x4e, /*2*/0 x08,0 x2e,0 xa1,0 x66,0 x
22、28,0 xd9,0 x24,0 xb2,0 x76,0 x5b,0 xa2,0 x49,0 x6d,0 x8b,0 xd1,0 x25, /*3*/0 x72,0 xf8,0 xf6,0 x64,0 x86,0 x68,0 x98,0 x16,0 xd4,0 xa4,0 x5c,0 xcc,0 x5d,0 x65,0 xb6,0 x92, /*4*/名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - 0 x6c,0 x70,0
23、x48,0 x50,0 xfd,0 xed,0 xb9,0 xda,0 x5e,0 x15,0 x46,0 x57,0 xa7,0 x8d,0 x9d,0 x84, /*5*/0 x90,0 xd8,0 xab,0 x00,0 x8c,0 xbc,0 xd3,0 x0a,0 xf7,0 xe4,0 x58,0 x05,0 xb8,0 xb3,0 x45,0 x06, /*6*/0 xd0,0 x2c,0 x1e,0 x8f,0 xca,0 x3f,0 x0f,0 x02,0 xc1,0 xaf,0 xbd,0 x03,0 x01,0 x13,0 x8a,0 x6b, /*7*/0 x3a,0
24、x91,0 x11,0 x41,0 x4f,0 x67,0 xdc,0 xea,0 x97,0 xf2,0 xcf,0 xce,0 xf0,0 xb4,0 xe6,0 x73, /*8*/0 x96,0 xac,0 x74,0 x22,0 xe7,0 xad,0 x35,0 x85,0 xe2,0 xf9,0 x37,0 xe8,0 x1c,0 x75,0 xdf,0 x6e, /*9*/0 x47,0 xf1,0 x1a,0 x71,0 x1d,0 x29,0 xc5,0 x89,0 x6f,0 xb7,0 x62,0 x0e,0 xaa,0 x18,0 xbe,0 x1b, /*A*/0
25、xfc,0 x56,0 x3e,0 x4b,0 xc6,0 xd2,0 x79,0 x20,0 x9a,0 xdb,0 xc0,0 xfe,0 x78,0 xcd,0 x5a,0 xf4, /*B*/0 x1f,0 xdd,0 xa8,0 x33,0 x88,0 x07,0 xc7,0 x31,0 xb1,0 x12,0 x10,0 x59,0 x27,0 x80,0 xec,0 x5f, /*C*/0 x60,0 x51,0 x7f,0 xa9,0 x19,0 xb5,0 x4a,0 x0d,0 x2d,0 xe5,0 x7a,0 x9f,0 x93,0 xc9,0 x9c,0 xef, /
26、*D*/0 xa0,0 xe0,0 x3b,0 x4d,0 xae,0 x2a,0 xf5,0 xb0,0 xc8,0 xeb,0 xbb,0 x3c,0 x83,0 x53,0 x99,0 x61, /*E*/0 x17,0 x2b,0 x04,0 x7e,0 xba,0 x77,0 xd6,0 x26,0 xe1,0 x69,0 x14,0 x63,0 x55,0 x21,0 x0c,0 x7d /*F*/; memcpy(Sbox, sBox, 256); memcpy(InvSbox, invsBox, 256); KeyExpansion(key, w); AES:AES() uns
27、ignedchar* AES:Cipher(unsignedchar * input) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 21 页 - - - - - - - - - unsigned char state44; int i,r,c; for (r=0; r4; r+) for (c=0; c4 ;c+) staterc = inputc*4+r; AddRoundKey(state,w0); for (i=1; i=10; i+) SubBytes(st
28、ate); ShiftRows(state); if (i!=10)MixColumns(state); AddRoundKey(state,wi); for (r=0; r4; r+) for (c=0; c4 ;c+) inputc*4+r = staterc; return input; unsignedchar* AES:InvCipher(unsignedchar* input) unsigned char state44; int i,r,c; for (r=0; r4; r+) for (c=0; c=0; i-) InvShiftRows(state); InvSubBytes
29、(state); AddRoundKey(state, wi); if (i) InvMixColumns(state); for (r=0; r4; r+) for (c=0; c4 ;c+) inputc*4+r = staterc; return input; void * AES:Cipher(void * input, int length) unsigned char * in = (unsigned char *) input; int i; if (!length) while (*(in+length+); in = (unsignedchar *) input; for (
30、i=0; ilength; i+=16) Cipher(in+i); return input; void * AES:InvCipher(void * input, int length) unsigned char * in = (unsigned char *) input; int i; for (i=0; ilength; i+=16) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 21 页 - - - - - - - - - InvCipher(in+i)
31、; return input; void AES:KeyExpansion(unsignedchar* key, unsigned char w44) int i,j,r,c; unsigned char rc = 0 x01, 0 x02, 0 x04, 0 x08, 0 x10, 0 x20, 0 x40, 0 x80, 0 x1b, 0 x36; for (r=0; r4; r+) for (c=0; c4; c+) w0rc = keyr+c*4; for (i=1; i=10; i+) for (j=0; j4; j+) unsignedchar t4; for (r=0; r4;
32、r+) tr = j ? wirj-1 : wi-1r3; if (j = 0) unsigned char temp = t0; for (r=0; r3; r+) tr = Sboxt(r+1)%4; t3 = Sboxtemp; t0 = rci-1; for (r=0; r4; r+) wirj = wi-1rj tr; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 21 页 - - - - - - - - - unsignedchar AES:FFmul(
33、unsignedchar a, unsignedchar b) unsigned char bw4; unsigned char res=0; int i; bw0 = b; for (i=1; i4; i+) bwi = bwi-11; if (bwi-1&0 x80) bwi=0 x1b; for (i=0; ii)&0 x01) res = bwi; return res; void AES:SubBytes( unsignedchar state4) int r,c; for (r=0; r4; r+) for (c=0; c4; c+) staterc = Sboxstaterc;
34、void AES:ShiftRows(unsigned char state4) unsigned char t4; int r,c; for (r=1; r4; r+) for (c=0; c4; c+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 21 页 - - - - - - - - - tc = stater(c+r)%4; for (c=0; c4; c+) staterc = tc; void AES:MixColumns( unsignedchar
35、state4) unsigned char t4; int r,c; for (c=0; c 4; c+) for (r=0; r4; r+) tr = staterc; for (r=0; r4; r+) staterc = FFmul(0 x02, tr) FFmul(0 x03, t(r+1)%4) FFmul(0 x01, t(r+2)%4) FFmul(0 x01, t(r+3)%4); void AES:AddRoundKey( unsignedchar state4, unsignedchar k4) int r,c; for (c=0; c4; c+) for (r=0; r4
36、; r+) staterc = krc; void AES:InvSubBytes(unsignedchar state4) int r,c; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 21 页 - - - - - - - - - for (r=0; r4; r+) for (c=0; c4; c+) staterc = InvSboxstaterc; void AES:InvShiftRows(unsignedchar state4) unsigned char
37、 t4; int r,c; for (r=1; r4; r+) for (c=0; c4; c+) tc = stater(c-r+4)%4; for (c=0; c4; c+) staterc = tc; void AES:InvMixColumns(unsigned char state4) unsigned char t4; int r,c; for (c=0; c 4; c+) for (r=0; r4; r+) tr = staterc; for (r=0; r4; r+) staterc = FFmul(0 x0e, tr) FFmul(0 x0b, t(r+1)%4) FFmul
38、(0 x0d, t(r+2)%4) FFmul(0 x09, t(r+3)%4); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 21 页 - - - - - - - - - void main( int argc, char * argv) unsigned char key = / 密钥初值 | 0 x2b, 0 x7e, 0 x15, 0 x16, 0 x28, 0 xae, 0 xd2, 0 xa6, 0 xab, 0 xf7, 0 x15, 0 x88, 0
39、 x09, 0 xcf, 0 x4f, 0 x3c ; AES aes(key); int j; coutendl; char str100; unsigned char temp; coutstr; int len = strlen(str); cout 字符串长度: lenendl; cout 加密前的字符串: ; for (j=0; jlen; j+) cout( unsigned char)strj; coutendl; aes.Cipher(void *)str); cout 加密后的字符串: ; for (j=0; jlen; j+) temp = ( unsignedchar)s
40、trj; couthexstatic_cast(temp); coutendl; aes.InvCipher(void *)str,21); cout 解密后的字符串: ; for (j=0; jlen; j+) cout( unsigned char)strj; coutendl; system( pause ); 1.5 设计心得说实话,对于加密算法方面,自己是没有一点发展余地的,这门课也学得实在是伤心,每次都感觉是在听天书。不管怎么说吧, 在参考网上的一些资料还有书上的知识点之后,好坏做出来了。虽然学到的不多,可还是很感谢老师一学期的教导,老师辛苦了名师资料总结 - - -精品资料欢迎下
41、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 21 页 - - - - - - - - - 2. 网络攻击图研究随着 Internet技术的快速发展, 针对计算机及网络系统的恶意攻击变得越来越多样化和复杂化, 网络攻击技术正在不断地向隐蔽、高效和智能化方向发展。传统的漏洞扫描技术是一种基于规则的漏洞评估方法,它孤立地分析目标网络中存在的漏洞,不能综合评估这些漏洞相互作用所产生的潜在威胁。实践表明, 若干孤立的漏洞尽管影响很小,但如果被黑客通过网络有机地组织起来加以利用,则可能给网络系统安全带来巨大的风险影
42、响。如何对一个网络进行安全性检查,即对该网络环境中可能发生的攻击进行建模,是广大安全人员必须考虑的重要问题。在众多的网络攻击建模方法中,网络攻击图以其形象化的特点而被广泛应用。2.1 基本概念基于攻击图的网络漏洞分析是加强网络安全的重要方法。攻击图是研究人员综合攻击、漏洞、 目标、主机和网络连接关系等因素,为发现网络中复杂的攻击路径或者引起系统状态变迁的渗透序列而提出的一种基于模型的、可以自动分析目标网络内脆弱性之间的关系和由此产生的潜在威胁,描述网络安全状态的分析技术。攻击图通过对网络建立模型,来模拟目标网络的实际状态,然后在分析网络中的脆弱性在网络模型中是如何被攻击者利用,从而使得攻击者可
43、以通过利用若干个脆弱性达到其攻击目标。攻击图技术使用图的方式展示网络中脆弱性之间的关联关系,使网络安全管理人员能够直观地观察攻击者是如何利用若干个脆弱性进行攻击,以及攻击者对网络进行攻击的全部路径,便于网络安全管理人员对网络进行安全防护。研究大规模复杂网络系统的安全策略制定方法具有重要的现实意义。通常可以将攻击图分为状态攻击图和属性攻击图两类。状态攻击图显式地反映了攻击者所有的攻击轨迹,便于用户理解, 但是由于状态攻击图的每个节点代表系统全局状态,因此创建状态攻击图的效率不高,且存在状态爆炸问题,不适应于大规模网络。与状态攻击图相比,属性攻击图更加简洁,便于分析攻击产生原因。属性攻击图是攻击图
44、的一种,它的节点分为两类:一类表示原子攻击,另一类为属性节点,它表示这些原子攻击的每个前提条件或后果。原子攻击节点与属性节点间存在前提边和后果边。所有通过前提边与原子攻击节点相连的属性节点都满足时,该原子攻击才可被执行,从而使通过结果边与该原子攻击相连的属性都被满足。属性攻击图定义了网络中的安全属性在脆弱性的作用下的相互关系,同时也反映出网络中脆弱性之间的相互关系。属性攻击图可以展现出攻击者在攻击过程中依赖和改变的网络安全属性。2.2 研究现状计算机网络攻击图历经最初的手动生成到自动生成,从有几个主机的简单网络到大规模网络的攻击图生成过程。下面重点分析几种典型的攻击图生成方法。1.基于攻击模板
45、的攻击图生成方法2.基于模型检测的攻击图生成方法模型检测方法为攻击图建模提供了自动生成的工具。模型检测主要有以下种三方法:1、基于符号模型检测的攻击图生成算法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 21 页 - - - - - - - - - 2、基于显式状态模型检测的攻击图生成算法3、基于抽象模型的攻击图生成方法3.以主机为中心的攻击图生成方法当前在攻击领域所作的研究工作主要分为以下几个方面。2.2.1、针对攻击模型的研究建立攻击模型的目的主要是对攻击过程进行
46、结构化描述和有效分析,提高安全知识的共享以及提高攻击检测和安全预警的效率。在攻击树的基础上定义了一种攻击描述语言来描述复杂攻击过程,但这种攻击描述语言语言具有的特点支持其作为安全特征描述语言。然而,目前此类安全描述语言存在诸多问题,如语言功能单一,适用性差,缺乏开放性,语义不一致和缺乏可重用性等。最关键的问题是怎样从不同攻击中提取出相似特征描述。2.2.2、攻击分类研究对于各种网络攻击的理解不同,对网络攻击与造成的危害或潜在危胁的认识难以保持一致,从而对安全技术研究带来极大困难,所以科学分类攻击成为攻击研究的重要环节。对攻击分类研究进行了总结,提出以下分类:基于经验术语分类方法,按经验将攻击分
47、成病毒和蠕虫、资料欺骗、 拒绝服务、非授权资料拷贝等20余类;基于单一属性分类,仅从攻击某个特定属性对攻击进行描述的方法;基于多属性的分类,同时抽取攻击的多个属性,并利用这些属性组成的序列来表示一个攻击过程,或由多个属性组成的结构来表示攻击,并对过程或结构进行分类的方法;基于应用的分类方法,对特定类型应用、特定系统而发起攻击的属性进行分类描述的方法。2.2.3、具体攻击原理的研究2.2.3.1认证协议攻击研究认证协议作用在于确定主体的身份和为通信主体分发会话密钥。认证协议攻击研究,要研究其协议内在局限性、缺陷和攻击方式, 目的存于对认证协议设计、分析和攻击有所借鉴。目前, 在此类研究中,多种形
48、式化方法得以提出和发展。用于检查和分析协议安全漏洞,以及能否达到预期设计目标。目前,协议形式化分析还没有形成规范。2.2.3.2缓冲溢出研究目前研究着重在于对缓冲区攻击代码的研究,研究攻击代码的主要特征、缓冲区溢检测方法以及防范措施。 比较通用的做法是通过劫持系统调用的方式为原有的系统调用函数增加名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 21 页 - - - - - - - - - 了强制访问控制功能, 通过监测非法系统调用的方法来检测和阻止各种获取特权的缓冲区溢
49、出攻击。较为常见的技术包括增强系统核心、静态分析技术、增强编译器和进行动态检测。2.2.3.3木马技术研究目前,木马研究主要集中在木马的实现、防御和检测上。木马主要隐藏方式借助DLL 技术、远程加载、 动态代码嵌入,通信隐藏技术主要通过反向连接与隐蔽通道。通过对未知木马的特征进行自主式学习,不仅能有效检测已知的木马,还能对未知的木马进行有效的预防。2.2.4、攻击发现技术研究网络攻击源追踪技术在实时阻断、隔离攻击、追究相关责任、 提供法律举证、威慑攻击者等方面具有非常积极的意义。2.3 面临的问题2.3.1、可扩展性在网络攻击图中,首要被关注的重点是可扩展性,即提出的攻击图构造方案是否能扩展到
50、大型网络和漏洞数量众多的网络中。在实际中,有两种办法可以用于提高方案的伸缩性,一个是仅仅产生一个限制图,即该图仅能用于解决有着特定安全问题的需求;另一个是将网络中主机进行分组或聚类,这种办法可以减少主机数量,因为可以使用典型机来表征大量类似的主机。2.3.2、漏洞细节很多攻击图的构造过程需要分析漏洞的前置和后置条件,而且这些细节信息大部分需要人工分析和输入,这是一个相当繁杂、易错的苦力活。尽管目前存在一些漏洞数据库,但是这些数据库还不能完全满足实际需要,因为他们还不包含计算机能读懂的、用来产生准确的攻击图的细节信息。常见的处理办法是仅需要那些关于攻击组件和漏洞的部分信息,提出的办法是为不熟悉的