第七章 网络安全

第七章 网络安全

7.1.3 数据加密模型

用户A向B发送明文X,但通过加密算法E运算后,就得出密文Y

加密和解密用的密钥K是一串秘密的字符串(即比特串)。明文通过加密算法变成密文的一般表示方法如下:
Y = E K ( X ) Y = E_K(X) Y=EK(X)
在传送过程中可能出现密文的截取者(或攻击者、入侵者)。接收端利用解密算法D运算和解密密钥K,解出明文X。解密算法是加密算法的逆运算。在进行解密运算时,如果不使用事先约定好的密钥就无法解出明文。
D K ( Y ) = D K ( E K ( X ) ) = X D_K(Y) = D_K(E_K(X)) = X DK(Y)=DK(EK(X))=X
上述假定加密密钥和解密密钥是一样的(实际可以不一样)。密钥通常由密钥中心提供。当密钥需要向远地传送时,一定要通过另一个安全信道。

密码编码学是密码体制的设计学,而密码分析学则是在未知密钥情况下从密文推测出明文或密钥的技术。两者合起来即为密码学

如果不论截取者获得了多少密文,但在密文中都没有足够的信息来唯一地确定 出对应的明文,则这一密码体制称为无条件安全的,或称为理论上是不可破的。在无任何限制的条件下,目前几乎所有实用的密码体制均是可破的。因此,人们关心的是要研制出在计算上(而不是在理论上)是不可破的密码体制。如果一个密码体制中的密码,不能在一定时间内被可以使用的计算资源破译,则这密码体制称为在计算上是安全的

数据加密标准公钥密码体制的出现,称为近代密码学发展史上的两个重要的里程碑。

7.2 两类加密模型

7.2.1 对称密钥密码体制

对称密钥密码体制:加密密钥与解密密钥时使用相同的密码体制。

DES是一种分组密码。它的保密性取决于对密钥的保密,而算法是公开的。

三重DES:把一个64位明文用的一个密钥加密,在用另一个密钥解密,然后再使用第一个密钥加密,即
Y = D E S k 1 ( D E S k 2 − 1 ( D E S k 1 ( X ) ) ) Y = DES_{k1}(DES_{k2}^{-1}(DES_{k1}(X))) Y=DESk1(DESk21(DESk1(X)))
三重DES广泛用于网络、金融、信用卡等系统。

7.2.2 公钥密码体制

公钥密码体制:使用不同的加密密钥与解密密钥。

产生原因:密钥分配问题;数字签名的需求;

RSA体制,基于数论中的大数分解问题的体制。

在公钥密码体制中,加密密钥PK(public key,即公钥)是公开的,解密密钥SK(secret key,即私钥)是需要保密的。加密算法E和解密算法D也是都要公开的。

特点:

  1. 密钥对产生器产生出接收者B的一对密钥:加密密钥 P K B PK_B PKB和解密密钥 S K B SK_B SKB。发送者A所用的加密密钥 P K B PK_B PKB就是接收者B的公钥,它向公众公开。而B所用的解密密钥 S K B SK_B SKB就是接收者B的私钥,对其他人都保密。

  2. 发送者A用B的公钥 P K B PK_B PKB通过E运算对明文X加密,得出密文Y,发送给B。
    Y = E P K B ( X ) Y = E_{PK_B}(X) Y=EPKB(X)
    B用自己的私钥 S K B SK_B SKB通过D运算进行解密,恢复出明文,即
    D S K B ( Y ) = D S K B ( E P K B ( X ) ) = X D_{SK_B}(Y) = D_{SK_B}(E_{PK_B}(X)) = X DSKB(Y)=DSKB(EPKB(X))=X

  3. 虽然在计算机上可以容易地产生成对的 P K B PK_B PKB S K B SK_B SKB,但从已知的 P K B PK_B PKB实际上不可能推导出 S K B SK_B SKB,即从 P K B PK_B PKB S K B SK_B SKB是“计算上不可能的”。

  4. 虽然公钥可用来加密,但却不能用来解密,即
    D P K B ( E P K B ( X ) ) ≠   X D_{PK_B}(E_{PK_B}(X)) \neq\ X DPKB(EPKB(X))= X

  5. 先后对X进行D运算和E运算或者进行E运算和D运算,结果都是一样的:
    D S K B ( E P K B ( X ) ) = E P K B ( D S K B ( X ) ) = X D_{SK_B}(E_{PK_B}(X)) = E_{PK_B}(D_{SK_B}(X)) = X DSKB(EPKB(X))=EPKB(DSKB(X))=X

对称密钥:一对一的双向保密通信,双方都可加密发送,也可接收解密。

公开密钥:多对一的单项保密通信。算法开销较大

任何加密方法的安全性取决于密钥的长度,以及攻破密文所需的计算量,而不是简单的取决于加密的体制。

7.3 数字签名

数字签名必须保证能实现以下功能:

  1. 接收者能够核实发送者对报文的签名。称为报文鉴别
  2. 接收者确信所收到的数据和发送者发送的完全一样而没有被篡改过。称为报文的完整性
  3. 发送者时候不能抵赖对报文的签名,称为不可否认

  • 签名:A用私钥对明文X做D运算(并非“解密运算”)
  • 核实签名:B用公钥对密文X对E运算,得到明文X

为什么数字签名具有上述的三点功能:

  1. 除了A,没有人持有私钥,因此没人能产生密文X,所以B收到密文X,能确定是A发送的
  2. 如果有人篡改过报文,B得到的明文将不可读
  3. B将收到的密文拿去做公证,可以证明确实是A发过来的,无法否认

三个功能的关键在于没有其他人能够持有A的私钥 S K A SK_A SKA

上述只进行了签名,没有对报文进行加密,下图可以同时实现加密和签名。

7.4 鉴别

鉴别(authentication):是要验证通信的对方的确是自己所要通信的对象,而不是其它的冒充者,并且所传送的报文是完整的,没有被其他人篡改过.

鉴别与**授权(authorization)**是不同的概念,授权的问题是:所进行的过程是否被允许。

鉴别细分为两种,一报文鉴别,鉴别收到的报文确实是发送者发的,而不是伪造或篡改的;二是实体鉴别,仅仅鉴别发送报文的实体。

7.4.1 报文鉴别

  1. 密码散列函数

    虽然使用数字签名的方法能实现报文鉴别,但是很消耗CPU,因此需要一种相对简单的方法对报文进行鉴别,这就是密码散列函数

    散列函数具有以下两个特点:

    • 输入长度可以很长,但是输出长度是固定的,并且较短。散列函数的输出叫做散列值,或者散列
    • 不同的散列值肯定对应于不同的输入,但是不同的输入有可能得到相同的输出。即多对一

    在密码学中使用的散列函数称为密码散列函数,重要特点是:已知一个明文和散列值,要通过散列值找到另一个可能的明文,在计算上是不可能的,所以入侵者不可能伪造。密码散列函数是一种单向函数

  1. MD5和SHA-1
    MD5,报文摘要(message digest)的第五个版本,目前MD5的逆向变换变得可能,因此MD5被另一种安全散列算法SHA(secure hash algorithm)的标准所取代

    下面以MD5来介绍报文摘要,MD5的算法大致过程如下:

    1. 先把任意长的报文按模 2 64 2^{64} 264计算其余数(64位),追加在报文的后面
    2. 在报文和余数之间填充1~512位,使得填充后的总长度是512的整数倍,填充的首位是1,后面都是0
    3. 把追加和填充后的报文分割为一个个512位的数据块,每个512位的报文数据再分成4个128位的数据块依次送到不同的散列函数进行4轮计算,每一轮又都按32位小数据块进行复杂的计算,一直到最后计算出MD5报文摘要代码(128位)

    SHA是由美国标准与技术协会NIST提出的一个散列算法系列,SHA和MD5相似,但码长为160位,SHA也是用512位长的数据块经过复杂的运算得出的。SHA比MD5更安全,但计算起来却比MD5要慢些

  2. 报文鉴别码

    简单的做法是A将明文X的散列H(X),放在A后面发送。但是这样并不安全,因为截获者可以伪造明文Y,重新计算散列H。

    因此必须对散列进行一次加密

    1. A用明文X计算出散列H(X)
    2. A用密钥K对散列H进行加密,得到报文鉴别码MAC
    3. A把已加密的报文鉴别码MAC拼接在报文X的后面,发送给B
    4. B收到扩展的报文后,先对报文鉴别码MAC进行解密,得到加密前的散列H
    5. B把报文X进行散列运算,与之前得到的散列H进行比较;如果一致,则可确认报文是A发送的

    目前已经有了好几个不同的MAC标准,使用的最广泛的是HMAC

7.4.2 实体鉴别

报文鉴别是对每一个收到的报文都要鉴别报文的发送者,而实体鉴别是在系统接入的全部持续时间内对和自己通信的对方实体只需要验证一次

最简单的实体鉴别如图所示,A向远端的B发送自己的身份A和口令,并且使用公钥进行加密,B收到后用公钥进行解密,从而鉴别A的身份

这种方法并不安全,截获者C并不需要破译报文,直接把密文发给B,使得B误认为C就是A,然后B向A发送敏感报文,这叫做重放攻击(replay attack)。C甚至可以截获A的IP地址,伪装成A,这叫做IP欺骗。

为了对付重放攻击,可以使用不重数(nonce),不重数就是一个不重复使用的大随机数,鉴别过程如下:

  1. A首先用明文发送其身份A和一个不重复数 R A R_A RA给B
  2. B响应A的查询,用共享密钥 K A B K_{AB} KAB R A R_A RA加密后发送给A,同时也给出不重数 R B R_B RB
  3. A响应B,用共享密钥 K A B K_{AB} KAB R B R_B RB加密后发给B

在使用公钥密码体制时,可以对不重数进行签名鉴别。公钥密码体制虽然不必再互相通信的用户之间秘密分配共享密钥,但是仍有受到攻击的可能。

中间人攻击(man-in-the-middle attck)

7.5 密钥分配

由于密码算法是公开的,网络的安全性就完全基于密钥的安全保护上,因此密码学中出现了一个重要的分支–密钥管理。包括密钥的产生、分配、注入、验证、使用。

密钥分配是密钥管理中最大的问题,密钥必须通过最安全的通路进行分配,随着用户增多,应采用网内分配方式,即对密钥自动分配。

7.5.1 对称密钥的分配

对称密钥分配存在两个问题:

  1. n个人中的每个人都需要和n-1个人通信,如果n很大,需要的密钥数量就非常大。是个 n 2 n^2 n2问题。
  2. 通信的双方怎样才能安全获得共享的密钥

目前常用的密钥分配方式是设立密钥分配中心KDC。其任务是给需要进行秘密通信的用户临时分配一个会话密钥。

下图是密钥分配的步骤,假设A和B已经在KDC登记,使用**(主)密钥** K A K_A KA K B K_B KB和KDC进行通信。

  1. A向密钥中心KDC发送明文,说明想和B通信
  2. KDC用随机数产生会话密钥 K A B K_{AB} KAB供A和B使用,KDC向A发送回答报文,用A的密钥 K A K_A KA加密,这个报文中包含 K A B K_AB KAB和一个票据(ticket)。该票据中包含A和B的身份,以及密钥 K A B K_AB KAB。票据用B的密钥 K B K_B KB加密
  3. A将票据转发给B,B收到票据后使用KB解密,就知道A要和它通信,也知道通信的密钥KAB

目前最出名的密钥分配协议是Kerberos v5,它既是鉴别协议,也是KDC,目前是互联网建议标准。使用比DES更安全的高级加密标准AES进行加密。

7.5.2 公钥的分配

在公钥密码体制中,如果每个用户都具有其它用户的公钥,就可以实现安全通信

这需要一个值得信赖的机构来将公钥与其对应的实体进行绑定。这样的机构叫做认证中心CA,一般由政府出资建立

每个实体都有CA发来的证书,里面有公钥及其拥有者的表示信息,此证书被CA进行了数字签名,任何用户都可以获取CA的公钥来验证某个公钥是否为某个实体所拥有

为了使CA的证书具有统一的格式,ITU-T制定了X.509协议标准,用来描述证书的结构,在X.509中规定要使用ASN.1,IETF接受了X.509,并在RFC 5280中给出了互联网X.509公钥基础结构PKI

7.7 系统安全:防火墙与入侵检测

7.7.1 防火墙

防火墙(firewall):是一种访问控制技术,通过严格控制进出网络边界的分组,禁止任何不必要的通信,从而减少潜在的入侵发生。

防火墙是一种特殊编程的路由器,安装在一个网点和其余部分之间,目的是实现访问控制策略。

防火墙技术一般分为两类:

  1. 分组过滤路由器:具有分组过滤功能,根据过滤规则对进出内网的分组执行转发或丢弃,优点是简单高效,而且对用户是透明的,缺点是不能对高层数据进行过滤。
  2. 应用网关,也称为代理服务器:在应用层通信中扮演报文中继的角色,一种网络应用需要一个应用网关。在应用网关中,可以实现基于应用层数据的过滤和高层用户鉴别

7.7.2 入侵检测系统

入侵检测系统IDS对进入网络的分组执行深度分组检查,当观察到可疑分组时,向网络管理员发出警告或者阻断操作

IDS能用于检测多种网络攻击、包括网络映射、端口扫描、DOS攻击、蠕虫和病毒、系统漏洞攻击

入侵检测方法一般分为基于特征的入侵检测基于异常的入侵检测

  1. 基于特征:IDS维护一个所有已知攻击标志性特征的数据库,当发现某种攻击特征匹配的分组时,认为可能检测到入侵行为。缺点是只能检测到已知攻击,对于未知攻击束手无策。
  2. 基于异常:IDS通过观察正常允许的网络流量,学习正常流量的统计规律和特性,当检测网络中流量的某种统计规律不符合正常情况时,认为发生了入侵行为。但是却分正常流和统计异常流是非常难的,不管采用什么检测技术,都有误报和漏报情况。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值