第十章 计算机网络的安全
1、网络安全问题概述
2、常规密钥密码体制
3、公开密钥密码体制
4、报文鉴别
5、密钥分配
6、链路加密和端到端加密
7、防火墙
1、网络安全问题概述
10.1.1计算机网络安全性 面临的威胁
截获,第三方偷听通信双方的内容
中断,第三方中断通信双方的通信
篡改,丙篡改甲发送给乙的报文
伪造,丙假装为甲,与乙通信分 被动攻击 和 主动攻击 两大类。其中截获为被动攻击,其余为主动攻击,
主动攻击又进一步分为,1) 更改报文流 2) 拒绝报文服务 3) 伪造连接初始化 4) 恶意程序,计算机病毒、计算机蠕虫、特洛伊木马、
逻辑炸弹
10.1.2计算机网络安全的内容
1) 保密性加密
2) 安全协议的设计
3) 接入控制对用户的权限加以控制
10.1.3一般的数据加密模型
密码体制理论上不可破,如果不论截取多少密文,都不能唯一推出明文。
密码体制计算机上不可破,不能在有意义的时间内被可以使用的计算机资源破译。
现有实用的密码体制都是计算上不可破 。
10.2常规密钥密码体制
10.2.1替代密码与置换密码替代密码 用一组密文字母来代替一组明文字母以隐藏明文,但保持明文字母的位置不变。
例如,将字母 a,b,c,d,…,w,x,y,z的自然顺序保持不变,但使之与 D,E,F,
G,…,Z,A,B,C分别对应(即相差 3个字符)。若明文为 student则对应的密文为
VWXGHQW(此时密钥为 3)。
破译的诀窍在于猜测密匙的长度。由于英文字母中各字母出现的频度早已有人进行过统计,
所以根据字母频度表可以很容易对这种代替密码进行破译。
换位密码,不对明文字母进行变换,只是将明文字母的次序进行重新排列,它的密匙必须是一个不含重复字母的单词或短语。
C I P H E R
1 4 5 3 2 6
a t t a c k
b e g i n g
a t f o u f
密钥顺序明文密文,abacnuaiotettgfksr
破译换位密码的第一步是判断密码类型,检查密文中常用字母的出现频率,如果符合自然语言特征,则密文是用换位密码写的。第二步是根据消息的上下文猜测密匙的长度,
即列数。第三步是确定各列的顺序。
按照加密时对明文的处理方式,密码算法又可分为 分组密码算法 和 序列密码算法 。
序列密码算法是逐个比特(或字符)地处理,
用已知的密钥随机序列与明文按位异或。当然当分组长度为 1时,二者混为一谈。

分组密码算法把密文分成等长的数据组,
然后 以组为单位,分别加密 。
种子
I0 密钥序列产生器发端

种子
I0 密钥序列产生器发端
kix
i yi
ki x
i
序列密码算法
10.2.2 数据加密标准
DES又称 对称密钥加密体制 是 美国国家标准局 颁布的 数据加密标准
1 DES特点:
(1)加密密钥和解密密钥是相同的。
(2)DES算法是公开的,保密强度取决于密钥的保密性。
(3) 密钥交换不方便。
2 DES加密算法先将数据分组,每组64位,
采用64位的密钥进行加密。过程如下:
密钥计算加密函数 f
以上介绍了 DES算法的加密过程。 DES算法的解密过程 是一样的,区别仅仅在于第一次迭代时用子密钥 K16,第二次 K14,......,最后一次用 K1,
算法本身并没有任何变化。
由于连续使用选择函数与置换运算,加强了密码强度。
对于 DES来说,相同的分组明文产生相同的密文,
这对 DES的安全来说是不利的,为了提高安全性,
采用加密分组链接的方法,见 P298图 10-6。

E
明文 X0
初始向量密文 Y0

E
X1
Y1

E
X2
Y2

D
密文 Y0
初始向量明文 X0
Y1
X1
Y2
X2

D

D
加密过程 解密过程
DES实际密钥长 56位,密钥空间为 256,随着计算机速度的不断提高和专用解密芯片的出现,采用穷举法,使 56位密钥破译成为可能 。 目前对 DES改进是采用三重 DES,使用两个 64位密钥进行加密,实际密钥长达到 112位,对目前商业应用来讲已经足够长 。 其加密,解密过程如图所示:
明文密钥 K1
加密 E 解密 D 密文加密 E
密钥 K2 密钥 K1
密文 明文加密 E解密 D 解密 D
密钥 K1 密钥 K2 密钥 K1
加密时采用 E-D-E而不是 E-E-E或 E-E.
目的是为了与 64位密钥兼容,当 K1=K2时,与 64位密钥一样。
10.3 公开密钥密码体制 RSA
RSA使用 一对密钥进行加密和解密,一个称为 公钥
PK,另一个称为 私钥 SK,公钥公开,解决了 DES密钥交换困难的问题;私钥掌握在产生密钥的用户手中,
对外保密。
2.2.1 RSA特点:
(1)公钥可以解开私钥加密的信息,私钥也可解开公钥加密的信息 。
(2) 公钥不能解开公钥加密的信息 。
(3)可以容易地产生成对的 PK和 SK
(4)由公钥推导出私钥在计算上是不可能的 。
(5) RSA加密算法和解密 算法公开 。
图 6- 8 RSA的加密、解密过程用户可以将其 公钥通过报纸、互联网等途径公开发布,因此,A很容易获得 B的公钥。 A用 B的公钥加密信息后,只有
B的私钥才能解密信息,由于 B的私钥只有 B本人知道,所以,只有 B能解密发送给他的信息。任何第三方即使窃听到加密信息,并且知道 B的公钥,也无法解开,从而保证了数据传输的安全性。
10.3.2 RSA加密算法
RSA原理 是基于数学上单向陷门函数的性质,寻找两个大素数容易,但将它们的乘积分解开则极为困难 。
一,密钥的产生 方法如下:
1,秘密选择两个大素数 p 和 q 。 计算 n = p * q,n称为模数 。 设 p=7,q=17,则 n=119
2,计算 n的欧拉函数 Φ(n)= ( p - 1 ) * ( q - 1 ),从
[0,Φ(n)-1]中随机选择 加密指数 e,要求 e与 Φ(n) 互质 。
Φ(n)=6*16=96,从 [0,95]中选出加密指数 e,设 e=5
3,计算 解密指数 d,满足 e * d = 1 mod(Φ(n) )。
5*d=1 mod (96 ),因 5*77=4*96+1=1 mod (96 ),得 d=77
得到 公钥 PK={e,n}={5,119},私钥 SK={d,n}={77,119}
,已知 e和 n无法推出 d。 两个素数 p和 q不再需要,应该丢弃 。
加密时,首先将明文 X分成等长分组 X1,X2,...,Xi,
每个明文分组的值不超过 n。 对各分组进行加密得密文
Yi,将 Yi按序排列即得整个密文 。
加密公式 是,Y = Xe ( mod n ),设 X=19.
Y=195 ( mod 119 )=2476099/119
得 Y=66
解密公式 是,X = Yd ( mod n )
X=6677 ( mod 119 )=1.27… ╳ 10140/119 得 X=19
10.3.3数字签名书信或文件是根据发送方的亲笔签名或印章来证明其真实性,对计算机网络中传送的电文如何进行签名呢?
这就是数字签名所要解决的问题,数字签名必须保证以下三点:
1)接收方能够确认数据是指定的发送方送来的,而不是冒充者送来的;
2)发送方事后不能抵赖对数据的签名;
3)接收方不能伪造对数据的签名。
D
SK
用秘密密钥进行签名
E
PK
用公开密钥核实签名发送者 接收者
X X
数字签名的实现
D
SKA
用秘密密钥进行签名
D
SKB
用秘密密钥解密发送者 接收者
X XE
PKB
用公开密钥进行加密
E
PKA
用公开密钥核实签名具有保密性的数字签名
10.4 报文鉴别报文鉴别的目的是防止报文被篡改或伪造 。
报文摘要是由明文经散列函数 H( 即报文摘要函数 )
处理后得到的 128位长信息,摘要可作为验证明文的
,指纹,数据 。
特点:
1,散列函数很难逆向求解,由明文生成摘要很容易
,但由摘要推出明文在计算上是不可行的 。
2,不同明文产生的摘要不相同 。
MD5算法,
1) 将明文按模 264计算其余数 ( 64位 ),追加在报文后面,这样最后得出的 MD代码已包含了报文长度信息 。
2) 在明文和余数之间填充 1-512位,使填充后的总长度是 512的整数倍 。 填充数据首位是 1,其余是 0。
3) 将追加和填充后的数据分组,每组 512位,用散列函数 H依次对各分组进行处理,得到 128位摘要,处理过程如下图所示:
初始值保存在 4个 32位的寄存器 ABCD中,其十六进制值为,A=01234567 B=89ABCDEF C=FEDCBA98
D=76543210
512位的分组数据分成 4个 128位的数据块依次送到散列函数进行 4轮计算,每一轮都按 32位的小数据块进行复杂的运算,每一轮计算结果都要写入 ABCD寄存器中,并用于下一轮计算。这样摘要中的每位都与报文中的每一个比特有关,应用如下,
上图可实现防窃听、防篡改、防抵赖
DES的密钥分配方法有:网外分配和网内分配。
常用的方法是设立 密钥分配中心 KDC
用户 A要与用户 B通信,他们分别拥有与 KDC
通信的密钥 KA-KDC和 KB-KDC
10.5 密钥分配
① KA-KDC(A,B)
② KA-KDC(R1,KB-KDC (A,R1))
③ KB-KDC (A,R1)
A和 B用密钥 R1通信
KA-KDC
KB-KDC
KDC用户 A 用户 B
A知道了密钥 R1
B知道了密钥 R1
在 RSA中,虽然公钥不需对任何人保密,但必须采取措施防止公钥被冒充。例如,设 A与 B通讯,C在公开站点上用自己的公钥替代了 B的公钥,C就冒充了 B。
为保证公钥的正确性,需建立一个可信任的 认证权威机构 CA(Certificate Authority),CA认证机构承担了网上交易的认证服务,能发布和废除数字证书。
数字证书 是由 CA机构签发的,能可靠证明持有者身份的电子文档,包括持有者姓名、公开密钥、私有密钥、有效期、签发者名称等,并附加 CA的数字签名,
用以证明用户相关信息,尤其是公开密钥的可靠性。
CA分别接受销售商和顾客的申请,并发布各自的证书,使得两者在进行电子交易中可以相互确认对方身份。
10.6链路加密与端到端加密
10.6.1链路加密见书 P306 图 10- 12
对协议控制信息和数据都加密,能有效防窃听,
要求一条链路的 两结点之间具有相同的密钥,
密钥管理易于实现。
链路加密对用户来说是透明的,其功能由通信子网实现。
最大缺点,中间结点暴露了信息的内容。
10.6.2端到端加密是在源结点和目的结点中对传送的信息进行加密和解密,不会因中间结点的不可靠而受到影响。
只加密了 PDU的数据部分,而控制信息部分(如源、目的 IP地址)不被加密。为什么?
10.7防火墙
古时候,人们常在寓所之间砌起一道砖墙,一旦火灾发生,它能够防止火势蔓延到别的寓所,这种墙因此而得名,防火墙,。
现在,如果一个内部网( intranet)接到了外联网( extranet)上,内部网中的用户就可以访问因特网,但同时,因特网中的用户也可以访问内部网。为安全起见,可以在内部网和因特网之间插入一个中介系统,竖起一道安全屏障,这个中介系统就是,防火墙,。防火墙有软件防火墙和硬件防火墙之分,多数情况下,采用的是软件防火墙,即在一台专门的计算机上安装防火墙软件。
防火墙的作用 是阻断黑客通过因特网对内部网发起的入侵和破坏。在防火墙上,
可以设置网络的 访问控制列表 (简称
ACL),在访问控制列表中规定了哪些信息允许通过,哪些信息不允许通过,
防火墙对所有进出的数据包都进行检查,
只有授权的数据包才能通过,非授权的数据包则丢弃。
防火墙是保护内部网安全的最主要、最有效、最经济的措施之一。防火墙在网络中所处的位置如图所示。
防火墙的分类
防火墙总体上可分为 包过滤防火墙 和 应用级防火墙(也称为代理服务器) 两大类型。
1.包过滤防火墙(网络级防火墙)
工作在网络层和传输层。
系统管理员在防火墙上设置访问控制列表 ACL,
列表中定义了哪些 IP地址是允许通过的,哪些是禁止的。当防火墙收到数据包后,会打开数据包,将数据包中的 IP地址同列表中的 IP地址进行比较,允许,则转发,不允许,则丢弃。
例如,在列表中定义了这样一条规则,禁止内部网访问 IP地址为 202.101.10,10的计算机,
那么,防火墙收到内部网送来的一个数据包后,
检查数据包中的目的 IP地址,如果为
202.101.10.10,则丢弃,这样,内部网用户也就访问不了这台计算机。国家有关部门可以通过包过滤防火墙来禁止国内用户去访问那些
,有问题,的国外站点。
包过滤防火墙除了可根据 IP地址 进行过滤外,
还可以根据 端口 等来过滤。
包过滤防火墙的优点是速度快,但安全性不高,
无法对传输的内容进行检查。
2.应用级防火墙
应用级防火墙又称为代理服务器,工作在应用层。
管理员在代理服务器上设置有访问控制列表
ACL,可以根据 IP地址、端口、传输的内容 等来设置过滤规则。
代理服务器上运行有专门的代理程序,它负责检查进出的数据包,并在内部网和外部网之间通过复制来传递数据。这样,代理服务器会象一堵真正的墙那样,挡在内部网和外部网之间,
从外部网只能看到代理服务器而看不到内部网的任何资源,完全,阻隔,了内部网和外部网之间的直接通信。其工作过程如图所示。
当外部网的客户机需要使用内部网的服务器上的数据时,首先将数据请求发给 代理程序,代理程序检查通过后,将这一请求发给内部网的服务器,索取数据;然后,内部网的服务器收到请求后,将数据发给代理程序,由代理程序转交给客户机。
代理服务器都通常拥有一个 高速缓存,其中存储有用户经常访问的站点的内容,当内部网用户要访问的网页在高速缓存中时,代理服务器就用不着到互联网上去“抓”同样的内容。这样,既节省了时间,
又节约了网络资源。
应用级防火墙的优点是比包过滤防火墙更安全,因为它除了检查数据包中的地址外,还检查数据;更可靠,因为它会详细地记录下所有的访问记录,以便及时发现黑客攻击留下的痕迹。但是,应用级防火墙速度较慢 。
(完 )
16次循环左移位数,1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1
64位密钥换位选择 1
28位 C0 28位 D0
循环左移 循环左移
28位 C1 28位 D1
换位选择 2
48位 K(1)
初始 Key值为 64位,其中第 8,16,......64位是奇偶校验位,不参与 DES运算。
故 Key 实际可用位数便只有 56位。
循环左移 循环左移
28位 Ci 28位 Di
换位选择 2
48位 K(i)
循环左移 循环左移
28位 C16 28位 D16
换位选择 2
48位 K(16)
S1,S2...S8为 选择函数,其功能是把 6bit数据变为 4bit数据。下面给出选择函数 Si(i=1,2......8)的功能表
S1,14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,
0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,
4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,
15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,
S2,….
在此以 S1为例说明其功能,我们可以看到:在 Si
中,共有 4行数据,命名为 0,1,2,3行;每行有 16列,
命名为 0,1,2,3,......,14,15列。
现设输入为,D= D1D2D3D4D5D6
令:列= D2D3D4D5,行= D1D6 然后在 S1表中查得对应的数,以 4位二进制表示,此即为选择函数 S1的输出。
32位 R(i)
选择运算 E
48位结果 48位 K(i)
模 2加选择函数 S1~S8
32位结果
48位置换运算 P