Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15072798
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: 网络与安全

2008-05-31 23:35:27

序:这是我花了近2周的时间写的,可以说比较全面地介绍了各种分组密码、如DES算法、IDEA算法,其中最为宝贵的一部分是最后AES新推荐的算法Rijndael,它是今年10月份美国国家标准和技术研究所刚刚推出的分组密码算法,目前美国官方还没有正式发布此标准,但基本上已有定夺。
  
  前言
  
  数据加密作为一项基本技术是所有通信安全的基石。数据加密过程是由形形色色的加密算法来具体实施,它以很小的代价提供很大的安全保护。在多数情况下,数据加密是保证信息机密性的唯一方法。据不完全统计,到目前为止,已经公开发表的各种加密算法多达数百种。如果按照收发双方密钥是否相同来分类,可以将这些加密算法分为常规密码算法和公钥密码算法,两种算法最有名的代表分别为DES和RSA。粗略地讲,分组密码是用一个固定的变换对一个比较大的明文数组进行操作。本文将对分组密码进行详细的介绍。
  
  分组密码
  
  分组密码即对固定长度的一组明文进行加密的算法。它将明文按一定的位长分组,明文组和密钥组的全部经过加密运算得到密文组。解密时密文组和密钥组经过解密运算(加密运算的逆运算),还原成明文组。
  
  分组密码的特点是:密钥可以在一定时间内固定,不必每次变换,因此给密钥配发带来了方便。但是,由于分组密码存在着密文传输错误在明文中扩散的问题,因此在信道质量较差的情况下无法使用。
  
  分组密码其中最著名的两个分组密码即DES(Data Encryption Standard) 数据加密标准和IDEA(International Data Encryption Algorithm)国际数据加密算法。
  
  术语和符号
  
  一个分组密码有两个重要的参数:一个是密钥的大小,称作密钥长度;另一个是每次操作的组的大小,称作分组长度。
  
  被变换的数据称作明文,变换后的数据称作密文。
  
  将明文变换成密文的过程称作加密,其逆过程,即由密文恢复出原明文的过程称作解密。密钥是由希望通信的双方选择的一些秘密信息。
  
  通信双方的密钥可能一样,也可能不一样,我们把前者称作对称密码,后者称作非对称密码。该报告限于介绍对称的分组密码。将明文变换成密文时所采用的一组规则称作加密算法,由密文恢复出原明文时所采用的一组规则称作解密算法。加密和解密算法通常是在密钥控制下进行的。
  
  在密钥K控制之下的加密算法E记为E_K,明文消息m对应的密文记为E_K(m)。类似地,在密钥K控制之下的解密算法D记为D_K,密文消息c对的明文记为D_K(c)。显然,对所有的明文m,都有D_K(E_K(m))=m。
  
  分组密码-DES
  
  DES密码算法的产生及发展
  
  DES密码是1977年由美国国家标准局公布的第一个分组密码。
  
  20世纪五十年代,密码学研究领域出现了最具代表性的两大成就。其中之一就是1971年美国学者塔奇曼 (Tuchman)和麦耶(Meyer)根据信息论创始人香农(Shannon)提出的"多重加密有效性理论"创立的,后于1977年由美国国家标准局颁布的数据加密标准DES。
  
  为了实现同一水平的安全性和兼容性,为此美国商业部所属国家标准局(ANBS)于1972年开始了一项计算机数据保护标准的发展规则。于1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,为了建立适用于计算机系统的商用密码,于1973年5月和1974年8月先后两次向公众发出了征求加密算法的公告。1973年5月13日的联邦记录(FR1973)中的公告,征求在传输和存储数据中保护计算机数据的密码算法的建议,这一举措最终导致了数据加密标准(DES)算法的研制。征求的加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点:
  
  提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;
  具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;
  DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;
  实现经济,运行有效,并且适用于多种完全不同的应用。
  在征得的算法中, IBM公司提出的算法lucifer中选。DES密码实际上是Lucifer密码的进一步发展。它是一种采用传统加密方法的分组密码。1975年3月17日,ANBS向社会公布了此算法,首次公布在联邦记录中,以求得公众的评论。1977年1月正式向社会公布,采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(DES-Data Encryption Standard)。成为美国联邦信息处理标准,即FIPS-46,同年7月15日开始生效。
  
  随后DES的应用范围迅速扩大到涉及美国以外的公司、甚至某些美国军事部门也使用了DES,引起了美国国家安全局的忧虑。因此,里根总统曾于1984年9月签署了一项命令,即NSDD-145号命令,下令责成美国防部的国家安全局负责组织、研制一种新的数据加密标准CCEP(Commercial Communication Security Endorsement)商用通信安全保证程序于1988年取代DES。后来由于遭到整个最大的金融界用户以其不符合他们的要求为由的强烈反对,美国政府在其国会的压力下才撤销了里根这个NSDD-145号命令。
  
  DES自1977年由美国国防部采用,它的标准ANSI X.3.92和X3.106标准中都有说明。因为担心这种方法被敌对国使用,美国政府不允许出口此种算法的加密软件,但是要想找到这种软件也不难,在各地的BBS上都会有。
  
  每隔五年由美国国家保密局(NSA)对DES作出评估,并重新批准它是否继续作为联邦加密标准。
  
  DES简介
  
  数据加密标准(DES)是一种世界范围之内广泛使用的以密钥作为加密方法的加密手段,被美国政府确定是很难破译的,因此也被美国政府作为限制出口的一种技术。在此标准下有72,000,000,000,000,000 (72Q)多种密钥可供使用。对于每条给定的信息,密钥在这72Q个密钥中随机选择。与其它的加密方法一样,加密方和解密方必须使用相同的密钥,所以DES算法也属于对称算法。它的算法是对称的,既可用于加密又可用于解密。
  
  设计分组密码算法的核心技术是:在相信复杂函数可以通过简单函数迭代若干圈得到的原则下,利用简单圈函数及对合等运算,充分利用非线性运算。DES算法采用美国国家安全局精心设计的8个S-Box 和P-置换,经过16圈迭代,最终产生64比特密文,每圈迭代使用的48比特子密钥是由原始的56比特产生的。
  
  DES密码算法输入的是64比特的明文,在64比特密钥的控制下产生64比特的密文;反之输入64比特的密文,输出64比特的明文。64比特的密钥中含有8个比特的奇偶校验位,所以实际有效密钥长度为56比特。
  
  DES算法加密时把明文以64bit为单位分成块,而后用密钥把每一块明文转化成同样64bit的密文块。DES提供72,000,000,000,000,000个密钥,用每微秒可进行一次DES加密的机器来破译密码需两千年。采用DES的一个著名的网络安全系统是Kerberos,由麻省理工学院MIT开发,是网络通信中身份认证的工业上的事实标准。
  
  DES应用
  
  自DES算法颁布之后,引起了学术界和企业界的广泛重视。许多厂家很快生产出实现DES算法的硬件产品,广大用户在市场上买到高速而又廉价的DES硬件产品之后,开始用它加密自己的重要数据,从而大大推广了密码技术的使用。
  
  DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
  
  DES算法是这样工作的:如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。
  
  在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。
  
  通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。
  
  在银行金融界及非金融界,越来越多地用到了DES算法,目前美国使用的128位对称密码算法(DES),支持全美的电子商务活动。1998年全美电子商务营业额为160亿美元,尚未发现有安全问题。目前,在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密。如信用卡持卡人的PIN的加密传输、IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。
  
  DES算法
  
  DES使用56比特有效密钥的64-比特分组密码来加密64位数据。它是一个16-圈的迭代型密码。加、解密算法一样,但加、解密时所使用的子密钥的顺序刚好相反。DES的硬件实现的加密速率大约为20 M比特/秒;DES的软件实现的速率大约为400 ~ 500 K比特/秒。DES专用芯片的加密和解密的速率大约为1G比特/秒。
  
  DES的圈函数f对32比特的串作如下操作:首先将这32比特的串扩展成48比特的串。其次将这48比特的串和48比特的密钥进行组合并将组合结果作为八个不同S-盒的输入。每个S-盒的输入是6比特,输出是4比特。然后将S-盒的32比特做置换作为圈函数f的输出。
  
  DES有56比特的有效密钥,64比特密钥中的第8位、第16位、…、第64位为校验位。所以对DES最尖锐的批评之一是DES的密钥太短。
  
  DES算法以被应用于许多需要安全加密的场合。(如:UNIX的密码算法就是以DES算法为基础的)。下面是关
阅读(834) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~