《信息安全原理与技术》(第2版)习题答案 下载本文

《信息安全原理与技术》习题参考答案

郭亚军,宋建华,李莉,董慧慧

清华大学出版社

第1章

1.1 主动攻击和被动攻击是区别是什么?

答:被动攻击时系统的操作和状态不会改变,因此被动攻击主要威胁信息的保密性。主动攻击则意在篡改或者伪造信息、也可以是改变系统的状态和操作,因此主动攻击主要威胁信息的完整性、可用性和真实性。

1.2 列出一些主动攻击和被动攻击的例子。

答:常见的主动攻击:重放、拒绝服务、篡改、伪装等等。 常见的被动攻击:消息内容的泄漏、流量分析等等。

1.3 列出并简单定义安全机制的种类。

答:安全机制是阻止安全攻击及恢复系统的机制,常见的安全机制包括:

加密机制:加密是提供数据保护最常用的方法,加密能够提供数据的保密性,并能对其他安全机制起作用或对它们进行补充。

数字签名机制:数字签名主要用来解决通信双方发生否认、伪造、篡改和冒充等问题。 访问控制机制:访问控制机制是按照事先制定的规则确定主体对客体的访问是否合法,防止未经授权的用户非法访问系统资源。

数据完整性机制:用于保证数据单元完整性的各种机制。 认证交换机制:以交换信息的方式来确认对方身份的机制。

流量填充机制:指在数据流中填充一些额外数据,用于防止流量分析的机制。 路由控制机制:发送信息者可以选择特殊安全的线路发送信息。

公证机制:在两个或多个实体间进行通信时,数据的完整性、来源、时间和目的地等内容都由公证机制来保证。

1.4 安全服务模型主要由几个部分组成,它们之间存在什么关系。 答:安全服务是加强数据处理系统和信息传输的安全性的一种服务,是指信息系统为其应用提供的某些功能或者辅助业务。安全服务模型主要由三个部分组成:支撑服务,预防服务和恢复相关的服务。

支撑服务是其他服务的基础,预防服务能够阻止安全漏洞的发生,检测与恢复服务主要是关于安全漏洞的检测,以及采取行动恢复或者降低这些安全漏洞产生的影响。

1.5 说明安全目标、安全要求、安全服务以及安全机制之间的关系。

答:见图1.4,全部安全需求的实现才能达到安全目标,安全需求和安全服务是多对多的关系,不同的安全服务的联合能够实现不同的安全需求,一个安全服务可能是多个安全需求的组成要素。同样,安全机制和安全服务也是多对多的关系,不同的安全机制联合能够完成不同的安全服务,一个安全机制也可能是多个安全服务的构成要素。

1.6 说明在网络安全模型中可信的第三方所起的作用。

答:要保证网络上信息的安全传输,常常依赖可信的第三方,如第三方负责将秘密信息分配给通信双方,或者当通信的双方就关于信息传输的真实性发生争执时,由第三方来仲裁。

1

第2章

2.1、列出小于30的素数。

2、3、5、7、11、13、17、19、23、29

2.2、若a是大于1的整数, 则a的大于1的最小因子一定是素数。

证明 若a是素数, 显然a的大于1的最小因子就是素数a; 若a是合数, 则显然除1和a

外还有其它的因数,令b是这些正因数中最小者, 可以证明b不是合数而是素数, 若其不然, b必有大于1且不等于b的因数c, 于是由c|b和b|c可知c|a, 即c是a的因数,又有1

2.3、如果n|(a-b), 证明a≡b mod n

证明:由n|(a-b)可知存在正整数k,使得a=kn+b,其中b是1到n-1之间的正整数,所以有 a mod n=b, b mod n=b,可知a,b同余,即a?b mod n

2.4、证明下面等式

(1) (a+b) mod m = ((a mod m) + (b mod m)) mod m

证明:假设amodm?ra,bmodm?rb,则得a?jm?ra,j?Z.同样,假定b?km?rb,k?Z,于是有(a?b)modm?(jm?ra?km?rb)modm?(ra?rb)modm?[(amodm)?(bmodm)]modm,得证。 (2) (a-b) mod m = ((a mod m) - (b mod m)) mod m

证明:假设amodm?ra,bmodm?rb,则得a?jm?ra,j?Z.同样,假定b?km?rb,k?Z,于是有(a?b)modm?(jm?ra?km?rb)modm?(ra?rb)modm?[(amodm)?(bmodm)]modm,得证。 (3) (a×b) mod m = ((a mod m) × (b mod m)) mod m

证明:假设amodm?ra,bmodm?rb,则得a?jm?ra,j?Z.同样,假定b?km?rb,k?Z,于是有(a?b)modm?(jm?ra)(km?rb)modm?(rarb?rbjm?rakm?kjm2)modm?(ra?rb)modm?[(amodm)?(bmodm)]modm,得证。 (4) (a×(b+c) ) mod m = ((a×b) mod m) + ((a×c) mod m)) mod m

证明:由?1?和?3a(?b(?c))momd??可知,?((a(?b)momd?)a(?(c)mmoda(?(b?)a?(c))mmod

)得证。)mmod.

2.5、证明560-1是56的倍数。

2

证明:由于53?13mod56,56mod56?(53?53)mod56?(13?13)mod56?1mod56,对同余式两边同时升到10次幂,即那么10组???????????????????606665mod56?(5mod56)?(5mod56)?......(5mod56)mod56??????????????????(1mod56)?(1mod56)?......(1mod56)mod56?1mod56,所以560mod56?1mod56,从而可以写成560?1mod56或56|560?1。所以560?1是56的倍数。

2.6、对于整数39和63,回答下面问题 (1) 它们是否互素;

解:由于gcd(39,63)=3,所以他们不互素。 (2) 用欧几里德算法求它们的最大公因子; 解:用欧几里德算法的计算过程如下:

10组

63?1?39?2439?1?24?1524?1?15?9 15?1?9?69?1?6?36?2?3?0所以39和63的最大公因子是3. (3) 25-1 ≡ x mod 15是否有解。

解:由欧几里德算法有:25?1?15?10?10?5 15?110?2?5?可知0,和25的最大公因子是15,即5gcd(25,15)?=5所以不互素1.-1那么25?xmod1无解。5

2.7、用欧几里德算法求gcd (1997, 57)和 gcd(24140, 16762)

3

解:对1997和57运用欧几里德算法的过程如下:1997?35?57?257?28?2?12?2?1?0,所以gcd(1997,57)?1同理,对24140和16762运用欧几里德算法的过程如下:

24140?1?16762?737816762?2?7378?20067378?3?2006?13602006?1?1360?6461360?2?646?68646?9?68?3468?2?34?0,所以gcd(24140,16762)?34

2.8、用扩展欧几里德算法求下列乘法逆元 (1) 1234 mod 4321

用扩展欧几里德算法的计算过程如下: 循环次数 初始值 1 2 3 4 5 Q --- 3 1 1 153 1 X1 1 0 1 -1 2 -307 X2 0 1 -3 4 -7 1075 X3 4321 1234 619 615 4 3 Y1(T1) 0 1 -1 2 -307 309 Y2(T2) 1 -3 4 -7 1075 -1082 Y3(T3) 1234 619 615 4 3 1 ?1082?3239mod4321,所以逆元是3239

(2) 24140 mod 40902

用扩展欧几里德算法的计算过程如下: 循环次数 初始值 1 2 3 4 5 6 7 8 Q --- 1 1 2 3 1 2 9 2 X1 1 0 1 -1 3 -10 13 -36 326 X2 0 1 -1 2 -5 14 -19 52 -487 X3 40902 24140 16762 7378 2006 1360 646 68 34 Y1(T1) 0 1 -1 3 -10 13 -36 326 -688 Y2(T2) 1 -1 2 -5 14 -19 52 -487 1026 Y3(T3) 24140 16762 7378 2006 1360 646 68 34 0 根据扩展欧几里德算法没有逆元。 (3)550 mod 1769

解:计算过程如下表所示: 循环次数 初始值

Q -- X1 1 X2 0 X3 1769 Y1(T1) 0 Y2(T2) 1 Y3(T3) 550 4

1 2 3 4 5 6 7 8 3 4 1 1 1 1 1 4 0 1 -4 5 -9 14 -23 37 1 -3 13 -16 29 -45 74 -119 550 119 74 45 29 16 13 3 1 -4 5 -9 14 -23 37 -171 -3 13 -16 29 -45 74 -119 550 119 74 45 29 16 13 3 1 根据扩展欧几里德算法逆元是550

2.9、用快速指数模运算方法计算200837 mod 77和319971 mod 77

解:由于gcd(2008,77)?1,且77?7?11,?(7)?6,?(11)?10,[?(7),?(11)]?3037?7mod30,由欧拉定理可知200837?20087mod77,设a为指数,计算过程如下:a?6时,2008?6mod77a?3时,20082?36mod77a?2时,6?36?216?62mod77a?1时,362?64mod77a?0时,64?62?3968?41mod77,所以200837?20087mod77?41mod77解:由于gcd(3,77)?1,且77?7?11,?(7)?6,?(11)?10,[?(7),?(11)]?3019971?21mod30,由欧拉定理知319971?321mod77,由21??10101?2得32?9, 31?90?3(mod77)9?4,3?4?12(mod77)42?16,12?160?12(mod77)162?25,12?251?69(mod77).即319971?69mod77

2.10、用费马定理求3201 (mod 11)

21

解:由于gcd(3,11)?1,那么由费马定理得310=311-1?1mod11,那么3201?3?3200mod11?3?(310mod11)?(310mod11)?........(310mod11)mod11

???????????????????共20个?3mod11?3

2.11、计算下面欧拉函数;

(1) ?(41) 、?(27)、?(231) 、?(440)

解:(?41)=41-1=40?(27)=?(33)=33?32?18

?(231)??(3?7?11)??(3)??(7)??(11)?(3?1)?(7?1)?(11?1)?120?(440)??(23?5?11)?(23?22)?(5?1)?(11?1)?160

5

(2) φ(2)φ(6)和φ(3)φ(4),哪一个等于φ(12)。

解:?(2)?(6)??(2)??(2)??(3)?1?1?2?2?(3)?(4)??(3)?(22)?2?(22?2)?4?(12)??(3?2)??(3)?(2)?2?(2?2)?4显然?(3)?(4)??(12)222

2.12、求解下列一次同余方程 (1)3x≡10(mod 29)

解 因为(3,29)=1,所以方程有惟一解。利用辗转相除法求得使3x+29y=1成立的x、y为x=10,y=-1。于是3·10+29·(-1)=1,3·100+29·(-10)=10,所以x≡100≡13(mod 29)。 (2)40x≡191(mod 6191)

解 因为(40,6191)=1,所以方程有惟一解。利用辗转相除法求得使40x+6191y=1成立的x、y为x=1393,y=-9。于是40·1393+6191·(-9)=1,40·1393·191+6191·(-9·191)=191,所以x≡1393·191≡6041(mod 6191) (3)258x≡131(mod 348)

解 因为(258, 348)=6,而6 131,所以方程无解。

2.13、证明下面结论

设a、b、c、d为整数,m为正整数,若a≡b(mod m),c≡d(mod m),则: (1)ax+cy≡bx+dy(mod m),x、y为任意整数; (2)ac≡bd(mod m);

(3)an≡bn(mod m),n>0;

(4)f(a)≡f(b)(mod m),f(x)为任一整系数多项式。

证明 (1)因为a≡b(mod m),c≡d(mod m),所以m|(a-b),m|(c-d),于是m|((a-b)x+(c-d)y),即m|((ax+cy)-(bx+dy)),故ax+cy≡bx+dy(mod m)。

(2)因为a≡b(mod m),c≡d(mod m),所以m|(a-b),m|(c-d),于是m|((a-b)c+(c-d)b),即m|(ac-bd),故ac≡bd(mod m)。

(3)因为a≡b(mod m),则存在整数q使得a-b=mq。于是:

an-bn=(b+mq)n-bn=(bn+bn-1(mq)1+…+b1(mq)n-1+(mq)n)-bn=mp,其中p是一整数。

所以an≡bn(mod m)。 (4)由(1)和(3)可证。

2.14、求满足下面同余方程的解

x≡1(mod 5),x≡5(mod 6),x≡4(mod 7),x≡10(mod 11)

解:令m1=5,m2=6,m3=7,m4=11,b1=1,b2=5,b3=4,b4=10。则m=2310,M1=462,M2=385,M3=330,M4=210。

利用辗转相除法求得M1?=-2,M2?=1,M3?=1,M4?=1。 所以,x≡1·(-2)·462+5·1·385+ 4·1·330+10·1·210≡4421≡2111(mod 2310)

2.15、求Z5中各非零元素的乘法逆元。 解:1-1=1,2-1=3,3-1=2,4-1=4

6

2.16、类似于表2.2,用表列出有限域GF(5)中的加法和乘法运算 解:表如下: 0 1 2 加法 0 1 2 3 4 乘法 0 1 2 3 4 a 0 1 2 3 4 -a 0 4 3 2 1 a-1 -- 1 3 2 4 0 1 2 3 4 0 0 0 0 0 0 1 2 3 4 0 1 0 1 2 3 4 2 0 2 4 1 3 2 3 4 0 1 3 3 4 0 1 2 3 0 3 1 4 2 4 4 0 1 2 3 4 0 4 3 2 1 2.17、对于系数在Z10上的取值的多项式运算,分别计算

a?、x+2)-(x2+5)=-x2+7x-3mod(10x2+10x+10)=9x2+7x+7

b、(6x2?x?3)?(5x2?2)?(30x4?5x3?27x2?2x?6)mod(10x4?5x3?27x2?2x?6)?5x3?7x2?2x?6

2.18、假设f(x)=x3+x+1在GF(2n)中是一个不可约多项式,a(x)=2x2+x+2,b(x)=2x2+2x+2,求a(x)b(x)

解:a(x)?b(x)=a(x)b(x)modf(x)?(2x2+x+2)(2x2+2x+2)mod(x3+x+1)=6x+6x+2x+432

2.19、编程实现模n的快速指数运算。 #include \#include #include

int main(int argc, char* argv[]) { int m,e,n; printf(\ cin>>e;

7

printf(\ cin>>m; printf(\ cin>>n; int a=e,b=m,c=1; for(a=e;a>0; ) { if(a%2==1) { a-=1; c=(c*b)%n; if(a==0) cout<

2.20、编写实现扩展欧几里德算法求最大公因子和乘法逆元。#include \#include

int main(int argc, char* argv[]) { int m,d; cout<<\ first number:\ cin>>m; cout<<\ cin>>d; int a[3]={1,0,m},b[3]={0,1,d}; int Q; if(b[2]%a[2]>=0) { Q=b[2]/a[2]; for(int i=0;i<=2;i++) { int t[3]; t[i]=a[i]-Q*b[i]; a[i]=b[i]; b[i]=t[i];

8

}

} if(b[2]==0) { cout<<\和d的最大公因子是\没有逆元!\ } else if(b[2]==1) { cout<<\和d的最大公因子是\是d的逆元!\ } }

return 0;

第3章

3.1 下式是仿射密码的加密变换

c= (3m+5) mod 26,试求: (1) 该密码的密钥空间是多少

(2) 求出消息“hello”对应的密文 (3) 写出它的解密变换 (4) 试对密文进行解密 解:

(1)密钥空间为n??n?=312。

(2)hello五个字母对应的数字分别是7,4,11,11,14 分别加密如下: (3*7+5)mod26=0 (3*4+5)mod26=17

(3*11+5)mod26=12 (3*11+5)mod26=12 (3*14+5)mod26=21

五个密文数字为0,17,12,12,21,对应密文是ARMMV。 (3)解密变换为m=

1(c-5)mod26 3(4)密文ARMMV五个字母对应数字分别为0,17,12,12,21 分别利用解密变换解密,解密后对应数字为7,4,11,11,14 所以得到明文为hello。

3.2用Playfair密码加密下面消息:

ciphers using substitutions or transpositions are not secure because of language characteristics. 密钥为the playfair cipher was invented by Charles Wheatstone。 解:

由密钥可构建如下的密钥矩阵。 T A

H Y E F P I/J L R 9

C D M W S B Q O U N G X V K Z 将明文按照两个字母分组为:

ci ph er su si ng su bs ti tu ti on so rt ra ns po si ti on sa re no ts ec ur eb ec au se of la ng ua ge ch ar ac te ri st ic sx

则密文为:NA LE LF OE NF GX OE OW PA EM PA GS OU AL AY VN EG NF PA GS CF FL SG EC TS ZF HO TS FM OF US TR GX MF OP WT YA CD HP AR CE AN NU

3.3 假设密钥为“encryption”,用维吉尼亚密码加密消息symmetric schemes require both parties to share a common secret key。 解:

在明文下面重复写密钥字,组成密钥。

明文M:symmetricschemesrequirebothpartiestoshareacommonsecretkey 密钥K:encryptionencryptionencryptionencryptionencryptionencrypt 将明文和密钥转化为数字

明文=(18,24,12,12,4,19,17,8,2,18,2,7,4,12,4,18,17,4,16,20,8,17,4,1,14,19,7,15,0,17,19,8,4,18,19,8,4,18,19,14,18,7,0,17,4,0,2,14,12,12,14,13,18,4,2,17,4,19,10,4,24)

密钥=(4,13,2,17,24,15,19,8,14,13,4,13,2,17,24,15,19,8,14,13,4,13,2,17,24,15,19,8,14,13,4,13,2,17,24,15,19,8,14,13,4, 13,2,17,24,15,19,8,14,13,4,13,2,17,24,15,19)

对每个明文数字和对应的密钥数字,使用Ci?(mi?ki)mod26加密,得到密文数字为 C=(22,11,14,3,2,8,10,16,16,21,6,21,6,3,2,7,10,12,4,7,12,4,6,18,12,8,0,23,14,4,23,21,6,9,17,3,11,15,14,4,8,13,4,5,10,1,7,21,6,17,6,4,6,10,8,19,17) 于是密文为

WLODCIKQQVGVGDCHKMEHMEGSMIAXOEXQGJRDLPOEINEFKBHVGRGEGKITR

3.4 Hill密码不能抵抗已知明文攻击,如果有足够多的明文和密文对,就能破解Hill密码。 (1) 攻击者至少有多少个不同明文-密文对才能攻破该密码? (2) 描述这种攻击方案。 解:

(1)破解一个Hillm密码至少应该有m个不同的明文-密文对。

(2)攻击方案为:假定攻击者已经确定了正在使用的m值,至少有m个不同的明-密文对

设为:?j?(?1,j,?2,j,??m,j) yj?(y1,j,y2,j,?ym,j)

对任意的1?j?m,有yj?ek(?j)。如果定义两个m?m矩阵X????和Y?(yi,ji,j ),

则有矩阵方程Y=XK,其中m?m矩阵K是未知密钥。假如矩阵X是可逆的,则攻击者 可以算出K?XY,从而可以破译Hill密码(如果X不可逆,则必须重新选择m个明

10

?1-密文对)。

3.5用Hill密码加密消息”hill”,密钥为:

?11 8?k???3 7?? ??并写出从密文恢复明文的解密过程。

解: 经计算

?718? K?1????2311?设明文为Hill,则相应的明文向量为(7,8)和(11,11)。于是,相应的密文向量分别为

?118?(7,8)??37???(77?24,56?56)?(23,8)??

?118?(11,11)??37???(121?33,88?77)?(24,9)??因此,明文Hill的密文为XIYJ。

3.6用一次一密加密消息“01011010101100111100010101010101011011110001010001”,选定的密钥是“10010101011110101101000101000001111100100101010010”,试写出密文。 解:密文=明文?密钥

=01011010101100111100010101010101011011110001010001? 10010101011110101101000101000001111100100101010010 =11001111110010010001010000010100100111010100000011

3.7使用DES加密,假设明文和密钥都为 (0123456789ABCDEF)16 = (00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2

(1) 推导出第一轮的子密钥K1 (2) 写出R0和L0

(3) 扩展R0并计算E(R0)⊕K1

(4) 将第(3)问的结果,输入到8个S盒,求出加密函数F (5) 推导出R1和L1 解:

(1)将密钥K经置换选择1,得 C0=11110000 11001100 10101010 0000 D0=10101010 11001100 11110000 0000 左移1位后经置换选择2输出48为K1。

K1=00001010 00000010 01110111 10011011 01001000 10100101 (2)初始置换后,得到

11

L0=11001100 00000000 11001100 11111111 R0=11110000 10101010 11110000 10101010

(3)用扩展置换E将R0扩展为48位后,与K1异或

E(R0)?K1=01110000 00010111 00100010 11100001 01011101 11110000 (4)经过8个S盒输出32位

S1(011100)=0000 S2(000001)=0000 S3(011100)=0010 S4(100010)=1000 S5(111000)=0011 S6(010101)=1101 S7(110111)=1000 S8(110000)=1100 经置换函数P,输出加密函数如下: F=00111000 00000000 00100000 11101101 (5)由L0和R0计算出L1和R1

L1=R0=11110000 10101010 11110000 10101010 R1=L0?F=11001000 10101010 11010000 01000111

3.8在GF(28)上{01}的逆是什么?并验证其在S盒中的输入。 解:

在GF(28)上{01}的逆是{01},用二进制标识为0000 0001,代入S盒的变换,如下:

??1??1????1??1????1??0??0????0??011111000011111000011111100011111100011111100011??1??1????1????1????1????0????????????????????????1??0????1????1????1????0??????1??0????0????1????0????1????????????????????????1??0????0101???????????????????? ??0??0????0????1????0????1????????????????????????001011??????????????????????0??0????1????0????1????1??????????????1??0??0??0??0??0???????????????????????? 结果为01111100,用十六进制表示为{2A},与查S盒所得到结果一致。

3.9假设 AES的State矩阵的某一列分别是s0 = {87},s1= {6E},s2 = {46},s3 = {A6}。经过列混淆变换后,s1 = {6E }映射为s’1 = {37},试计算验证这一结果。 解:

第一列第2个字节的代换方程为

{87}?({02}?{6E})?({03}?{46})?{A6}={37} 下面验证上面等式成立。用多项式表示为 {02}??,

{6E}??6??5??3??2??

12

那么

??(?6??5??3??2??)??7??6??4??3??2

再模一个次数为8的不可约多项式m(?)??8??4??3???1 结果为?7??6??4??3??2

写成二进制为11011100。

同样,计算出{03}?{46}=11001010, {87}=10000111, {A6}=10100110。 因此{87}?({02}?{6E})?({03}?{46})?{A6}计算结果为 10000111 11011100 11001010

?10100110

00110111={37}

3.10采用AES加密,密钥为2B 7E 15 16 28 AE D2 A6 AB F7 15 88 09 CF 4F 3C,明文为32 43 F6 AD 88 5A 30 8D 3131 98 A2 E0 37 07 34

(1) 写出最初的State的值

(2) 写出密钥扩展数组中的前8个字节 (3) 写出初始轮密钥加后State的值 (4) 写出字节代换后State的值 (5) 写出行移位后的State的值 (6) 写出列混淆后State的值 解:

(1)最初的State的值为:

?32?43 B0???F6??AD885A308D31E0?3137?? 9807??A234?28AED2A6ABF7158809??W0?2B7E1516?W?28AED2A6EF?1?,其中? ?W?ABF715884F??3??3E??W4?09EF4F3E?2B?7E (2)K0=(W1,W2,W3,W4)=??15??16

密钥扩展数组中前8个字节为W0,W1,即2b 7e 15 16 28 ae d2 a6 (3)根据Wi(4?i?7)的计算公式,分别计算出各式,然后计算出K1。 W4=SubByte(RotByte(W3))?Rcon[1] ?W0

= SubByte(CF4F3C09)?(01000000) ?(2B7E1516) =(8A84EB01) ?(01000000) ?(2B7E1516) =A0FAFE17

13

W5=W1?W4=(28AED2A6)?( A0FAFE17)=88542CB1 W6=W2?W5=(ABF71588)?( 88542CB1)=23A33939 W7=W3?W6=(09CF4F3C)?( 23A33939)=2A6C7605 所以,得到第一轮子密钥K1为:

?A088?FA54? K1?(W4,W5,W6,W7)??FE2C??17B1初始轮密钥加后, B1=B0+K0

23A339392A?6C?? 76??05??32?43 =??F6??AD885A308D31E0??A08823?FA54A33137????9807??FE2C39??A234??17B1392A??19A09AE9?

?3DF4C6F8?6C??=?? 76??E3E28D48????05??BE2B2A08?1E?41?? 52??30?

?D4E0B8?27BFB4

(4)经过字节代换后,state的值为 ?

?11985D?

?AEF1E5?D4?BF

(5)经过行移位后,state的值为 ?

?5D??30

E0B8B4415211AEF1

1E?27?? 98??E5?

?04?66(6)经过列混淆变换后,state的值为??81??E5

E04828?CBF806?? 19D326??9A7A4C?3.11 对习题3.10的明文和密钥不变,采用SMS4加密。(1)求出第一轮的轮密钥rk0。(2)求第一轮加密后的明文输出是什么?

解:

(1)SMS4加密算法的轮密钥由加密密钥通过密钥扩展算法生成,第一轮轮密钥rk0的计算过程如下:

①首先,将加密密钥???(??0,??1,??2,??3)按字分为四组,分别为

) , ??0?(2b7e151)6 ,??1?(28aed2a6) ,??2?(abf71588??3?(09cf4f3c)

已知:

14

FK0?(A3B1BAC6),FK1?(56AA3350),FK2?(677D9197),FK3?(B27022DC) 根据(K0,K1,K2,K3)?(??0?FK0,??1?FK1,??2?FK2,??3?FK3),得出(K0,K1,K2,K3)各个的值:

MK0=0010 1011 0111 1110 0001 0101 0001 0110 FK0= 1010 0011 1011 0001 1011 1010 1100 0110

两者做异或运算后,得K0=1000 1000 1100 1111 1010 1111 1101 0000 同理计算,可以分别得

K1=0111 1110 0000 0100 1110 0001 1111 0110

K2=1100 1100 1000 1010 1000 0100 0001 1111

K3=1011 1011 1011 1111 0110 1101 1110 0000

②然后,求出T变换的输出:

固定参数CK0的十六进制表示为:00070e15,则通过异或运算。A?(a0,a1,a2,a3)=K1?K2?K3?CK0=(0000 1001 0011 0110 0000 0110 0001 1100)十六进制表示为:09 36 06 1c。

再将输出结果A分为四组进入S盒,通过查表,输出B的十六进制为:b6 e8 3d 49。

利用公式L(?)???(????13)?(????23),得

''L'(?)=0001 0101 1001 1010 0111 1111 1000 101

③最后,由公式rki?Ki?4?Ki?T'(Ki?1?Ki?2?Ki?3?CKi)知,将K0与步骤②求出的L(?)做异或运算,即可得到rk0。

'L'(?)=0001 0101 1001 1010 0111 1111 1000 1010 异或

K0 =1000 1000 1100 1111 1010 1111 1101 0000

rk0?K4=1001 1101 0101 0101 1101 0000 0101 1010,十六进制表示为:9d 55 d0 5a。

(2)根据SMS4加密算法,首先将十六进制明文 32 43 f6 ad 88 5a 30 8d 31 31 98 a2 e0 37 07 34分组:X0?(3243f6ad)X1?(885a308d)X2?(313198 a2)X3?(e0370334)。

15

然后,根据第一轮轮密钥rk0的计算结果,已知加密函数F,

F(Xi?1,Xi,Xi?1,Xi?2,rki?1)?Xi?1?T(Xi?Xi?1?Xi?2?rki?1)得到第一轮输出

数据。

① 进行合成置换T运算

中间值A?(a0,a1,a2,a3)=X1?X2?X3?rk0=(1100 0100 0000 1001 0111 1111 0100 0001)。十六进制表示为:c4 09 7f 41。

② 将输出结果A分为四组进入S盒,通过查表,输出中间值B的十六进制为:bb b6 9e

07。

③ 进行线性变换

由公式C?L(B)?B?(B???2)?(B???10)?(B???18)?(B???24)得,

C?L(B)=1111 0000 1011 0001 1010 0000 1011 0011。

④ 利用加密函数

Xi?3?F(Xi?1,Xi,Xi?1,Xi?2,rki?1)?Xi?1?T(Xi?Xi?1?Xi?2?rki?1),将③式

得到的结果与X0做异或运算,即

( 0011 0010 0100 0011 1111 0110 1010 1101)? (1111 0000 1011 0001 1010 0000 X4=

1011 0011 )=1100 0010 1111 0010 0101 0110 0001 1110 十六进制表示为:c2 f2 56 1e。

因此,得到第一轮的输出X1,X2,X3,X4=88 5a 30 8d 31 31 98 a2 e0 37 07 34 c2 f2 56 1e。

3.12有一个四级线性移位寄存器的反馈函数为f(a1, a2, a3, a4)= a1⊕a2

其中初态为(a1, a2, a3, a4 )=(1000),求其则输出序列的前12位。 解:

四级移位存储器的输出如下所示: 状态(a4, a3, a2, a1) 0001 1000 0100 0010 1001 1100 输出 1 0 0 0 1 0 状态(a4, a3, a2, a1) 0110 1011 0101 1010 1101 1110 输出 0 1 1 0 1 0 所以,输出序列的前12位是1000 1001 1010。

3.13假如使用3位(从0到7)的RC4,其操作是对8取模(而不是对256取模),密钥是326,

(1) 求初始化后S表的值

16

(2) 计算第1个密钥字

(3) 用上面生成的密钥加密明文100101 解:

(1)数据表S只有8个元素。初始化为

0 1 2 3 4 5 6 7 S 0 1 2 3 4 5 6 7 由密钥326构造密钥数据表如下:

3 2 6 3 2 6 3 2 K 0 1 2 3 4 5 6 7 利用如下循环构造实际S数据表。 j=0;

for i=0 to 7 do

j= (j+ S(i) + K(i))mod 8 ; swap(S(i),S(j));

该循环以j=0和i=0开始,使用更新公式后, j=(0+S(0)+K(0))mod8=(0+0+3)mod8=3

因此,S数据表的第一个操作是将S(0)和S(3)互换,互换结果如下:

3 1 2 0 4 5 6 7 S 0 1 2 3 4 5 6 7

同样i加1后,继续执行此过程,直到循环结束。最后数据表S就被随机化为

3 0 5 2 7 1 4 6 S 0 1 2 3 4 5 6 7 故初始化后S表的值为

3 0 5 2 7 1 4 6 S 0 1 2 3 4 5 6 7

(2)从j=0和i=0开始,下面计算第一个密钥字: i=(i+1)mod8 =(0+1)mod8=1

j=(j+S(i))mod8 =(0+S(1))mod8=(0+0)mod8=0 Swap(S(1),S(0))

变换后数据表S变为

0 3 5 2 7 1 4 6 S 0 1 2 3 4 5 6 7 然后如下计算t和k:

t=(S(i)+S(j))mod8=(S(1)+S(0))mod8=3 k=S(t)=2

所以第一个密钥字是2,其二进制表示为010。 (3)在(2)的基础上重复(2)过程,此时i=1,j=0 i=(i+1)mod8 =(1+1)mod8=2

17

j=(j+S(i))mod8 =(0+S(2))mod8=(0+5)mod8=5 Swap(S(2),S(5))

变换后数据表S变为

0 3 1 2 7 5 4 6 S 0 1 2 3 4 5 6 7 然后如下计算t和k:

t=(S(i)+S(j))mod8=(S(2)+S(5))mod8=6 k=S(6)=4

所以第二个密钥字是4,其二进制表示为100。

故,使用密钥100010加密明文100101,即异或得到密文000111。

3.14在8位CFB模式中,如果传输中一个密文字符发生错误,这个错误将传多远? 解:

错误将传9个字符。

第4章

4.1在使用RSA的公钥体制中,已截获发给某用户的密文为c=10,该用户的公钥e = 5, n =35,那么明文m等于多少?为什么能根据公钥可以破解密文? 解:n=p*q (p和q都是素数),n=35故解出p=5 ,q=7 ;

Φ(n)=(p-1)*(q-1)=24 ; 又因为e*d≡1 modΦ(n),而e=5故可解出d=5; m= cd mod n=105 mod 35=5 。

因为RSA密码体制的安全性是基于分解大整数的困难性设计的。RSA算法的加密函数

c= me mod n是一个单项函数,故对于解密密文的陷门是分解n=p*q ,只要知道这个分解就可以计算Φ(n)=(p-1)*(q-1) ,然后用扩展欧几里德算法来求计算解密私钥d。

4.2利用RSA算法运算,如果p=11,q=13, e=103,对明文3进行加密.求d及密文。 解:Φ(n)=(p-1)*(q-1)=10*12=120

e*d≡1 modΦ(n),而e=103故可解出d=7 n=p*q=11*13=143

c= me mod n=3103 mod 143=16

4.3在RSA体制中,某用户的公钥e=31,n=3599,那么该用户的私钥等于多少? 解:n=p*q (p和q都是素数),n=3599故解出p=59 ,q=61; Φ(n)=(p-1)*(q-1)=3480 ; e*d≡1 modΦ(n),而e=31故可解出d=3031 。

4.4在RSA体制中,假设某用户的公钥是3533,p=101,q=113,现对明文9726加密和解密。 解:加密过程如下:n=p*q=11413 ;

Φ(n)=(p-1)*(q-1)=11200 ; e*d≡1 modΦ(n),而e=3533故可解出d=6597;

18

c= me mod n=97263533 mod 11413=5761;

解密过程如下:m= cd mod n=57616597 mod 11413=9726 。

4.5在ElGamal密码体制中,假设Alice想要将消息m=1299传送给Bob。Alice任选一个大

素数p为2579,取g为101,选择保密的私钥x为237。 (1) 计算公钥y。 (2) 求密文。

(3) 写出解密过程 解:(1)y= gx mod p=101237 mod 2579=4 ;

(2)选取一个r为853,计算密文为 C1= gr mod p=101853 mod 2579=1559

C2=m*yr mod p=1299*4853 mod 2579=1358 故密文为{1559,1358};

(3)解密过程为:先计算w=(C1x)-1 mod p ,再计算m= C2*w mod p 。

4.6选取模p为11下的椭圆曲线y2 =x3+x+6,确定E(Z11)上的所有点。 解:

x square roots mod p? y x3 + x + 6 mod 11 0 1 2 3 4 5 6 7 8 9 10 6 8 5 3 8 4 8 4 9 7 4 no no yes yes no yes no yes yes no yes 4, 7 5, 6 2, 9 2, 9 3, 8 2, 9

4.7取实数域椭圆曲线y2=x3-36x上的两个点p=(-3,9), Q = (12, 36),计算P+Q和2P。

19

4.8利用ElGamal的椭圆曲线密码算法,设椭圆曲线是y2=x3-x+118.椭圆曲线上一个点A?(0,376),假设A选择一个秘密整数k=7。求:

(1) A的公开密钥;

(2) 发送方B欲发送消息 (562,201),选择随机数r=386.求密文。 (3) 给出A从密文恢复消息的计算过程。 解:(1)设模数p=563,则B=kA=7A=( 139,465) ,A的公开密钥是(A,B) ; (2) 密文为:( C1 ,C2)=(rA,M+rB)=(386(0,376),(562,201)+386(139,465)) =((458,314),(469,366)) (3) A从密文恢复消息的计算过程为:

M= C2-7C1=(469,366)-7(458,314)=(469,366)-(73,71) = (469,366)+(73,492)=(562,201)

4.9公钥密码一般用于传输对称密钥,现假设A和B之间需要传输数据,A产生一个会话钥,

请回答下面问题:

(1) 在事前通信发信者A应该得到什么密钥? (2) 会话钥的作用是什么?

(3) 写出一个密钥分配协议,并分析其安全性。 解:(1)在事前通信发信者A应该得到会话钥;

(2)会话钥的作用是将需要传送的数据用会话钥加密; (3)一个密钥分配协议如下: 1.A→B:EPUb(IDA||N1), 2.B→A:EPUa(N1||N2), 3.A→B:EPUb(N2+1), 4.B→A:EPUa(EPRb(Ks)),

这协议既可以保密又可以认证。

4.10在Diffie-Hllman方法中,公共素数p = 11,本原根α = 2 (1) 如果用户A的公钥YA = 9,则A的私钥XA为多少? (2) 如果用户B的公钥YB = 3,则共享密钥K为多少? 解:(1)YA=aXAmod p,则XA=6;

(2)K=YBXAmod p=36 mod 11=3。

4.11两个用户A和B使用Diffie-Hellman密钥交换协议来交换密钥,假设公共素数p为71,

20

本原根α为7。A和B分别选择秘密数为5和12。求共享的密钥。 解:由题意得 XA=5, XB=12,则 YA=aXAmod p=75 mod 71=51, 故K=YAXBmod p=5112 mod 71=30。

4.12编写RSA加密和解密程序。 解:int encrypt(int m,int e,int n)

{

int c,i,k=1;

for(i=1;i<=e;i++) k=k*m; c=k%n; return c; }

int decrypt(int c,int d,int n) {

int m,i,k=1;

for(i=1;i<=d;i++) k=k*c; m=k%n; return m; }

第5章

5.1为什么需要消息认证?

答:网络安全的威胁来自于两个方面:一是被动攻击,攻击者只是通过侦听和截取等手段被动的获取数据,并不对数据进行修改;一是主动攻击,攻击者通过伪造、重放、篡改、改变顺序等手段改变数据。对于这些应用中,仅提供保密性是远远不够的。认证则是防止主动攻击的重要技术。认证的目的主要有两个:第一,验证消息的发送者是合法的,不是冒充的,这称为实体认证,包括对信源、信宿等的认证和识别;第二,验证信息本身的完整性,这称为消息认证,验证数据在传送或存储过程中没有被篡改、重放或延迟等。

5.2 SHA中使用的基本算术和逻辑函数是什么?

答:SHA-512中最核心的处理就是对单个512分组处理的80轮的每一轮的处理,其运算如下定义:

T1=h+Ch(e,f,g)+(∑1512e)+Wt+Kt T2=(∑0512 a)+Maj(a,b,c) a=T1+T2 b=a c=b d=c e=d+T1 f=e g=f h=g

21

其中:

t:步骤数,0≤t≤79。

Ch(e,f,g)=(e AND f)⊕(NOT e AND g) 条件函数,如果e,则f,否则g。

Maj(a,b,c)=(a AND b) ⊕(a AND c) ⊕(b AND c),函数为真仅当变量的多数(2或3)为真。 (∑0512 a)=ROTR28(a) ⊕ROTR34(a) ⊕ROTR39(a) (∑1512 e)= ROTR14(e) ⊕ROTR18(e) ⊕ROTR41(e) Wt:64位,从当前的512位消息分组导出 Kt:64位常数 +:模264加

5.3一个安全的散列函数需要满足的特性有哪些?

答:(1) H可以应用于任意长度的数据块,产生固定长度的散列值;

(2) 对每一个给定的输入m,计算H(m)是很容易的;

(3) 给定Hash函数的描述,对于给定的散列值h,找到满足H(m) = h的m在计算上是不可行的;

(4) 给定Hash函数的描述,对于给定的消息m1,找到满足m2?m1且H(m2)=H(m1)的m2

在计算上是不可行的;

(5)找到任何满足H(m1)=H(m2)且m1 ? m2的消息对(m1, m2)在计算上是不可行的。

5.4什么是生日攻击?

答:生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度。这种攻击对Hash函数提出了一个必要的安全条件,即消息摘要必须足够长。 Yuval的生日攻击法描述如下:

(1) 合法的签名方对于其认为合法的消息愿意使用自己的私钥对该消息生成的m位的散列值进行数字签名。

(2) 攻击者为了伪造一份有(1)中的签名者签名的消息,首先产生一份签名方将会同意签名的消息,再产生出该消息的2m/2种不同的变化,且每一种变化表达相同的意义(如:在文字中加入空格、换行字符)。然后,攻击者再伪造一条具有不同意义的新的消息,并产生出该伪造消息的2m/2种变化。

(3) 攻击者在上述两个消息集合中找出可以产生相同散列值的一对消息。根据“生日悖论”理论,能找到这样一对消息的概率是非常大的。如果找不到这样的消息,攻击者再产生一条有效的消息和伪造的消息,并增加每组中的明文数目,直至成功为止。

(4) 攻击者用第一组中找到的明文提供给签名方要求签名,这样,这个签名就可以被用来伪造第二组中找到的明文的数字签名。这样,即使攻击者不知道签名私钥也能伪造签名。

5.5散列函数和消息认证码有什么区别?各自可以提供什么功能?

答:消息认证码和散列函数都属于认证函数。简单来说,消息认证码是一种使用密钥的认证技术,它利用密钥来生成一个固定长度的短数据块,并将该数据块附加在消息之后。而散列函数是将任意长的消息映射为定长的hash值的函数,以该hash值作为认证符。散列函数也称为消息的“指纹”。但是散列函数用于认证时,通常和数字签名结合使用。

它们都可以提供消息认证,认证内容包括:消息的源和宿;消息内容是否曾受到偶然的或有意的篡改;消息的序号和时间栏。

22

5.6数字签名和散列函数的应用有什么不同? 答:散列函数可以被称为是消息的“指纹”,它可以用来对于消息生成一个固定长度的短数据块。它可以和数字签名结合提供对消息的认证。由于数字签名算法在对长的消息进行签名的时候需要先分块再分别签名,速度很慢,所以采用对消息的散列值进行签名可以提供效率并提供认证。数字签名中需要使用私钥,只有拥有私钥的用户才可以提供数字签名,数字签名可以解决的问题包括:否认:发送方否认发送过或签名过某个消息;伪造:用户A伪造一份消息,并声称该消息来自B;冒充:用户A冒充其他用户接收或发送报文;篡改:消息接收方对收到的消息进行篡改。这些问题散列函数是单独解决不了的。

5.7数字签名需要满足哪些条件? 答:数字签名需要满足的条件包括:

[1] 签名的结果必须是与被签名的消息相关的二进制位串;

[2] 签名必须使用发送方某些独有的信息(发送者的私钥),以防伪造和否认; [3] 产生数字签名比较容易; [4] 识别和验证签名比较容易;

[5] 给定数字签名和被签名的消息,伪造数字签名在计算上是不可行的。 [6] 保存数字签名的拷贝,并由第三方进行仲裁是可行的。

5.8给出几种数字签名技术,分析其优缺点。

答:数字签名标准:DSA的安全性是建立在求解离散对数难题之上的,算法基于ElGamal和Schnorr签名算法,其后面发布的最新版本还包括基于RSA和椭圆曲线密码的数字签名算法。这里给出的算法是最初的DSA算法。只提供数字签名功能的算法,虽然它是一种公钥密码机制,但是不能像RSA和ECC算法那样还可以用于加密或密钥分配。

仲裁数字签名:仲裁签名中除了通信双方外,还有一个仲裁方。发送方A发送给B的每条签名的消息都先发送给仲裁者T,T对消息及其签名进行检查以验证消息源及其内容,检查无误后给消息加上日期再发送给B,同时指明该消息已通过仲裁者的检验。因此,仲裁数字签名实际上涉及到多余一步的处理,仲裁者的加入使得对于消息的验证具有了实时性。 盲签名:允许消息发送者先将消息盲化,而后让签名者对盲化的消息进行签名,最后消息拥有者对签名除去盲因子,得到签名者关于原消息的签名。它除了满足一般的数字签名条件外,还必须满足下面的两条性质:

1. 签名者不知道其所签名的消息的具体内容。

2. 签名消息不可追踪,即当签名消息被公布后,签名者无法知道这是他哪次的签署的。 盲签名主要用于电子商务等等领域。

第6章

6.1解释身份认证的基本概念。 答:身份认证是指计算机及网络系统确认操作者身份的过程。它用来防止计算机系统被非授权用户或进程侵入,保证以数字身份进行操作的操作者就是这个数字身份合法的拥有者。

6.2简述使用口令进行身份认证的优缺点。

答:口令认证的优点就是简单,易于实现。口令认证的不足之处是容易受到攻击,主要的攻击方式有窃听、重放、中间人攻击、口令猜测等。

23

6.3 简述OpenID和OAuth认证协议的功能与区别。

答:OpenID(Open Identity)是一个开放的、基于URI/URL的、去中心化的身份认证协议,也是一个开放的标准。通过OpenID,任何人都能够使用一个URL在互联网上用统一的方式来认证自己。一次注册,可以在多个网站上登录,从而实现了跨域的单点登录的功能,用户再无须进行重复的注册和登录。OAuth(Open Authorization)协议是一个开放的授权协议,其目标是为了授权第三方在可控范围下访问用户资源。OAuth和OpenID的区别在于应用场景的区别,OAuth用于为用户授权,是一套授权协议;OpenID是用来认证的,是一套认证协议。两者是互补的。一般支持OpenID的服务都会使用到OAuth。

6.4解释访问控制的基本概念。

答:访问控制规定了主体对客体访问的限制,并在身份识别的基础上,根据身份对提出资源访问的请求加以控制。访问控制决定了谁能够访问系统,能访问系统的何种资源以及如何使用这些资源。适当的访问控制能够阻止未经允许的用户有意或无意地获取数据。

6.5有哪几种访问控制策略?

答:根据控制策略的不同,访问控制可以划分为自主访问控制、强制访问控制和基于角色的访问控制三种。

6.6什么是强制访问控制MAC策略?它的适用场合是什么? 答:强制访问控制是指计算机系统根据使用系统的机构事先确定的安全策略,对用户的访问权限进行强制性的控制。强制访问控制进行了很强的等级划分,所以经常用于军事用途。

6.7什么是自主访问控制DAC策略?它的安全性如何?

答:自主访问控制是指对某个客体具有拥有权(或控制权)的主体能够将对该客体的一种访问权或多种访问权自主地授予其它主体,并在随后的任何时刻将这些权限回收。它的安全性不高,权限的传递可能会给系统带来安全隐患,无意间就可能泄露信息,而且不能防备特洛伊木马的攻击。

6.8为什么MAC能阻止特洛伊木马? 答:一个特洛伊木马是在一个执行某些合法功能的程序中隐藏的代码,它利用运行此程序的主体权限违反安全策略,通过伪装成有用的程序在进程中泄露信息。阻止特洛伊木马的策略是基于非循环信息流,所以在一个级别上读信息的主体一定不能在另一个违反非循环规则的安全级别上写,同样,在一个安全级别上写信息的主体一定不能在另一个违反非循环规则的安全级别上读。由于MAC策略是通过梯度安全标签实现信息的单向流通,因而它可以很好地阻止特洛伊木马的泄密。

6.9简述什么是基于角色的访问控制RBAC。 答:基于角色的访问控制是在用户和访问权限之间引入角色的概念,将用户和角色联系起来,通过对角色的授权来控制用户对系统资源的访问。

第7章

7.1简述Kerberos的基本工作过程。 答:Kerberos的基本认证过程描述为:

①用户想要获取访问某一应用服务器的许可证时,先以明文方式向认证服务器AS发出

24

请求,要求获得访问TGS的许可证。

②AS以证书(credential)作为响应,证书包括访问TGS的许可证和用户与TGS间的会话密钥。会话密钥以用户的密钥加密后传输。

③用户解密得到TGS的响应,然后利用TGS的许可证向TGS申请应用服务器的许可证,该申请包括TGS的许可证和一个带有时间戳的认证符(authenticator)。认证符以用户与TGS间的会话密钥加密。

④TGS从许可证中取出会话密钥、解密认证符,验证认证符中时间戳的有效性,从而确定用户的请求是否合法。TGS确认用户的合法性后,生成所要求的应用服务器的许可证,许可证中含有新产生的用户与应用服务器之间的会话密钥。TGS将应用服务器的许可证和会话密钥传回到用户。

⑤用户向应用服务器提交应用服务器的许可证和用户新产生的带时间戳的认证符(认证符以用户与应用服务器之间的会话密钥加密)。

⑥应用服务器从许可证中取出会话密钥、解密认证符,取出时间戳并检验有效性。然后向用户返回一个带时间戳的认证符,该认证符以用户与应用服务器之间的会话密钥进行加密。据此,用户可以验证应用服务器的合法性。

7.2简述SSL握手的过程。

答:SSL握手的详细过程如下:

第一步:客户发出一个带有客户HELLO信息的连接请求。

第二步:服务器评估客户方发来的HELLO信息中的各项参数,并且返回一个服务器方的HELLO信息,其中含有服务器选来用于SSL会话的各项参数。在服务器HELLO信息之后,服务器发出如下信息:①服务器证书,如果服务器需要被鉴别的话。②服务器密钥交换信息,如果得不到证书或证书仅仅用作签名的话。③证书请求,如果客户要求被鉴别的话。然后,服务器发出一个服务器HELLO DONE信息,开始等待客户的回音。

第三步:客户发送下列信息:①如果服务器发出了一个证书请求,那么客户方必须发送一个证书或非证书信息。②如果服务器发送了一个服务器密钥交换信息,那么客户方就发送一个基于公钥算法的由HELLO信息决定的密钥交换信息。③如果客户方已经发送了一个证书,那么客户方就需验证服务器方的证书并且发出一个证书验证信息指明结果。然后,客户方发出一个结束信息,指出协商过程已经完成。客户方还发送一个修改密文规约信息来产生共享的常规密钥。应该注意这部分工作不是由握手协议控制,是由修改密文规约协议管理的。

第四步:服务器发出一个结束信息指出协商阶段完成。然后服务器发出一个密文修改规约信息。

第五步:会话双方分别产生一个加密密钥,然后他们再根据这些密钥导出会话主密钥。握手协议改变状态至连接状态。所有从应用层的来的数据传输作为特定信息传输给对方。

7.3 IPSec中,ESP和AH分别有什么作用?

答:在IPSec安全协议组中,ESP规定了为通信提供机密性和完整性保护的具体方案,包括ESP载荷的格式、语义、取值以及对进入分组和外出分组的处理过程等。ESP涉及到密码学中的核心组件——加密和鉴别算法。AH协议定义了认证的应用方法,提供数据源认证和完整性保证。AH协议规定了AH头在AH实现中应插入IP头的位置、AH头的语法格式、各字段的语义及取值方式,以及实施AH时进入和外出分组的处理过程。AH机制涉及到密码学中的核心组件——鉴别算法。

7.4 AH的传输模式与隧道模式有何区别?

25

答:传输模式的AH中,封装后的分组IP头仍然是原IP头、只是IP头的协议字段由原来的值变为51,表示IP头后紧接的载荷为AH载荷。在隧道模式的AH中,不是将原始的IP协议头移到最左边然后插入AH协议头,而是复制原始IP协议头,并将复制的IP协议头移到数据报最左边作为新的IP协议头。随后在原始IP协议头与IP协议头的副本之间放置AH协议头。原始IP协议头保持原封不动,并且整个原始IP协议头都被认证或由加密算法进行保护。

7.5 ESP的传输模式与隧道模式有何区别?

答:ESP传输模式中,IP协议头被调整到数据报左边,并插入ESP协议头。ESP协议尾以及ICV (完整性校验值,用于认证)被附加在数据报末端。如果需要加密,仅对原始数据和新的ESP协议尾进行加密。认证从ESP协议头一直延伸到ESP协议尾。在ESP隧道模式下,原数据包(包括原IP报头和数据)被封装在ESP报头和ESP报尾之间,外边附上了新的IP报头。在这种模式下,加密部分为原IP数据包和ESP报尾,完整性检查部分为ESP报头、原IP数据包以及ESP报尾。

7.6电子邮件存在哪些安全性问题?

答:电子邮件安全问题主要包括两个方面:一是电子邮件服务器的安全,包括网络安全以及如何从服务器端防范和杜绝垃圾邮件、病毒邮件和钓鱼邮件等,这些是电子邮件服务的基本要求;二是电子邮件内容安全性的问题,即如何确保电子邮件用户的电子邮件内容不会被非法窃取、非法篡改、发信方和收信方不能否认对邮件的发送和接收行为,以及如何防止非法用户登录合法用户的电子邮件账号等。

7.7 PGP加密电子邮件时,邮件的主题和附件是否被加密? 答:PGP在进行邮件加密时常常与邮件收发软件一起使用,如Outlook Express。加密邮件时,邮件的主题不能加密,否则接收方不知道是哪个用户传的邮件,附件是被加密的。

第8章

8.1 PKI的主要组成是什么?它们各自的功能各是什么?

答:PKI主要组成部分包括:包括PKI策略、软硬件系统、认证机构(Certificate Authority,简称CA)、注册机构(Register Authority,简称RA)、证书发布系统和PKI应用接口等。结构图参考教材图7.2和7.3。各自的功能如下:

PKI安全策略建立和定义了一个信息安全方面的指导方针,同时也定义了密码系统使用的处理方法和原则。

证书机构CA是PKI的信任基础,它管理公钥的整个生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书撤销列表(Certificate Revocation Lists,简称CRL)确保必要时可以撤销证书。

注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求。

证书发布系统负责证书的发放,如可以通过用户自己,或是通过目录服务。目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。

PKI应用接口是提供在PKI平台之上为所有应用提供一致、可信的使用公钥证书及相关服务的接口。

一个PKI系统还必须包括相应的证书库存储证书。证书存储库包括LDAP目录服务器和普通数据库,用于对用户申请、证书、密钥、CRL和日志等信息进行存储和管理,并提

26

供一定的查询功能。

8.2 什么是交叉认证?请给出交叉认证的过程。

答:交叉认证为属于不同CA域的用户提供一种互相认可对方证书的机制,在原本没有联系的CA之间建立信任关系。交叉认证机制保证一个PKI团体的用户可以验证另一个PKI团体的用户证书。它是将这些以前无关的CA连接在一起的机制,从而使得在它们各自主体群之间能够进行安全通信。

交叉认证有两个操作:首先在两个域之间建立信任关系,这通常是一次性操作。在双方交叉认证的情况下,两个CA安全地交换他们的验证密钥。这些密钥用于验证他们在证书上的签名。为了完成这个操作,每个CA签发一张包含自己公钥的证书,该证书称为交叉证书。后续操作由客户端软件完成,这个操作包含了验证已由交叉认证的CA签发的用户证书的有效性,这个操作需要经常执行。该操作被称为跟踪信任链,链指得是交叉证书认证链表,沿着这个链表可以跟踪所有验证用户证书的CA密钥。

8.3 PKI中有哪些常见的信任模型?各种的特点是什么?

答:(1)层次模型:认证机构的严格层次结构可以描绘为一棵倒转的树,根在顶上,叶在最下面。在这棵倒转的树上,根代表一个对整个PKI域内的所有实体都有特别意义的CA,通常被叫做根CA ,作为信任的根或“信任锚”,也是信任的起点。在根CA 的下面是零层或多层中间CA (也被称作子CA ,它们是从属于根CA),这些CA 由中间节点代表,从中间节点再伸出分支。与非CA 的PK实体相对应的叶节点通常被称作终端实体或终端用户。

(2)分布式信任模型:与严格层次结构相反,分布式信任结构把信任分散到两个或更多个CA 上。更准确地说,A 把CA1的公钥作为他的信任锚,而B可以把CA2 的公钥做为他的信任锚。因为这些CA 的密钥都作为信任锚,因此相应的CA 必须是整个PKI群体的一个子集所构成的严格层次结构的根CA ( CA1:是包括A 在内的层次结构的根,CA2是包括B 在内的层次结构的根)。 (3) Web模型是在环球网(World Wide Web)上诞生的,依赖于流行的浏览器进行构建。在这种模型中,许多CA的公钥被预装在标准的浏览器上。这些公钥确定了一组浏览器用户最初信任的CA。尽管这组根密钥可以被用户修改,然而几乎没有普通用户对于PKI和安全问题能精通到可以进行这种修改的程度。Web模型在方便性和简单互操作性方面有明显的优势,但是也存在一些安全隐患。

(4) 在一般被称作以用户为中心的信任模型中,每个用户都对决定信赖哪个证书和拒绝哪个证书直接完全地负责。在这个信任模型中,没有专门的CA中心,每个用户可以向他所信任的人签发公钥证书,通过这样的方式建立一个信任网。因为要依赖于用户自身的行为和决策能力,因此以用户为中心的模型在技术水平较高和利害关系高度一致的群体中是可行的,但是在一般的群体(其用户有极少或者没有安全及PKI的概念)中是不现实的。这种模型一般不适合用在贸易、金融或政府环境中,因为在这些环境下,通常希望或需要对用户的信任实行某种控制,显然这样的信任策略在以用户为中心的模型中是不可能实现的。

8.4 PKI可以提供哪些安全服务?

答:PKI体系提供的安全服务功能,包括:身份认证、完整性、机密性、不可否认性、时间戳和数据的公正性服务。

8.5 X.509标准的目标是什么? 答:X.509是由国际电信联盟制定的数字证书标准。在X.500确保用户名称唯一性的基础上,

27

X.509为X.500用户名称提供了通信实体的认证机制,并规定了实体认证过程中广泛适用的证书语法和数据接口。

8.6 X.509中是如何撤销证书的?

答:通过发布证书撤销列表(Certificate Revocation Lists,简称CRL)确保必要时可以撤销证书。对证书撤销信息的查询,也可以使用在线查询方式。在线证书状态协议(Online Certificate status Protocol,简称OCSP)是IETF颁布的用于检查数字证书在某一交易时间是否有效的标准,可以实时进行这类检查,

8.7 请具体描述给出PKI在网络安全应用中的位置及作用?

答:PKI是利用公钥密码算法构建的安全基础设施,提供应用层面的安全服务作为安全的基础设施PKI需要提供的是基础服务。安全基础设施就是为整个应用组织提供安全的基本框架,可以被组织中任何需要安全的应用和对象使用。 对于使用公钥/私钥和证书等应用中,比如在电子商务中对用户身份的认证,网上银行客户与银行之间的认证和交易签名、电子邮件签名、Web网站认证等。PKI提供和证书相关的“透明”“无缝”的服务。PKI可以为上层应用提供认证性、保密性、数据完整性、不可否认性等服务。

8.8 请给出案例,说明基于PKI的SSL是如何工作的?

答:在两个实体进行通信之前,先要建立SSL连接,以此实现对应用层透明的安全通信。利用PKI技术,SSL协议允许在浏览器和服务器之间进行加密通信。此外服务器端和浏览器端通信时双方可以通过数字证书的交互确认对方的身份。基于PKI技术,结合SSL协议和数字证书,则可以保证Web交易多方面的安全需求,使Web上的交易和面对面的交易一样安全。 基于B/S结构的应用系统,客户端通过HTTP协议或SSL协议进入WebServer,使用WebServer兼做SSLserver。用户使用的证书交给后台的应用服务器进行解析,由应用服务器转向CA的LDAP目录进行查询,同时CRL也在应用服务器中存储和查询,对用户的签名的验证也是在应用服务器中完成。这样的应用适合用户量较少的情况。

第9章

9.1什么是防火墙?防火墙能防病毒吗?

答:防火墙是位于一个或多个安全的内部网络和非安全的外部网络(如Internet)之间的进行网络访问控制的网络设备(或系统)。防火墙的目的是防止不期望的或未授权的用户和主机访问内部网络,确保内部网正常、安全地运行。防火墙可以防病毒,但不能防所有的病毒。

9.2简述防火墙的主要功能。

答:防火墙的主要功能:①集中的安全管理。②安全警报。③重新部署网络地址转换。④审计和记录网络的访问及使用情况。⑤向外发布信息。

9.3简述防火墙的分类。

答:根据物理特性,防火墙可分为两大类:软件防火墙和硬件防火墙。从结构上又可分为单一主机防火墙、路由集成式防火墙和分布式防火墙三种。按工作位置可分为边界防火墙、个人防火墙和混合防火墙。按防火墙性能可分为百兆级防火墙和千兆级防火墙两类。从实现技术上分,防火墙可分为两大类技术:数据包过滤技术和代理服务。

28

9.4简述防火墙的局限性。 答:防火墙的局限性主要表现在以下几个方面:①防火墙不能防范不经由防火墙的攻击和威胁。②不能防御已经授权的访问,以及存在于网络内部系统间的攻击,不能防御合法用户恶意的攻击以及社交攻击等非预期的威胁。③防火墙不能防止感染了病毒的软件或文件的传输。④防火墙不能防止数据驱动式攻击。⑤不能修复脆弱的管理措施和存在问题的安全策略。

9.5怎样通过防火墙进行数据包过滤?

答:在大多数情况下,数据包过滤是用设置了过滤规则的路由器来实现的。当一个数据包到达了一个包过滤路由器,该路由器便从包首部截取特定信息,然后依据过滤规则判定该包是否可通过或丢弃。一般从包首部截取的信息有:源IP地址、目的IP地址、TCP/UDP源端口号、TCP/UDP目的端口号、ICMP信息类型、封装协议信息(TCP,UDP,ICMP或IP隧道)等。

9.6代理服务器防火墙是如何实现的? 答:代理服务器在网络应用层提供授权检查及代理服务。当代理服务器得到一个客户的连接意图时,它们将核实客户请求,并经过特定的安全化的Proxy应用程序处理连接请求,将处理后的请求传递到真实的服务器上,然后接受该服务器的应答,并做进一步处理后,将答复交给发出请求的最终客户。

9.7假如一个公司希望实现一个高安全性能的防火墙来隔离用户做出的内部和外部请求,你将推荐哪种体系结构的防火墙? 答:屏蔽子网防火墙在所有不同类型的防火墙结构中能够提供最高级别的安全性能,所以选它。

第10章

10.1什么叫入侵检测? 答:入侵检测是指通过对行为、安全日志或审计数据或其它网络上可以获得的信息进行操作,检测到对系统的闯入或闯入的企图。

10.2一个入侵检测系统(IDS)通常由哪几个部分组成?

答:一个入侵检测系统通常由三个部分组成:①提供事件记录流的信息资源;②发现入侵事件的分析引擎;③对分析引擎的输出做出反应的响应组件。

10.3根据数据源的不同,入侵检测系统可分为哪几类?各有何特点?

答:根据数据源的不同,通常可以分为基于主机的入侵检测系统、基于网络的入侵检测系统和分布式入侵检测系统三种。基于主机的入侵检测通常从主机的审计记录和日志文件中获得所需的主要数据,并辅之以主机上的其他信息,例如文件系统属性、进程状态等,在此基础上完成检测攻击行为的任务。基于网络的入侵检测系统是通过监听网络中的数据包来获得必要的数据来源,并通过协议分析、特征匹配、统计分析等手段发现当前发生的攻击行为的。分布式入侵检测系统是能够同时分析来自主机系统审计日志和网络数据流的入侵检测系统。

10.4比较异常检测和误用检测方法的异同。

答:在误用检测中,入侵过程模型及它在被观察系统中留下的踪迹是决策的基础。通过事先定义某些特征的行为是非法的,然后将观察对象与之进行比较以做出判别。误用检测基于己知的系统缺陷和入侵模式,它能够准确地检测到某些特征的攻击,但却过度依赖事先定义好

29

的安全策略,所以无法检测系统未知的攻击行为,从而产生漏报。在异常检测中,观察到的不是己知的入侵行为,而是所研究的通信过程中的异常现象,它通过检测系统的行为或使用情况的变化来完成。通过建立正常轮廓,明确所观察对象的正常情况,然后决定在何种程度上将一个行为标为“异常”,并如何做出具体决策。异常检测可以识别出那些与正常过程有较大偏差的行为,但无法知道具体的入侵情况。由于对各种网络环境的适应性不强,且缺乏精确的判定准则,异常检测经常会出现虚警情况,但可以检测到系统未知的攻击行为。

10.5基于数据挖掘的异常检测方法的思想是什么?

答:基于数据挖掘的异常检测以数据为中心,把入侵检测看成一个数据分析过程,利用数据挖掘的方法从审计数据或数据流中提取出感兴趣的知识,这些知识是隐含的、事先未知的潜在有用信息,提取的知识表示为概念、规则、规律、模式等形式,并用这些知识去检测异常入侵和已知的入侵。

10.6 简述入侵检测系统与入侵防御系统的异同。

答:IPS与IDS在检测方面的原理相同,首先由信息采集模块实施信息收集,内容包括系统、网络、数据及用户活动的状态和行为,然后利用模式匹配、协议分析、统计分析和完整性分析等技术手段,由信号分析模块对收集到的有关系统、网络、数据及用户活动的状态和行为等信息进行分析;最后由反应模块对分析结果做出相应的反应。

IPS与IDS主要的不同点有:(1)入侵检测系统的功能是通过监视网络和系统中的数据流,检测是否存在有违反安全策略的行为或企图,若有则发出警报通知管理员采取措施;IPS能够提供主动性的防御,在遇到攻击时能够检测并尝试阻止入侵。(2)IPS串联在网络上,利用了OSI参考模型的所有七层信息,对攻击进行过滤,提供了一种主动的、积极的入侵防范。而IDS只是旁路并联安装,检测入侵行为。(3)IDS使用非确定性的方法从现在和历史的通信流中查找威胁或者潜在的威胁,包括执行通信流、通信模式和异常活动的统计分析。IPS必须是确定性的,它所执行的所有丢弃通信包的行为必须是正确的。

10.7 简述入侵防御系统的工作原理。

答:IPS通过一个网络端口接收来自外部系统的流量,数据流经过IPS处理引擎进行大规模并行深层检测,检查确认其中不包含异常活动或可疑内容后,再通过另外一个端口将它传送到内部系统中。IPS 数据包处理引擎是专业化定制的集成电路,里面包含许多种类的过滤器,每种过滤器采用并行处理检测和协议重组分析的工作方式,分析相对类型的数据包,深层检查数据包的内容。当数据流进入IPS引擎之后,第1步,首先对每个数据包进行逐一字节地检查,异常的数据包被丢弃,通过检查的数据包依据报头信息,如源IP地址、目的IP地址、端口号和应用域等进行分类,并记录数据流的状态信息。第2步,根据数据包的分类,相关的过滤器进行筛选,若任何数据包符合匹配条件,则标志为命中。第3步,标志为“命中”的数据包会被丢弃,检测安全的数据包可以继续前进。第4步,命中数据包丢弃时,与之相关的流状态信息也会被更新,指示IPS丢弃该流中其余的所有内容。

第11章

11.1计算机病毒的特征有哪些?它基本分为哪些类型?

答:根据分析计算机病毒的产生、传播和破坏行为,可以将它的主要特征概括为:传染性、潜伏性、隐蔽性、多态性和破坏性。基本类型有:感染文件型病毒、感染引导区型病毒、宏病毒、恶作剧电子邮件和变形病毒等。

30

11.2计算机病毒的结构包括哪些模块?各个模块是如何工作的?

答:计算机病毒一般由三个模块构成:引导模块、感染模块和破坏模块。

引导模块是计算机病毒的控制中心,当程序开始工作时将病毒程序从外存引入内存,使病毒的感染模块和破坏模块处于活动状态,当触发条件满足时,病毒会按照设计的程序去调用破坏模块发动攻击。

感染模块是完成计算机病毒的扩散功能。它寻找到感染目标后,判断目标是否已被感染,若目标未感染则完成感染工作。 破坏模块是计算机病毒的核心部分,它完成设计者的破坏初衷。首先判断程序运行过程中是否出现了满足病毒触发条件的情况,若满足则调用破坏程序的功能,比如删除程序,改写磁盘上的文件内容等。

11.3什么是蠕虫病毒?它与一般计算机病毒之间的联系和区别有哪些? 答:蠕虫病毒是自包含的程序(或是一套程序),它通常是经过某种网络连接将自身从一台计算机分发到其他计算机系统中。

蠕虫病毒具有一般计算机病毒的一些共性,如感染性、隐蔽性、破坏性等,都攻击计算机系统。

蠕虫病毒与一般计算机病毒不同的是,它利用计算机系统的漏洞主动攻击网络计算机,传播方式是采用网络连接或电子邮件方式由一台计算机自我复制到另外一台计算机,不感染文件,而一般病毒必须以其他程序文件为宿主文件进行依附感染和传播。

蠕虫和一般病毒之间的区别 存在形式 复制方式 感染方式 感染目标 触发感染 影响重点 用户 防止措施 蠕虫 独立程序 自我复制 主动攻击 网络上其他计算机 程序自身 网络、系统性能 无关 为系统漏洞打补丁 一般病毒 寄生 嵌入到宿主程序(文件)中 宿主程序运行 本地文件 计算机使用者 文件系统 病毒传播的关键环节 从宿主文件中清除 11.4什么是特洛伊木马病毒?它是如何工作的?

答:木马是一种伪装成正常程序的恶意代码。木马程序表面上看有用或无害,但却包含了为完成特殊任务而编制的代码,比如在系统中提供后门使黑客可以窃取数据、更改系统配置或实施破坏等,这些特殊功能处于隐蔽状态,执行时不为人知。

从过程上看木马入侵大致可分为六步: 1. 配置木马,木马配置程序为了在服务端尽可能的隐藏木马,会采用多种伪装手段,如修改图标,捆绑文件等。另外木马配置程序将就信息反馈的方式或地址进行设置,如设置信息反馈的邮件地址等。2. 传播木马,传播方式主要有两种:一种是通过E-MAIL,另一种是软件下载,打开邮件或者下载后,只要运行这些程序,木马就会自动安装。3. 运行木马,服务端用户运行木马或捆绑木马的程序后,木马就会自动进行安装。安装后就可以启动木马了。 4. 信息泄露,木马成功安装后会收集一些服务端的软硬件信息,并通过E-MAIL,IRC或ICO的方式告知控制端用户。 5. 建立连接,在服务端已安装了木马程序和控制端,服务端都要在线的情况下,控制端可以通过木马端口与服务端建立连接。 6. 远程控制,木马连接建立后,控制端端口和木马端口之间将会出现一条通道。控制端上的控制端程序可藉这条通道与服务端上的木马程序取得联系,并通过木马程序对服务端进行远程控制。

31

11.5计算机病毒的防治措施有哪些?蠕虫和木马是如何防治的?

答:计算机病毒的防治技术大致可以分为三个方面:预防病毒、检测病毒和清除病毒。 对于蠕虫的防治可以采用以下主要措施:

(1)修补系统漏洞及时下载系统漏洞补丁程序,并及时升级系统;

(2)设置防火墙:禁止除服务端口外的其它端口,切断蠕虫的传输通道和通信通道; (3)对邮件进行监控,防止带毒邮件进行传播;

(4)建立局域网内部的升级系统包括各种操作系统补丁程序升级、各种常用的应用软件升级、各种杀毒软件病毒库的升级等等;

(5)建立灾难备份系统对于数据库和数据系统,必须采用定期备份、多机备份措施,防止意外灾难下的数据丢失;

(6) 采用入侵检测技术:入侵检测是一种主动防御网络攻击的技术,不仅能主动监控外网的攻击还能监控来自内部的攻击,弥补了防火墙的不足。建立病毒检测系统能够在第一时间内检测到网络异常和蠕虫攻击,对感染蠕虫的机器及时断开;

(7)删除蠕虫要利用的程序:删除或重命名客户端上传程序:如ftp.exe和fftp.exe;删除或重命名命令解释器:如Unix系统下的shell,Windows系统下的cmd.exe和WScript.exe等。

普通木马病毒入侵后手工清除的基本步骤为: (1)断开网络。

(2)检查进程,发现可疑的进程立即杀掉。

(3)检查注册表。在注册表及与系统启动有关的文件里查找木马启动文件,通常木马会在注册表的“RUN”、“RUN SERVER”、“LOAD”等项下加入键值,使其能在系统启动时自动加入。

(4)在系统中找到木马文件,删除文件并删除注册表或系统启动文件中关于木马的信息。

(5)安全处理。更改用户名和密码,包括登录Network的用户名、密码、邮箱和QQ密码等,防止黑客已经在上次入侵过程中知道了你的密码。

第12章

12.1什么是无线网络?根据网络覆盖范围、传输速率和用途的差异,无线网络可以分为哪些类型? 答:无线网络是无线技术与网络技术的结合的产物,既包括允许用户建立远距离无线连接的全球语音和数据网络,也包括为近距离无线连接进行优化的红外线技术及射频技术。

根据无线网络覆盖范围、传输速率和用途的差异,无线网络大体可分为无线广域网、无线城域网、无线局域网和无线个人区域网。

12.2无线网络面临的独特威胁是什么?

答:无线网络传输是利用电磁波实现的,电磁波在空间中发散,在信号覆盖范围内的所有终端设备都可以接收电磁波所携带的信息。这个特点使得无线网络与有线网络相比,传输的信息更容易被窃取,带来很多安全威胁,包括插入攻击、漫游攻击者、欺诈性接入点、双面恶魔攻击、窃取网络资源和对无线通信的劫持监视等。

12.3为了保障无线局域网的安全,常用的安全措施有哪些?

答:无线局域网常用安全机制有WEP、WPA/WPA2以及我国自主研发的WAPI等加密算法

32

和认证,安装个人防火墙,更改网络接入的用户名和密码,隐藏SSID和MAC地址过滤等。

12.4 简述WPA 协议实现的安全策略。

答:WPA 协议中的TKIP 算法是目前无线局域网中较WEP 更加安全的一个算法,所采用的安全策略可总结如下:

①采用Michael的消息完整性代码MIC来防止篡改攻击。 ②采用新的序号规则(TSC),防止重放攻击。 ③对各数据包采用不同密钥加密,避免弱密钥。 ④采用密钥更新机制,及时提供全新的加密密钥和完整性校验密钥,防止密钥重用带来的安全威胁。

33