来自微信公众账号:开点工作室(ID:kaidiancs)
信息加密是计算机网络安全中一项重要的技术,利用密码学的原理和方法对数据传输提供保护的手段。信息加密的一般模型如图1所示:
图1信息加密的一般模型
其中明文是输入的原始信息;密文是明文经过加密变换后的结果;密钥是参与密码变换的参数,包括加密密钥和解密密钥;加密算法是将明文变换为密文的变换函数,相应的变换过程称为加密;解密算法是将密文恢复为明文的变换函数,相应的变换过程称为解密。信息加密的要求是满足:
即用加密算法得到的密文总是能用一定的解密算法恢复出原始的明文来。最理想的加密技术是无论攻击者获取了多少密文,都无法唯一地确定对应的明文,这种情况称为无条件安全或者理论上不可破译。但在实际情况中,只要给予足够的时间和配备足够强大的计算资源,几乎任何密码体制都是可以破译的。因此,人们更加关心的是在一定的时间和计算资源限制下,密码体制是否可以被破译。如果某一密码体制在有限的时间内被可以使用的计算资源破译,则称该密码体制在计算上是不安全的。
密码体制根据加密原理的不同可以分为对称密钥密码体制和非对称密钥密码体制两种类型。
1.对称密钥密码体制
对称密钥密码体制又称单密钥密码体制,是指加密密钥和解密密钥相同的密码体制。对称密钥密码体制的保密性主要取决于对密钥的保密,其加密和解密算法是公开的。在进行加密之前,首先要产生一个密钥,该密钥或者由信息发送方生产,然后通过保密的信道传递给接收方;或者由可信的第三方生成,然后通过保密的信道分别发送给发送方和接收方。要保证对称密钥密码体制的安全性,其加密算法必须足够复杂,同时其密钥必须保密并且有足够大的密钥空间,从而使得攻击者在截获密文和知道加密算法的情况下,仍然无法还原出明文。最有影响的对称密钥密码体制是1977年美国国家标准局颁布的数据加密标准DES,DES的基本思想是:将明文分成若干个组,每个组是64位长的二进制数据,然后对每组64位二进制数据进行加密处理,产生一组64位的密文数据,各组密文数据构成整个的密文。采用64位二进制的密钥,其中有效密钥为56位,8位用于奇偶校验。DES采用的加密算法由初始置换、乘积变换、逆初始置换等步骤组成,具有足够的复杂度,而且56位长的密钥意味着共有256种可能的密钥。但随着计算机性能的不断提高,DES的56位密钥已经不能满足安全性要求,因此出现了使用128位密钥的国际数据加密算法IDEA,可以使密钥空间足够大,更加难以被攻破。
2.非对称密钥密码体制
非对称密钥密码体制又称为双密钥密码体制,其主要特点加密密钥和解密密钥不同,而且难以从一个推出另一个。每次生成密钥时都生成一对不同的密钥,其中一个是加密密钥,是向公众公开的,称之为公钥;另一个是解密密钥,是对公众保密的,称之为私钥。加密算法和解密算法也是公开的。双密钥密码体制产生的主要原因有两个:一是为了解决对称密钥密码体制中的密钥管理和分配问题;二是为了满足对数字签名的需求。每个用户在获得自己的密钥对后,将加密密钥公开给网络中的其他用户,当其他用户需要给某个用户发送数据时,使用该用户公开的加密密钥进行加密,该用户收到密文后,用自己保存的解密密钥进行解密,还原出明文。非对称密钥密码体制的优点是可以公开加密密钥,只需要用户自己对解密密钥进行保密,大大简化了密钥的管理和传输。最著名的非对称密钥密码体制是RSA密码体制。
不管是对称密钥加密体制还是非对称密钥加密体制,加密算法和解密算法都是公开的,信息加密的安全性完全取决于对密钥的安全保护上,而如何为通信中的用户进行密钥分配又是密钥管理中的一个核心问题。密钥的分配又分为对称密钥的分配和非对称密钥的分配。
1.对称密钥分配
假设网络有n个用户,其中的任意两个人要进行加密通信,且加密密钥和解密密钥相同,则一共需要n(n-1)个密钥。如果每两个用户共享一个密钥,则网络通信需要的密钥数为n(n-1)/2。为了管理大量的密钥,并且能安全地传递给通信中的双方,需要在网络中设置一台专门的密钥分配服务器,称之为密钥分配中心KDC。KDC的任务是为每次需要进行加密通信的用户分配一个只使用一次的密钥。网络中需要进行加密通信的用户都要在KDC服务器中进行登记,并且获取一个用户与KDC服务器进行加密通信的密钥,称之为主密钥。KDC进行密钥分配的过程如下所述:
假设网络中有用户A想同用户B进行加密通信,则首先向KDC服务器用明文发送数据,表明想要同B进行加密通信。发送的明文中包含A和B在KDC服务器中所登记的身份。KDC服务器接到A的请求后,利用随机数产生一个供A和B加密通信使用的密钥KAB,将KAB和一个称为“票据”(ticket)的数据段打包并且用A的主密钥加密一起发送给A。票据中包含A和B在KDC中登记的身份和KAB,并且使用B的主密钥进行加密。A在收到KDC发回的数据报文后,将票据转发给B。当B收到A转发来的票据后,使用自己的主密钥进行解密,得到了A和B在KDC中的登记身份,就知道A要同它进行通信,同时也知道了KDC为A和B通信所分配的密钥KAB。这样,A就可以利用KAB与B进行加密通信了。
目前应用最广泛的对称密钥分配协议是由美国麻省理工学院MIT开发的Kerberos,它用于网络中客户端与服务器之间加密通信的密钥分配,其基本原理可以概括为:
Kerberos协议设置了两个服务器,分别是鉴别服务器AS和票据授予服务器TGS,其中鉴别服务器AS具备KDC的功能,保存了各个用户登记的身份和相应的主密钥。票据授予服务器TGS负责向用户发送票据。假设有客户端A要以加密的方式访问服务器B,Kerberos需要鉴别确实是A而不是其他用户冒充A向B请求服务,才会向A和B分配加密使用的密钥。
2.非对称密钥(公钥)的分配
非对称密钥体制(公钥体制)的基本思想是采用两个密钥,一个公钥作为加密密钥,一个私钥作为用户专有的解密密钥,通信双方不需要在网络中传递私钥。但在公钥体制中,如果发送方想要欺骗接收方,可以冒充其他用户身份而发送自己的公钥,那么接收方如何判断接收到的公钥和用户身份是否一致就是一个问题。为了使网络中的所有用户都能够知道其他用户的真实公钥,必须要在网络中设置一个可信任的权威机构,称之为认证中心CA。CA将用户的公钥与其真实身份的标识信息(如IP地址)进行绑定,每一个用户与其公钥的绑定称为证书。CA为每个需要进行安全通信的用户颁发它的证书。CA进行认证的工作原理描述如下:假设用户A想同用户B进行加密通信,A将自己的证书发送给B,证书中包括了A的身份和公钥;B需要确认A证书的真实性,就向证书的颁发者CA发送报文进行求证。CA根据B所发送证书中的公钥确定其拥有者的真实身份(或者是用户A,或者是其他用户),并形成新的证书,利用CA的私钥对新证书加密后传输给B。由于CA的公钥是向用户公开的,则B收到CA发送回来的新证书后,使用CA的公钥进行解密,获得证书中的用户身份,从而对用户A的身份进行确认。认证中心通常是由政府或大企业建立,可以提供收费或免费的认证服务。目前Internet中的电子商务、网上银行、网上证券等业务中密钥分配均采取这种公钥分配的策略,其遵循的标准是ITU-T所制定的X.509协议。以公钥分配技术为基础形成的Internet公钥分配基础设施称为公钥基础结构(PublicKey Infrastructure,PKI)。
更多计算机专业技术文章、笔试面试资料尽在微信公众账号:开点工作室。