信息安全与密码技术

 

信息安全与密码技术

 

 

一、安全需求与国家政策

密码技术是保护信息安全的主要手段之一。密码技术自古有之,到目前为止,已经从外交和军事领域走向公开,它并且是结合数学、计算机科学、电子与通信等诸多学科于一身的交叉学科,它不仅具有保证信息机密性的信息加密功能, 而且具有数字签名、身份验证、秘密分存、系统安全等功能。所以,使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和确证性,防止信息被篡改、伪造和假冒。

选择一个强壮的加密算法是至关重要的。此外,安全系统的结构和算法的实现以及通信协议也会影响到系统的安全性。

为了防止密码分析,可采取以下机制:

  1. 强壮的加密算法。一个好的加密算法往往只有用穷举法才能得到密钥,所以只要密钥足够长就会很安全。建议至少为64位。
  2. 动态会话密钥。每次会话的密钥不同,即使一次会话通信被破解,不会因本次密钥被破解而殃及其它通信。
  3. 保护关键密钥(Key Encryption Key,KEK),定期变换加密会话密钥的密钥。因为这些密钥是用来加密会话密钥的,泄漏会引起灾难性后果。

基于密码技术的访问控制是防止数据传输泄密的主要防护手段。访问控制的类型可分为两类:初始保护和持续保护。初始保护只在入口处检查存取控制权限,一旦被获准,则此后的一切操作不在安全机制控制之下。防火墙提供初始保护。连续保护指在网络中的入口及数据传输过程中都受到存取权限的检查,这是为了防止监听、重发和篡改链路上的数据来窃取对主机的存取控制。

密码学包括密码编码学和密码分析学,密码体制的设计是密码编码学的主要内容,密码体制的破译是密码分析学的主要内容,密码编码技术和密码分析技术是相互依存,互相支持,密不可分的两个方面。

从密码体制方面而言,密码体制有对称密钥密码技术和非对称密钥密码技术,对称密钥密码技术要求加密解密双方拥有相同的密钥.而非对称密钥密码技术是加密解密双方拥有不相同的密钥,在不知道陷门信息的情况下,加密密钥和解密密钥在计算上是不能相互算出的。通过后面的介绍,我们可以看出它们各自的优缺点。

密码学不仅仅是编码与破译的学问,而且包括安全管理、安全协议设计、秘密分存、散列函数等内容。到目前为止,密码学中出现了大量的新技术和新概念,例如零知识证明技术、盲签名、比特承诺、遗忘传递、数字化现金、量子密码技术、混沌密码等。

国家明确规定严格禁止直接使用国外的密码算法和安全产品,这主要有两个原因:一是国外禁止出口密码算法和产品,所谓出口的安全的密码算法国外都有破译手段,二是恐怕国外的算法和产品中存在“后门”,关键时刻危害我国安全。其中1996年国家有关部门颁布的27号文件严格制定的20字方针为:“统一领导、集中管理、定点研制、专控经营、满足使用”。当前我国的信息安全系统由国家密码管理委员会统一管理。

清华大学具有开发研制信息安全产品和密码算法的资格和能力,当前开发研制了多种密码算法和安全系统,许多系统已经获得了国家密码委员会的批准和应用部门的使用。

二、对称密钥密码技术

    对称(传统)密码体制是从传统的简单换位,代替密码发展而来的,自1977年美国颁布DES密码算法作为美国数据加密标准以来,对称密钥密码体制得到了迅猛地发展,在世界各国得到了关注和使用。对称密钥密码体制从加密模式上可分为序列密码和分组密码两大类。

1、序列密码

序列密码一直是作为军事和外交场合使用的主要密码技术之一,它的主要原理是,通过有限状态机产生性能优良的伪随机序列,使用该序列加密信息流,(逐比特加密)得到密文序列,所以,序列密码算法的安全强度完全决定于它所产生的伪随机序列的好坏。衡量一个伪随机序列好坏的标准有多种,比较通用的有著名的Golamb的三个条件,Rueppel的线性复杂度随机走动条件,线性逼近以及产生该序列的布尔函数满足的相关免疫条件等。

产生好的序列密码的主要途径之一是利用移位寄存器产生伪随机序列, 典型方法有:

  • 反馈移位寄存器:采用n阶非线性反馈函数产生大周期的非线性序列,例如M序列,具有较好的密码学性质,只是反馈函数的选择有难度,如何产生全部的M序列至今仍是世界难题。
  • 利用线性移位寄存器序列加非线性前馈函数,产生前馈序列,如何控 制序列相位及非线性前馈函数也是相当困难的问题,Bent序列就是其中 一类好的序列,我国学者对反馈序列和前馈序列的研究都取得了相当多的成果。
  • 钟控序列,利用一个寄存器序列作为时钟控制另一寄存器序列(或自己控制自己)来产生钟控序列,这种序列具有大的线性复杂度。
  • 组合网络及其他序列,通过组合运用以上方法,产生更复杂的网络,来实现复杂的序列,这种序列的密码性质理论上比较难控制。
  • 利用混沌理论,细胞自动机等方法产生的伪随机序列。
  • 对序列密码攻击的主要手段有代数方法和概率统计方法,两者结合可以达到较好的效果。目前要求寄存器的阶数大于100阶,才能保证必要的安全。
  • 序列密码的优点是错误扩展小,速度快,利于同步,安全程度高。

2、分组密码

分组密码的工作方式是将明文分成固定长度的组(块),如64比特一组 ,用同一密钥和算法对每一块加密,输出也是固定长度的密文。例如DES密码算法的输入为64比特明文,密钥长度56比特,密文长度64比特。

设计分组密码算法的核心技术是:在相信复杂函数可以通过简单函数迭 代若干圈得到的原则下,利用简单圈函数及对合等运算,充分利用非线 性运算。以DES算法为例,它采用美国国家安全局精心设计的8个S-Box 和P-置换,经过16圈迭代,最终产生64比特密文,每圈迭代使用的48比特子密钥是由原始的56比特产生的。

DES算法加密时把明文以64bit为单位分成块,而后用密钥把每一块明文转化成同样64bit的密文块。DES可提供72,000,000,000,000,000个密钥,用每微秒可进行一次DES加密的机器来破译密码需两千年。采用DES的一个著名的网络安全系统是Kerberos,由MIT开发,是网络通信中身份认证的工业上的事实标准。

DES(或其他分组密码)算法的使用方式有4种,电子密本(ECB), 密码分组链接(CBC),输出反馈(OFB)和密文反馈(CFB)。

DES的密钥存在弱密钥,半弱密钥和互补密钥,选择密钥时要注意这些问题。DES受到的最大攻击是它的密钥长度仅有56比特,强力攻击的代价低于1000万美元,1990年S.Biham 和 A.Shamir提出了差分攻击的方法,采用选择明文247攻击,最终找到可能的密钥,M.Matsui 提出的线性分析方法,利用243个已知明文,成功地破译了16圈DES算法,到目前为止,这是最有效的破译方法。

基于以上弱点,人们将DES算法作了多种变形,三重DES方式,独立子密钥方法,可变的S-Box及其使用次序以及推广的GDES等。这些改变有些是增强了密码算法的安全性,有些作用不大,有些还削弱了DES的安全性。

自从DES算法颁布以来,世界各地相继出现了多种密码算法,之所以出现这些算法,有政治原因和技术原因,各国在商用方面都需要自己设计的密码算法,不能依靠外国的算法,又因为DES算法的弱点和软件实现中面临的位操作及大量的置换,设计寿命仅有5年,所以必须设计出更高强度的密码算法,以代替DES,这些算法有:

LUCIFER算法,Madryga算法,NewDES算法,FEAL-N算法,REDOC算法, LOKI算法,KHUFU算法, KHAFRE算法,RC2及RC4算法,IDEA算法, MMB算法,CA-1.1算法,SKIPJACK算法,Karn 算法以及MDC算法等。其中多数算法为专利算法。

以上这些算法有些已经遭到了破译,有些安全强度不如DES,有些强度高于DES,有些强度不明,还有待于进一步分析。其中安全强度高于DES算法的如RC2及RC4算法,IDEA算法, SKIPJACK算法等。

清华大学研制开发了TUC系列密码算法,已申请国家专利。

总之,因为对称密钥密码系统具有加解密速度快,安全强度高等优点,在军事,外交以及商业应用中使用越来越普遍。

三、非对称密钥密码技术

  1.  
    1. RSA公开密钥密码算法

      公开密钥:n=pq,(p,q分别为两个互异的大素数,p,q 必须保密)

      e与(p-1)(q-1) 互素

      秘密密钥:d=e-1 (mod (p-1)(q-1) )

      加密:c= me (mod n ), 其中m为明文,c为密文

      解密: m= cd (mod n )

      一般要求p,q为安全素数,n的长度大于512bit ,这主要是因为RSA算法的安全性依赖于因子分解大数问题。

      目前无论是软件实现RSA还是硬件实现,速度无法同对称密钥密码算法相比,因子分解问题也得到了长足发展,1995年人类成功地分解了128位十进制数RSA密码算法,破译512Bit 长的RSA指日可待。

    2. Diffie-Hellman密钥交换协议

      设p为512比特以上大素数,g<p,p,g公开,A与B通过对称密钥密码体制进行保密通信,以下是A,B通过公开密钥算法协商通信密钥的协议。

      (1) A随机选择x<p,发送 gx (mod p ) 给B;

      (2) B随机选择y<p,发送 gy (mod p ) 给A;

      (3) A通过自己的x秘密计算 ( gy )x(mod p ) = gxy (mod p ) ;

      (4) B通过自己的y秘密计算 ( gx )y(mod p ) = gxy (mod p ) ;

      A与B拥有相同的数据 gxy (mod p )作为共同的秘密密钥进行保密通信。这里的算法安全性主要依赖于有限域上的离散对数问题。

    3. DSA美国数字签名算法

      公开密钥:p :512至1024比特的素数(用户组公用)

      q :为(p-1)的160比特长的素因子(用户组公用)

      g=h(p-1)/qmod q, 其中h<p-1,且g>1, (用户组公用)

      y=gx mod p

      秘密密钥:x<q

      签名过程:k<q, 随机选择

      r=( gk mod p) mod q, s=( k-1 (H(m)+xr))mod q

      (r,s)作为对消息m的签名,H(x)为安全的Hash(散列)函数

      验证过程:w= s-1 mod q

      u1=(H(m)w) mod q

      u2=(rw) mod q

      v= ((gu1 yu2 mod p) mod q

      若v=r,则对m的签名有效。

      其中H(x)可选择美国推荐的标准算法SHA或MD5等安全散列算法。我们清华大学曾设计了一个安全的散列函数HAS。

      DSA算法的安全性也依赖于有限域上的离散对数问题,安全强度和速度均低于RSA算法,其优点是不涉及专利问题。

    4. 其他公钥体制
  2. 1976年Diffie和Hellman以及Merkle分别提出了公开密钥密码体制的思想 ,这不同于传统的对称密钥密码体制,它要求密钥成对出现,一个为加密密钥(e),另一个为解密密钥(d),且不可能从其中一个推导出另一个。自1976年以来,已经提出了多种公开密钥密码算法,其中许多是不安全的, 一些认为是安全的算法又有许多是不实用的,它们要么是密钥太大,要么密文扩展十分严重。多数密码算法的安全基础是基于一些数学难题, 这些难题专家们认为在短期内不可能得到解决。因为一些问题(如因子分解问题)至今已有数千年的历史了。

    公钥加密算法也称非对称密钥算法,用两对密钥:一个公共密钥和一个专用密钥。用户要保障专用密钥的安全;公共密钥则可以发布出去。公共密钥与专用密钥是有紧密关系的,用公共密钥加密的信息只能用专用密钥解密,反之亦然。由于公钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大简化了密钥管理。除加密功能外,公钥系统还可以提供数字签名。公共密钥加密算法主要有:RSA(Receive、Shamir、Adelman)、Fertezza、EIGama等。

    DSS(Digital Signature Standard)、Diffie-Hellman公钥加密方法支持彼此互不相识的两个实体间的安全通信,如信用卡交易,但缺乏对资源访问的授权能力(存取控制)。公钥加密算法中使用最广的是RSA。RSA使用两个密钥,一个公共密钥,一个专用密钥。如用其中一个加密,则可用另一个解密,密钥长度从40到2048bit可变,加密时也把明文分成块,块的大小可变,但不能超过密钥的长度,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但加密解密的开销也大,所以要在安全与性能之间折衷考虑,一般64位是较合适的。RSA的一个比较知名的应用是SSL,在美国和加拿大SSL用128位RSA算法,由于出口限制,在其它地区(包括中国)通用的则是40位版本。

    公用密钥的优点就在于,也许你并不认识某一实体,但只要你的服务器认为该实体的CA是可靠的,就可以进行安全通信,而这正是Web商务这样的业务所要求的。例如信用卡购物。服务方对自己的资源可根据客户CA的发行机构的可靠程度来授权。目前国内外尚没有可以被广泛信赖的CA。美国Natescape公司的产品支持公用密钥,但把Natescape公司作为CA。由外国公司充当CA在我国是一件不可想象的事情。

    公共密钥方案较保密密钥方案处理速度慢,因此,通常把公共密钥与专用密钥技术结合起来实现最佳性能。即用公共密钥技术在通信双方之间传送专用密钥,而用专用密钥来对实际传输的数据加密解密。另外,公钥加密也用来对专用密钥进行加密。

    在这些安全实用的算法中,有些适用于密钥分配,有些可作为加密算法,还有些仅用于数字签名。多数算法需要大数运算,所以实现速度很慢 ,不能用于快的数据加密。以下我们介绍一些典型的公开密钥密码算法 ,供大家参考。

人们一直努力在其他困难问题上建立公开密钥密码体制,不至于一旦一些数学难题被解决以后,没有可用的密码算法,所以出现了大量的公开密钥密码算法,包括:背包体制,POHLIG-Hellman算法,Rabin算法,

ElGamal算法,SCHNORR算法,ESIGN算法,McEliece算法,OKAMOTO算法,还可以在有限域上的椭圆曲线上建立RSA,ElGamal算法等。

我们认为RSA算法是目前最好的密码算法,它不仅可以作为加密算法使用,而且可以用作数字签名和密钥分配与管理,而DSA只适合作签名,且安全强度和速度都不如RSA,椭圆曲线上的公开密钥密码系统安全强度依赖于曲线的选择和体制,我们相信它会有更高的安全强度。

目前200比特长的椭圆曲线密码体制已经有相当高的安全强度。

在几乎所有的实用公开密钥密码系统中,都涉及到大数运算和素数选择 ,模幂运算采用反复平方取模算法,素数测试一般采用Rabin-Miller算 法,还有其他素性测试算法用来选择大素数,如Solovag-Strassen 测试法,Lehmann 测试法等。

 

你可能感兴趣的:(设计模式,应用服务器,算法,网络协议,网络应用)