网络信息安全技术(1)

发布时间:2004-02-12 作者:李晖

随着计算机与通信网络技术的融合与发展,网络信息安全作为信息化过程中的关键问题之一,得到了越来越多的关注。本讲座将对网络信息安全技术加以介绍。第1讲介绍密码学基础知识,第2讲介绍一些网络安全协议,第3讲介绍网络系统安全技术以及未来的发展。

    网络信息安全关系到国家安全,因此中国政府对信息安全非常重视。但是另一方面,中国信息安全的基础还很薄弱,相关知识和技术难以普及,极大地影响了中国信息网络安全保障的进程,因此需要加大网络信息安全主要理论与技术的宣传力度。
    网络信息安全技术主要可以分为两个方面:一是信息安全,一个是网络系统安全。信息安全以密码学技术为基础,涉及信息在传输、存储过程的机密性、完整性、不可抵赖性等一系列内容。信息安全技术在各种网络应用的安全协议当中有着具体的体现,目前从数据链路层到应用层都有相应的网络安全协议。网络系统安全涉及防火墙、入侵检测、病毒防范、安全审计等多个方面,与信息安全密切相关,应用了很多信息安全技术。

1 密码学
    密码学是一门古老的艺术,早在远古时代就已经出现了密写术。密码学的历史可以追溯到公元前1900年,那时的密码主要用于军事目的。在20世纪50年代以前,密码技术主要采用是的表代换,并以机械或者人工方式编码和解码。这之前的密码称之为古典密码学。古典密码主要是用于保护消息的内容。消息的内容从原来的形式被编码为非法者不能解码的形式,使得编码过的消息被非法者截获也无法解码。C.E.Shannon于1949年发表的《保密系统的通信理论》从信息论的角度阐述了密码学的本质,奠定了现代密码学的基础。随着计算机技术和网络技术的日新月异,许多密码新技术也不断涌现,密码学已经从简单的消息保密扩展到信息完整性、身份认证、不可抵赖性、授权管理和访问控制等诸多方面,成为保证网络和信息系统安全的不可缺少的关键技术。

1.1 基本概念
    在密码学术语当中,消息被称为明文,将消息内容编码成为非法者无法阅读的消息的过程称为加密。加密的消息称为密文。将密文还原成明文的过程称为解密。加密和解密通常都是在密钥的控制下完成的。消息只有在知道解密密钥的情况下才可以正确解密。

1.1.1  密码编码学和密码分析学
    密码学分为两个方面:密码编码学和密码分析学。
密码编码学研究如何使消息安全,而密码分析学研究如何破译密码,在不知道密钥的前提下恢复明文。现代密码学中有两类基于密钥的加密算法:对称密码算法和非对称密码算法(或称为单钥和公钥算法)。
    密码分析实际上是攻击者实施的一种行为。在没有密钥的情况下破解密文从而恢复出明文消息。经过多年的发展,已经出现了许多密码分析技术,主要的技术包括:
    (1)唯密文攻击
    攻击者只知道密文,没有任何其他关于消息内容的信息。实际实施中,攻击者通常猜测明文内容,因为许多消息有固定格式的消息头。对于现代密码学来说,这种攻击通常是无效的。
    (2)已知明文攻击
    攻击者知道了一部分密文和这些密文对应的明文,攻击者利用这些消息猜测密钥并用于解密其他截获的密文。
    (3)选择明文攻击
    典型的情况是攻击者拥有一个黑盒子可以用于加密,但不知道加密的密钥。攻击者可以选择任何明文让黑盒子加密并得到相应的密文,从这些得到的密文中攻击者通过猜测得到密钥。

1.1.2  完善保密和实际保密
    加密算法分为完善保密和实际保密。如果加密算法使得密文与明文是完全独立的,也就是说从密文中无法得到关于明文的任何信息,这种体制就称为完善保密或者是无条件安全的。不管攻击者截获多少密文,也不管拥有多少计算资源,都无法破译算法。完善保密系统要求可能密钥的数目与可能明文的数量至少一样多,每次加密都采用不同密钥的1次1密体制是完善保密的。但是完善保密系统实现代价非常大,其密钥管理十分困难。现代密码系统都是基于计算安全的概念,也就是说破译一个密码系统所需花费的努力如果超越了对手的能力(时间、资源等),那该系统就是实际安全的。因此现代密码系统都设计为所需的计算复杂度足够大,即使集中全世界所有的资源都无法攻破。

1.2 对称密码系统
    现代密码学中很多密码协议和技术都是为解决密钥分配问题而设计的。对称密码系统的加密和解密密钥相同。对称密码系统要求收发双方都知道密钥,而这种系统的最大困难在于如何安全地将密钥分配给收发的双方,特别是在网络环境中。
    对称密码算法分为两类:分组密码和流密码。分组密码算法是将明文按照一定长度分为组,以分组为单位在密钥的作用下进行加密;流密码算法则将明文看成为比特流,与密钥流产生器产生的密钥流按位异或。流密码必须解决收发双方的密钥流同步问题,否则会造成解密失败,但流密码算法的加密速度比分组密码算法快,其安全性的关键是构造具有良好随机特性的密钥流发生器。

1.2.1  分组密码算法的工作模式
    (1)ECB模式
    在电子密码本(ECB)模式中,明文分组的加密是独立的,在密钥相同的情况下,相同的明文会得到相同的密文。这种方式会造成比较大的安全问题,因为很多报文是有格式的,报文头基本上是固定的,这样攻击者可以猜测密文对应的明文。实际系统中基本不采用这种ECB模式。
    (2)CBC模式
    密文反馈链接(CBC)模式在加密时用前一分组的密文与当前分组的明文异或后再进行加密。加密过程中,第1个分组明文与1个初始向量异或。初始向量随机选择,长度与分组长度相同。由于初始向量是随机的,所以加密出来的结果也是随机的,这就使得相同明文得到的密文不相同。
    分组密码工作模式还有输出反馈(OFB)、密码反馈(CFB)等,限于篇幅就不详细介绍了。CBC模式是目前分组加密中应用最普遍的模式,许多加密标准都采用了CBC模式。


1.2.2  常用分组密码算法
    (1)DES/3DES
    数据加密标准(DES)是应用最普遍的对称加密算法,1970年由IBM推出。美国国家标准和技术协会(NIST)于1977年将其确定为商业和政府级应用的加密标准。DES的密钥长度为56比特,明文分组长度为64比特。
    DES的密钥长度太短,其安全性现受到极大的威胁。1998年6月17日,EFF宣布制造出了一个硬件设备,采用穷举试探法破译DES密钥平均需要4.5天时间,该设备包括设计费在内只需要22万美元。EFF预计随后可以用10万美元造出在1天内破译56比特DES的破译机。为解决DES密钥太短造成的问题,人们对DES应用作了一些小的修改。3DES采用3次DES运算完成一次加密操作。3DES定义了3个密钥K1、K2和K3,对明文P加密得到密文C的公式为:


C=EK3(DK2(EK1(P ))),

    其中EK(P )和DK(P )分别表示DES加密和解密。值得注意的是中间一次为解密操作。有时此过程也称为加密—解密—加密操作。当3个密钥各不相同时,总的密钥长度达到168比特。一般情况下K1=K3,密钥长度为112比特,强度较DES大大加强。速度是DES的三分之一。解密的过程与之相反。
3DES被ANSI确定为标准X9.52。NIST建议在所有系统应用中用3DES代替DES。
    (2)AES
    高级加密标准(AES)是取代DES的新的美国政府标准。1997年1月NIST在全球范围内征询AES算法方案。2001年比利时科学家J.Daemen设计的RIJNDEAL算法被NIST确定为AES标准算法。
    RIJNDEAL具有安全、性能好、易于实现和灵活的特点。其分组长度和密钥长度可在128、192、256中选择,共有9种组合方式,适用于不同应用场合。
    其他一些常有的对称密码有RC4、IDEA等。RC4是一种流密码算法,在IE浏览器的SSL协议和无线局域网WEP协议中都使用了该算法;国际数据加密算法(IDEA)由来学嘉和MASSY两人发明,是欧洲的分组加密标准。

1.3 非对称密码体制

1.3.1 基本概念
    对称密码算法运算的速度很快,但是收发双方必须事先共享密钥,而安全的密钥分配是非常困难的事,特别是在具有很多计算机的分布式网络中,每两个计算机间均要共享密钥,使得管理非常复杂。能否在不预先共享密钥的情况下实现安全通信呢?1976年,Diffie Hellman发表了文章“密码学的新方向”,首次提出了公开密钥密码的概念。在非对称密码体制当中,每个用户拥有一对密钥,分别称为公开密钥和秘密密钥。公开密钥和秘密密钥是对应的,用一个密钥加密就必须用另一个密钥才能解密。从秘密密钥导出公开密钥很容易,而从公开密钥推导秘密密钥则极为困难。


1.3.2 常用非对称密码算法
    构造安全的公钥密码算法不是一件容易的事情,自从非对称密码的概念提出之后,陆续提出了很多算法,但是能够经的起时间考验的算法只有很少的几类。
    (1)RSA算法
    RSA算法由Ronald Rivest、Adi Shamir和Leonard Adleman发明,已成为应用最广的非对称加密算法,是公钥密码算法的事实标准。RSA算法基于大数分解的困难性,由两个大素数p和q计算n(n=p×q)很容易,但将n分解为p和q则是非常难的事情。目前普遍认为一般应用场合,n的长度应为1 024比特。
    (2)Diffie-Hellman密钥交换
    另一类公钥密码算法基于离散对数问题。已知两个大数g和p,随机选择数x,计算y=gx  mod p很容易,而由y求x非常困难。Diffie和Hellman两人在1976年发表的文章中提出了一个利用离散对数问题在不安全的信道中可以安全交换密钥的方法,这种方法到目前为止在很多网络通信协议中得到应用,成为经典的密钥交换方法。
    从安全角度考虑,在实际应用中p的长度要在768比特以上,一般要求达到1 024比特。
    (3)ECC密码体制
1985年,华盛顿大学的Neil Koblitz和IBM的Victor Miller分别独立提出了椭圆曲线 (ECC)密码系统,这种体制的安全性是基于椭圆曲线上点的离散对数的困难性。ECC既可用于数字签名也可用于加密。
    与传统的RSA或离散对数问题相比,在椭圆曲线上利用大数分解或离散对数问题的ECC算法具有以下优点:

  • 由于解椭圆曲线离散对数问题更为困难,ECC算法实现上比传统公钥算法更有效。
  • ECC的密钥大小比传统体制小的多。例如典型的RSA密钥长度为1 024比特,达到128字节。而具有相同安全强度的ECC密钥长度仅需要160比特,即20字节。这在智能卡等空间有限的场合应用时显得极为有利。
  • ECC在加密时不需要处理素数,其速度比RSA快10倍。
  • 在传送短消息时ECC比RSA更能节省带宽。因为即使消息不足128字节,使用RSA加密时必须填充到128字节分组,而用椭圆曲线分组要小的多。


    上述优点使得ECC实现起来更为快速,功耗更低,代码长度更小。因此ECC得到了广泛的认可和好评,目前已经有几个标准将ECC列为建议算法,如IEEE P1363等。在智能卡中ECC得到了很好的应用。
还有一些其他的公钥体制如背包体制、McEliece体制、NTRU体制、XTR体制、Lucas体制和超椭圆曲线HCC体制,其中NTRU和HCC目前得到学术界比较多的关注,NTRU的速度很快,已被IEEE P1363考虑列入建议标准。

1.4 密码hash函数
    hash函数通常被用来计算消息摘要(或称为消息指纹)。hash函数将消息串压缩成为一个定长的比特串。密码hash函数必须满足如下特性:由消息计算hash值很容易,速度快;给定一个hash值,要寻找一个消息串,使其hash值与给定值相同在计算上是不可能的,也就是说hash函数应具有单向特性。
    由于hash函数是多到一的映射,肯定存在不同的消息其hash值是一样的情况,但是找到这样的值在实际计算时几乎是不可能的。两个明文串具有相同hash值称为碰撞。对于长为128比特的hash值来说,碰撞的概率为264分之一。而对于指定hash值寻找具有相同hash的明文串概率为2128分之一。
    (1)SHA-1
    安全hash算法SHA-1有时也被称为安全加密标准(SHS),是由美国政府发布的密码hash算法。它从任意长度的消息中产生160比特长度的hash值。在计算时消息被填充使其长度为512比特的整数倍。标准要求输入消息长度小于264比特,消息摘要可以作为数字签名算法(DSA)的输入计算数字签名。到目前为止,SHA-1被认为是安全的,在许多场合得到了应用。
    (2)MD5
    MD5是一种消息摘要算法,是另一个得到广泛应用的hash算法。MD5由Rivest设计,实际上是消息摘要算法MD4的增强版。MD5比MD4的运行速度稍慢。MD5可以将任意长度的消息串压缩为128比特的hash值。
    MD5的前身MD4已经被攻破,因此对MD5的安全性人们也很关注。1996年Hans Dobbertin发现了MD5的一个碰撞,尽管这个结果并不直接意味者MD5被攻破,但是作为预防措施一般建议在新的应用中不再使用MD5算法。

1.5 数字签字
    非对称密码体制的另一个应用是数字签字。在网络的虚拟环境中,验证电子文档发送者的身份并且确保文档的真实性以及在传输过程中不被篡改是非常重要的。数字签字是保证上述安全需求的有效手段。
    数字签字是一串数字字符。签字是用私钥进行的,而验证是用公钥。由于私钥是保密的,只有拥有私钥的人可以生成合法的签字,这样可以确保明文件发送者的身份以及文件传输中的完整性。签名实际上是对消息摘要进行的。由于Hash函数的单项性,用消息摘要是安全的。
    常用的签名方案有RSA和DSA。DSA的英文意思是数字签名算法,1991年由NIST提出并成为美国联邦标准(即FIPS 186)。其算法是ElGamal方案的变形,基于离散对数。签名方案中使用了SHA-1 hash函数,签字的长度为320比特。DSA只能用于签字而不能用于加密。

1.6 数字证书和公钥基础设施
    数字签字的认证主要是通过对密钥的认证进而认证密钥持有者的身份。这里存在的问题是验证者如何确信密钥持有者就是其声称的人呢?解决这个问题就需要有一个权威的公证机构,由公证机构为每个用户发放数字证书,这个公证机构我们称之为证书授权中心(CA)。国际电信联盟(ITU)的X.509标准规定了证书的标准格式,目前的版本是第3版。证书的主要内容如图1所示。

 

    证书的实际作用是将证书持有人的名称与其公钥对应起来,并由CA用数字签名进行公证。证书规定了有效期,在有效期内CA保证证书的真实性。甲在签名一个电子文档送给乙后,乙首先要求甲的数字证书,如果乙信任为甲发放证书的CA,他可以用CA的公开密钥验证证书的真实性从而确定证书中的公钥确实是甲的公钥,然后他以该公钥验证甲的签名,从而验证文档确实来自甲。
CA为Internet中的很多用户发放证书,因此必须管理这些证书。管理证书的系统包括注册、审核、发放、保存、注销等。管理证书的系统以及CA的证书管理政策的集合统称为公钥基础设施(PKI)。
    一般说来,PKI包含有RA、CA、目录服务、证书注销列表(CRL)等组成部分。RA是注册权威机构,负责对申请证书的用户进行合法性审查,要求他们提供相应的证明材料以确认身份。CA负责为用户生成数字证书。用户的密钥对可以由用户自己生成,也可以由CA代为生成。PKI还为所有生成的证书提供一个公开的目录服务,任何用户可以从目录中获得其他已经发放的用户证书,以获得公钥。CRL用于发布虽然未到失效期,但是因私钥泄漏等原因而注销的证书列表,列表中列出了注销证书的序列号,并且由CA签名。用户在验证证书正确后,还应该在注销列表中查询该证书是否已经注销。
    PKI作为分布式网络虚拟环境的中心近年来得到广泛信任。各种PKI技术也有飞速的发展,比如无线环境中应用的WPKI技术、访问授权环境应用中使用的SPKI技术等。(待续)


收稿日期:2003-11-19