1)成本低。由于端对端加密在中间任何节点上都不解密保护,所以仅要求发送点和最终的目标节点具有加密、解密设备,而链路加密则要求每条链路的每个节点均配有分立的密钥装置。
2)端对端加密链路加密更安全。采用端对端加密,控制中心的加密设备可对文件、字以及系统的常驻数据起到保护作用。然而,由于端对端加密只是加密数据包的数据部分,数据包的包头仍需要保持明文形式,所以数据包容易为非法分析者所利用。对端对端加密来说,密钥数量大,因此其密钥管理是一个十分重要的问题。
7.5.5网络中的数据加密
在计算机网络和数据通信中的数据加密主要使用DES算法和RSA算法。
1.DES算法
DES(Data Encryption Standard)算法是由美国IBM公司于1973年提出的,1975年研制成功的一种传统密码体制的加密算法,它采用多次换位加密与代替相结合的处理方法。1975年1月5日被美国确定为统一的数据加密标准,20多年来得到了广泛应用。
计算法输入的是64位的明文,在64bit的密钥控制下,经过16次的加密交换,最后通过拟初始换位(也成为最后交换),得到64位的密文。其密文的每一个比特都是有明文的,每一比特和密钥的每一比特联合确定的。其实现过程可分为加密处理、加密交换、子密钥生成和解密几个过程。它具有良好的保密性和抗分析破译功能,影响最大,应用最广。
信息加解密技术具有非常久远的历史,在需要秘密通信的地方都用得到它。因为虚拟专用网络建筑在Internet公众数据网络上,为确保私有资料在传输过程中不被其他人浏览、窃取或篡改,所有的数据包在传输过程中均需加密,当数据包传送到专用数据网络后,再将数据包解密。加解密的作用是保证数据包在传输过程中即使被窃听,“黑客”只能看到一些封锁意义的乱码。如果“黑客”想看到数据包内的资料,他必须先破解用于加密该数据包的密钥(Encryption Key)。随着加密技术与密钥长度的不同,破解密钥所需的设备与时间有显着不同。
按密钥个数不同,加解密技术可概分为两大类,一是对称式密码学(Symmetric Cryptography),有时又称密钥式密码学(Secret-key Cryptography);另一种是非对称式密码学(Asymmetric Cryptography),又称公用钥匙密码学(Public-key Cryptography)。对称式的加解密使用同一把密钥,大家熟知的DES,RC4,RC5等即为对称式的加密技术。非对称式的加解密使用不同的密钥,其中以RSA最常被采用。由于对称式密码算法的运算速度较非对称式密码演算法快约2-3个数量级,所以目前大多采用对称算法来做通信加解密,而非对称算法用于密钥管理,实现的是一种混合(Hybird)算法,如格方网络安全公司和VPN的设备厂商VPNet Technologies Inc.就都是采用这种方式来实现网络上密钥交换与管理。这种方式不但可提供较快的传输速度,也有更好的保密功能。
2.RSA算法
RSA算法是公开密钥密码体制中的一种比较成熟的加密算法。该算法的加密密钥和解密密钥互异、分离。加密密钥可以通过非保密通信向他人公开,使任何的带该加密密钥的用户能根据此将明文信息加密成密文信息予以发送;而按特定要求选择的解密密钥,则保持保密。
RSA算法是建立在“大多分解的素数检测”理论基础上的。两个大素数相乘在计算机上是容易实现的,当将该层积分解为两个大素数因子的计算量却相当巨大,甚至在计算机上也不可能实现的。素数检测就是判定一个给定的正整数是否为素数。该算法取用一个合数(该合数为两个素数的乘积),而不是取用一个大素数作为其模数。其实现的步骤可分为:设计密钥,设计密文和恢复明文几个过程。RSA算法具有一定的特点和优越性,但不能取代DES算法。
7.5.6基于密钥的算法
传统的对称密钥在Internet中存在严重的弱点。因为它要求通信双方通过秘密信道私下商定之,而这不能完全做到。如果我们这样使用非对称密钥:当需要进行安全通信时,发信方使用收信方的公钥加密明文,之后再进行发送,那么显然只有收信方才能轻易得到明文。这样的通信方式似乎是安全的,但实际上它是存在安全隐患的,那就是:当我们使用公钥时,我们怎么确定公钥是谁的,或者说,我们能够确保我们正在使用的公钥是收信方的吗?之所以存在这个问题,主要是因为在公钥和实体之间不存在必然的一一对应关系,我们不得不采用某种方式确保这一点。
可以这样设想,存在一个很有权威的实体,它的公钥与它之间的一一对应是众所周知的,那么我们就可以让它充当一个这样的角色,那就是,任何想在Intranet上公布自己的公钥的实体,都要到权威实体那儿进行登记,将自己的公钥及其可公开的真实信息提供给权威实体,然后权威实体从这些信息中提取特征值,然后用它的私钥加密该特征值,将加密后的特征值与所有的原始信息合在一起(称为数字证书)返回给来登记的实体。上述过程称为“数字签名”,这个很有权威的实体就是 CA。之后所有登记后的实体之间就可以按下面的安全通信方式进行通信。
发信方要发送信息前,首先需要获取收信方的数字证书,然后对该数字证书中的公钥及其实体可公开的信息提取特征值,然后用公钥解密数字证书中的加密后的特征值,将得到的结果与提取出来的特征值进行比较,如果相等,则说明该数字证书中的公钥及其实体与可公开的信息之间的对应关系是有保证的(这个过程称为“验证数字签名”)。根据可公开的信息,我们知道收信方是谁。这样,我们便解决了“公钥是谁的?”或者说“公钥是收信方的吗?”的问题。
在介绍非对称密码算法之前,先介绍密码学的知识。密码算法是用于加密、解密的数学函数(一般有两个相关的函数,一个用于加密,另一个用于解密)。如果密码算法所导致的保密性基于算法的秘密性,那么这种算法称为受限制的算法。受限制的算法对用户很多的机构是不够安全的,因为只要其中一个用户一离开该机构,该机构就只能更换算法。另外,受限制的算法不能标准化或进行质量控制,因为这样一来,算法就没有秘密性了。现代密码学用密钥解决这个问题。假设密钥用K表示,K是从很多值中选出来的一个,K的可能值的范围叫做密钥空间。加密、解密都依赖于K进行。还有另外一些算法使用不同的加密密钥K1和解密密码K2,加密用K1进行,解密用K2进行。这样一来,密码算法所导致的保密性就变为基于密钥的保密性。基于密钥的算法有两种,其一为对称密钥算法,另一个为非对称密钥算法。
对称密钥算法的一个特点是加密密钥可以从解密密钥中推导出来。在大多数情况下,加密密钥就是解密密钥。所以泄密密钥就意味着任何人都可以对数据进行加密/解密。
非对称密钥算法是相对于对称密钥算法而言的。非对称密钥算法是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定长的时间内)。加密密钥公开出来,就是陌生人也能用加密密钥加密信息,而解密密钥则只能由个人保持。非对称密钥的这个特点导致了数字签名和数字信封等技术的出现。
7.5.7数字签名
当一个用户拥有合法的数字证书及其私钥时,他就可以对数据进行数字签名。其过程是:如用户的非对称密钥对是用RSA算法产生的,则他会选择一种报文摘要算法(或称单向散列函数)计算某一数据的一个固定大小的散列值,然后用他的私钥加密这个散列值,将加密后的散列值(以下称签名数据块)附加到数据之后,便完成数字签名的过程。
在这里,所采用的单向散列函数是非常关键的。为安全起见,它必须具有以下特征:
1.从原始的数据计算固定大小的散列值是很容易的;
2.给定散列值,反推出原始的数据是非常困难的,也就是说,函数具有单向性;
3.给定一个数据,要想找出另外一个数据,使它们的散列值是一样的,也是非常困难的;
4.要想随机地选择两个数据,使它们的散列值一样,也是非常困难的。
数字签名可用于保证数据的完整性、数据来源的确定性。这是因为当获得某人作了数字签名的数据时,可从其中取出原始数据及签名数据块,同时也可获知其单向散列函数的算法名,于是可以这样进行验证工作:用单向散列函数从原始数据算出一个散列值,从此人数字证书中取出其公钥解密签名数据块,将解密结果与算出的散列值相比,如果一致,则可以相信是此人作了数字签名,该信息确实来自此人,并且数据没有被纂改。否则,拒绝该数据。
为什么只要比较的结果不一致就拒绝之?这里面的关键在于所采用的单向散列函数和非对称密钥。
假设只有原始数据被纂改了,那么根据其算出的散列值就不与用户用公钥解密后的签名数据块的值一致,这种情况可以被算法发现;假设只有签名数据块被纂改了,用公钥解密后的结果与用原始数据算出的散列值显然不一致。这种情况可以被算法发现;假设原始数据和签名数据块都被纂改了,那么纂改者(可能是破坏者,也可能是网络错误)面临一个难题,他有两块数据,然后要做到这一点:就是使一块数据在一个未知的密钥解密后的结果与另一块数据一致。这个难题的难度与由公钥推导私钥的难度相当,而且在只有一次尝试机会的前提下,是无法解决的。所以我们可以相信我们收到的数据确实来自于数字证书的个人信息指定的人。
如用户的非对称密钥对是用DSA算法产生的,则其签名过程就是使用私钥加密的过程,验证签名则是使用公钥解密的过程。
7.5.8基于数字证书的身份认证
由于数字签名具有来源可靠性的特点,所以它可以被用于身份认证。认证过程可以是这样的:在收到用户端的作了数字签名的随机数据之后,服务器就可以验证用户的身份了。以上只是一个原理性的说明。在标准的SSL协议中,如果服务器要求用户必须提供证书,在用户和服务器建立连接的握手过程之前,用户端已检查用户指定的数字证书和其提供的私钥是否匹配。如果不匹配,则不进行握手过程。如果匹配,则进行握手过程。握手过程中,如果用户证书通过了验证,服务器在产生一个对称的随机密钥后,用用户证书中的公钥加密后传递给用户端,如果用户端不能用其私钥解密之,则握手过程失败。
如果用户端通过握手过程,则说明用户有一个和其指定的证书相匹配的私钥,而此证书通过了验证,则服务器可以通过证书识别该用户的身份。所以利用数字证书,是可以成功验证用户的身份的。
7.5.9数字信封
通信双方可用数字信封的技术来实现安全通信。在通信双方利用数字证书识别对方的身份后,他们便可以用作通信了,但为了安全起见,应该对相互传输的数据进行加密,但如果直接用对方的公钥加密数据,效率是非常低的,而且对有的非对称密钥算法(如DSA)还不可行。所以还是要采用对称密钥。采用对称密钥,则存在密钥交换的问题。利用数字信封,则能解决密钥交换的问题。通信一方产生对称密钥后,用对方密钥交换证书中的公钥,加密该对称密钥后传送给他,对方用其相应的私钥解密后,便安全地获得对称密钥。之后双方便可以用这个对称密钥加密/解密数据。这便是一个用数字信封交换密钥的过程。
7.5.10对证书合法性、有效性的验证
证书的合法性是指证书是否由指定的CA颁发的。证书的有效性是指证书是否还在有效期内,是否被提前回收了。对证书合法性的验证就是验证该证书中的数字签名块是否是由指定的CA做的,这就需要有CA的证书以提供公钥。对证书有效性的验证就是检查当前日期是否在Not Before、Not After之中,另外还应该查询回收列表,以检查该证书是否被提前回收了。对回收列表的查询有两种方式,一种是离线方式,将回收列表编码为文件形式,存在供本地查询,
另一种是在线方式,将回收列表放在网络上以供查询。