网络安全:加密技术及其应用
所属栏目:黑客安全回顾    发布时间:2008-7-17 16:13:06

主要内容: 本节主要讲解各种加密算法在计算机中的用途,加密是防止黑客盗取资料和保护信息安全最重要的手段之一,其中会讲到对称加密,非对称加密,和一次性加密它们各自的特点,原理,及运用的场合。然后我们通过一些加密软件的使用来保护自己信息的安全,还有就是可以对网络中的通信流量进行加密确保信息在传输过程中的安全。

网络安全:加密技术及其应用(20080715)在线专题授课音频

(本课程正式学员可登录学习系统,进入对应课程,在窗口左边的“课程资料室”内进行在线浏览。)


一、为什么要使用加密
  在学习加密之前可能大家已经在使用加密了,运用加密的原因是多种多样的。加密主要完成以下功能:
  数据的保密性:加密能防止数据不被未授权的用户知道。
  身份验证:通过验证用户的加密要素,从而识别用户的身份。
  保证数据的完整性:加密能保证和检查数据有没有被更改。

二、创建信任关系
  应用加密意味着在两个主机之间建立信任关系,一个最基本的信任级,涉及到怎样用一些特殊的代码进行交换和识别,称为密钥。主机利用这个密钥加密信息从而保证只有相对应的某个远程主机才能解密信息,加密过程一般用公共密钥完成。也就是说我们可以创建两个密钥,一个私钥、一个公钥。
  在生成了一对密钥以后就可以将公钥公布给任何人,公钥的发布方法有两种:
  手动发布:首先要得到接受者的公钥,然后以接受者的公钥对信息进行重新编码和加密,这种方法通常用在邮件信息的加密里面。
  自动发布:SSL和IPSec提供了一种合理的交换信息(包括使用私钥)的方法和机制,通过使用一系列的握手过程来实现。主要使用到的是公共密钥结构体系,如windows2000 的域里面就是采用了自动发布公钥。

三、对称密钥加密
  在对称加密或在单密钥加密中,即只有一个密钥用来加密和解密信息,换句话说加密和解密使用同一个密钥,这和我们对一般加密概念的理解是没有冲突的。因为单密钥加密是一个简单的过程,所以要求双方都必须完全的相信对方,并都持有这个密钥的备份,但要达到这种信任级别并不是想象中的那么简单。怎样才能使双方建立起这样的一种信任关系呢?首先密钥的传输就是—个重要问题,如果它被截取,那么这个密钥以及相关的重要信息就没有什么安全可言了。
  现实生活中有很多关于对称密钥加密的例子,如你用来访问你的ATM机所使用的密码或登陆到你的ISP密码。
  对称加密的好处就是快速并且强壮,这种特点允许你加密大量的信息而只需要很少的时间。对称加密的缺点是有关密钥的传播和管理不方便,所有的接收者和查看者都必须持有相同的密钥,因此所有的用户必须寻求一种安全的方法来发送和接收密钥,当然物理上的传递是最可靠的。
  如果用户要在公共介质上用互联网来传递信息,他就需要一种安全有效的方法来传递密钥,当然从理论上物理的发送和接收密钥肯定是最安全的,但有时这是不可能的。一种解决方法就是通过电子邮件来发送,但电子邮件是明文传输协议,这样的信息很容易被截取到,从而击破了加密的目的。用户开始的时候不能加密包含密钥的邮件,解决办法就是他们必须共享另一个用来加密且含有密钥邮件的密钥,这种困境就产生了问题。对此的一个解决方案就是用非对称加密,我们将在本课的后面提到。
  所有类型的加密都面临的一个问题就是破解。破解主要有字典破解和暴力破解,对付字典破解就是改变密钥的规律性。然而,定期改变密钥是困难的,尤其是你的公司里有很多用户,另外,黑客还可以使用password sniffing来危及对称密钥的安全,或者通过搜翻办公桌、钱包以及公文包,对付暴力破解就需对称加密的长度设置得更长、更复杂。

  1.对称加密算法
  有很多特殊的数学算法来实现对称加密,这些算法包括数据加密标准(DES)、TRIPLE DES、RSA算法的RC2、RC4、RC5、RC6、MARS、Two fish、AES等。
数据加密标准
  DES最早由IBM提出,美国的国家技术标准局(NIST)在1977年的时候正式地采用了DES,可以在http://www.nist.gov了解更多有关NIST的内容。DES和TripleDES已经成为许多公司和组织加密的标准,在美国联邦执行标准(FIPS)PUB 46-l 中有详细介绍 FIPS文献是由NIST开发的公共标准。Cipher-Block Chaining(CBC)是数据加密标准的—种模式,在FIPSPUB 81里有详细描述
http://www,nist.gov/itl/div897/pubs/fip81.htm,美国国家安全机构(NSA)和国家技术标准局(NIST)来维护这些系统。
  DES是一种block(块)密文的加密算法,是把数据加密成64位长度的block(块)。使用相同的密钥来加密和解密,这种标准使用一种叫做“diffusion and confusion”的技术。每64位的数据被分成两半,并利用密钥对每一半进行运算(称做—次round或是轮),DES运行16个rounds,并且对于每个round运算所使用密钥的位数是不同的。
  DES的优点是快速并易于实施,DES已经提出近几年30年,因此很多硬件和软件都使用DES算法,特别是一些数据库的加密方面很多都是采用DES算法。但是,密钥的传播和管理非常困难,因为DES依赖于单密钥模式。
  目前在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用。以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。

TripleDES
  普通DES使用56位长度的密钥,对于一般信息的加密已经足够了。对于—些更敏感的信息,一些用户使用一种叫triple DES的技术。这种情况下是信息首先被使用56位的密钥加密,然后用另一个56位的密钥译码,最后再用原始的56位密钥加密,实际上运行了三次,也就是原有DES密钥长度的3倍。
  在各种加密的级别中,Triple DES经常能防止man-in-the-middle攻击。普通的DES加密速度已经很快,虽然Triple DES增加了加密的运算量,但也要比其它的对称算法速度快。Triple DES最大的优点就是可以使用已存在的软件和硬件,在DES加密算法上已做出大量投资的公司可以轻松的实施Triple DES。

RSA安全公司的对称算法
  RonRivest、AdiShamir和LeonardAdleman在1977年发明了他们的公钥加密系统,并且以他们名字中的第一个字母命名成立了RSA安全公司。到现在,他们已经发明了几种不同的算法。RSA算法可用于几种商业的操作系统和程序中,包括Windows NT和Netscape Navigator。RSA比较出明的算法有RC2,RC4,RC5,RC6等,这些也都主要是用于商业用途,RSA安全公司(www.rsa.com)在加密的领域中有着广为人知的卓越成效。

  在商业应用程序中RC2利RC4是最常用的对称密钥算法,它们使用可变长度的密钥在美国最多支持到128位。在国际上,由于美国政府对出口的限制,RC2和RC4从美国出口密钥最长只能是40位。

RC2和RC5
  RC2是由Ron Rivest开发的,它是一种block(块)模式的密文,就是把信息加密成64位的数据块。因为它可以使用不同长度的密钥,它的密钥长度可以从零到无限大,并且加密的速度依靠密钥的大小,可以满足不同企业的要求,运用非常广泛。
RC5类似于RC2,也是block密文,但是这种算法采用不同的block大小和密钥大小,这种算法相对RC2来讲更为复杂,还有在算法中数据所通过的round也是不同的。一般建议使用128位密钥的RC5算法并有12到16个rounds。

RC4
  是由Rivest在1987年开发的,和RC2和RC5有比较大的差异,RC4是—种流式的密文而不是块式密文件,也就是说加密是动态的,不像RC2有个固定的块大小,就是实时的把信息加密成一个整体。密钥的长度也是可变的,在美国一般密钥长度是128位,向外出口时限制到40位,因为受到美国出口法的限制。Lotus Notes,Oracle SQL都使用RC4的算法。

高级加密标准 (AES)
  一些专家认为DES和TripleDES不足以满足安全的需求。在1997年1月,美国国家技术标准局(NIST)开始对DES展开调查和测试。到写这本书的时候,NIST已经进行了第三轮评估。为了满足其它一些需求,对称加密选择的AES必须能建立128、192和256位长度的密钥,并可支持不同的平台。

用于AES的候选算法包括:
MARS
RC6
Rijndael
Serpent
Two fish
  在2000年10月2日,NIST最终选择了Rijndael作为AES加密的算法,想了解更详细的AES/Rijndael的信息可以访问http://csrc.nist.gov/encryption/aes/

2、非对称加密
  非对称加密在加密的过程中使用一对密钥,而不像对称加密只使用—个单独的密钥。—对密钥中一个用于加密,另一个用来解密。如用A加密,则用B解密,如果用B加密,则要用A解密,每个用户都会有两个密钥一个是公开的一个是自己的私钥,要求绝对保密。
理解非对称加密的时候一定要记住这对密钥中一个密钥用来公用,另一个作为私有的密钥,用来向外公布的叫做公钥,另一半需要安全保护的是私钥。图4-5显示了公钥与私钥的关系
  非对称加密的一个缺点就是加密的速度非常慢,因为需要强烈的数学运算程序。如果一个用户需要使用非对称加密,那么即使比较少量的信息可能也要花上几小时的时间。
  非对称加密的另一个名字叫公钥加密。麻省里工学院的数学家们在1970年首先开发了非对称密钥(公钥)技术,尽管私钥和公钥都是与数学相关的,但从公钥中确定私钥的值是非常困难的并且也是非常耗时的,但因为公钥加密对密钥的管理和可操作性比较强,所以在网络中被广泛运用。在互联网上通信,非对称加密的密钥管理是容易的,因为公钥可以任意的传播,私钥必须在用户手中小心保护。
  举一个关于使用公钥加密的例子:假如我们需要发送一个安全的信息给用户X,我们就使用用户X的公钥对信息进行加密(用户X的公钥是公开的,任何人都可以得到,这不影响用户X自己的私钥的安全,因为通过公钥计算出私钥基本上是不可能的),然后将加密后的信息发送给用户X,用户X收到以后,可以用自己的私钥进行解密,而其它任何人是不能够解密的,因为没有用户X的私钥。
  因为私钥与公钥在算术运算上的特殊关系,要想通过公钥计算出私钥基本上是不可能的,这就在互联网上为人们传输和管理密钥提供了很大的方便,同时人们也可以放心安全的使用公钥技术。因为公钥是可以公开的,而私钥由用户自己保管。

浏览器怎样使用公钥加密
  我们大量的信息都可以通过浏览器来进行传输,在浏览器里面就有一个信息加密的标准就是安全套接字层,即SSL(secure sockets layer)。大多数的浏览器都包含有来自于可信任中心颁发的证书,通过证书就能够分析WEB服务器是否有签名或是可受信任的,从而自动

建立起信任关系,并且加密传输信息。浏览器验证的内容包括:
证书是否得到信任的机构签名
WEB服务器的名字是否与中心认证给出的名字相同
证书是否有效,是否到期

如果其中任何一项有误,浏览器将提示你是否继续或怎么处理。

非对称密钥加密元素
  三种最常见的非对称密钥加密是RSA、the Digital Signature Algorithm(DSA)、 Diffie-Hellman。
  DSA是美国国家技术标准局研发的技术,并且已广为使用。尽管它的功能不同于RSA,但它并不是一项专利,第三方的厂商或是企业可以利用它来实现加密系统,并且成为Linux下公钥加密方法的标准。
  Diffie-Hellman是一种安全交换密钥的协议,因此可以看作密钥交换协议。它是一种开放式标准并在安全通信中广泛使用,主要有一点作了改动。但是Diffie-Hellman密钥交换协议的方法易受man in-the middle这类攻击,所以Station-to-station(STS)协议改变了Diffie Hellman协议的这个弱点,并采取相应的认证。

3、HASH加密
  HASH加密也叫一次性加密或是单向加密,它是把一些不同长度的信息转化成杂乱的128位的编码,叫做HASH值。HASH加密用于不想对信息解密或读取,主要的功能就是对信息的完整性进行检验。使用这种方法解密在理论上是不可能的,它是通过比较两个实体的值是否一样而不用告之其它任何信息。HASH加密另一种用途是签名文件,它还可用于当你想让别人检查但不能复制信息的时候。
  在实际运用中,一台自动取款机(ATM)不需要解密消费者的个人标识数字(PIN),磁条卡将顾客的代码单向地加密成一段HASH值,—旦插入时,ATM机将计算用户PIN的HASH值并产生—个结果,然后再将这段结果与用户卡上的HASH值比较。使用这种方法,PIN是安全的,即使对于那些维护ATM机的人来说也不会知道PIN码是多少。

HASH算法
  HASH加密使用复杂的数字算法来实现有效的加密。以下是目前使用的几种标准算法:

MD2,MD4,和MD5
  MD2、MD4和MD5是一组基于单向HASH功能的算法,这些操作采用一定长度的字节流并产生一个唯一的指纹。这种过程是单向的,你不可能通过相同的签名来产生—些信息,而且指纹是唯一的,因为没有两条信息会有相同的HASH值。这些操作可以使用信息摘要算法对E-mail信息、证书和其它一些想保证内容完整性的项目产生唯—的单向指纹,通常信息摘要是128位长度的。
  RonRivest还开发了信息摘要算术2(即MD2),MD4和MD5要比MD2更快并广为使用。MD4容易遭到攻击,至少最后几圈的加密曾被成功地攻破过。Rivest又开发了MD5,要比MD4更强壮并仍使用128位的HASH,现在MD5在各种系统中已经运用得非常普通。

安全HASH算法(SHA)
  安全HASH算法是另一种HASH功能的应用,还有著名的安全HASH标准(SHS)是由NIST和NSA开发并用于美国政府,它可以从任意的长度字串摘取160位的HASH值。SHA在结构上类似于MD4和MD5,尽管它比MD5的速度要慢25%,但它更加安全。它产生的信息摘要比MD5要长25%,因此对于攻击来说是更安全的。

MD5sum
  MD5广泛运用于windows2000和Linux系统中,Linux中md5sum工作提供了文件校验的功能,无论文件的大小和长度是多少,通过md5sum总能得到一个长度为128位的编码,这个编码非常有用,可以以此来判断文件是否经过更改。

  文章来源:cpcwedu.com