密码学要实现的基本功能
数据加密的基本思想是通过变换信息的表示形式来伪装需要保护的敏感信息,使非授权者不能了解被保护信息的内容。网络安全使用密码学来辅助完成在传递敏感信息的的相关问题,主要包括:
(I)机密性(confidentiality)
仅有发送方和指定的接收方能够理解传输的报文内容。窃听者可以截取到加密了的报文,但不能还原出原来的信息,及不能达到报文内容。
(II)鉴别(authentication)
发送方和接收方都应该能证实通信过程所涉及的另一方, 通信的另一方确实具有他们所声称的身份。即第三者不能冒充跟你通信的对方,能对对方的身份进行鉴别。
(III)报文完整性(message intergrity)
即使发送方和接收方可以互相鉴别对方,但他们还需要确保其通信的内容在传输过程中未被改变。
(IV)不可否认性(non-repudiation)
如果我们收到通信对方的报文后,还要证实报文确实来自所宣称的发送方,发送方也不能在发送报文以后否认自己发送过报文。
加密算法
加密技术根据其运算机制的不同,主要有对称加密算法、非对称加密算法和单向散列算法。其中各有优缺点,他们之间协合合作,共同实现现代网络安全应用。
对称密码算法
对称密码体制是一种传统密码体制,也称为私钥密码体制。在对称加密系统中,加密和解密采用相同的密钥。
(I) 凯撒密码Casesar cipher:
将明文报文中的每个字母用字母表中该字母后的第R个字母来替换,达到加密的目的。
(II) DES,3DES和AES
DES(Data Encryption Standard) 算法是美国政府机关为了保护信息处理中的计算机数据而使用的一种加密方式,是一种常规密码体制的密码算法,目前已广泛使用。该算法输入的是64比特的明文,在64比特密钥的控制下产生64比特的密文;反之输入64比特的密文,输出64比特的明文。64比特 的密钥中含有8个比特的奇偶校验位,所以实际有效密钥长度为56比特。
1997 年RSA数据安全公司发起了一项“DES 挑战赛”的活动,志愿者四次分别用四个月、41天、56个小时和22个小时破解了其用56bit DES算法加密的密文。即DES加密算法在计算机速度提升后的今天被认为是不安全的。
3DES 是DES算法扩展其密钥长度的一种方法,可使加密密钥长度扩展到128比特(112比特有效)或192比特(168比特有效)。其基本原理是将128比特 的密钥分为64比特的两组,对明文多次进行普通的DES加解密操作,从而增强加密强度。
AES(Advanced Encryption Standard)是2001年NIST宣布的DES后继算法。AES处理以128bit数据块为单位的对称密钥加密算法,可以用长为128,192和256位的密钥加密。
NIST估计如果用能在1秒钟内破解56bitDES算法的计算机来破解128位的AES密密钥,要用大约149 亿万年时间。
对称算法最主要的问题是:由于加解密双方都要使用相同的密钥,因此在网络安全中,发送、接收数据之前,必须完成密钥的分发。因而,密钥的分发便成了该加密体系中的最薄弱因而风险最大的环节。各种基本的手段均很难保障安全、高效地完成此项工作。在对称算法中,尽管由于密钥强度增强,跟踪找出规律破获密钥的机会大大减小了,但密钥分发的困难问题几乎无法解决。如,设有n方参与通信,若n方都采用同一个对称密钥,一旦密钥被破解,整个体系就会崩溃。优点是对称加密算法效率高,速度快。对称加密算法用于对数据内容加密,解决上文中提到的机密性功能需求问题。
在应用对称加密算法时,密钥的长度越大,破解难度就越大,相对来说越安全。但同时会降低系统的运行效率。同时计算机的运行速度成线性增长,网格等技术的出现使得现在的对称加密算法越来越受到威胁。对称密钥生存周期很好的解决了这个问题:我们每隔一段时间(比如一小时)更换一个对称密钥,即在第三方破解之前就更换了新的密钥。这样就解决了这个难题。
不对称密码学
传统的对称加密算法遇到了密钥分发管理的难题,最优秀的算法,如果密钥在分发、传发泄漏,则整个安全体系则毁于一旦。不对称加密算法则有效的避免了其分发管理密钥的难题。不对称密码学中使用到一对公钥(public key)和私钥(private key)组合。用公钥加密的密文只能用私钥解密,反之,用私钥加密的密文只能用公钥解密。在操作过程中,我们把公钥向外界发布,让外界都知道,自己保存私钥,只有自己才能知道。如果A要发一份秘密信息给B,则A只需要得到B的公钥,然后用B的公钥加密秘密信息,此加密的信息只有B能用其保密的私钥解密。反之,B也可以用A的公钥加密保密信息给A。信息在传送过程中,即使被第三方截取,也不可能解密其内容。
(I)RSA
RSA(取Ron Rivest,Adi Shamir和Leonard Adleman三创始人字句首字母)几乎已经成为了公开密钥密码体制的代名词。RSA是一种公开密钥加密体系,它的应用原理是:
先由密钥管理中心产生一对公钥 (public-key)和私钥(Private-key),称为密钥对。方法如下:先产生两个足够大的强质数p、q。可得p与q的乘积为 n=p×q。再由p和q算出另一个数z=(p-1)×(q-1),然后再选取一个与z互素的奇数e,称e为公开指数;从这个e值可以找出另一个值d,并能 满足e×d=1 mod (z)条件。由此而得到的两组数(n,e)和(n,d)分别被称为公开密钥和秘密密钥,或简称公钥和私钥。
目前的公钥密码算法都是基于一些复杂的数学难题,例如目前广泛使用的RSA算法就是基于大整数因子分解这一著名的数学难题。公钥密码体系的优点是能适应网络的开放性要求,密钥管理简单,并且可方便地实现数字签名和身份认证等功能,是目前电子商务等技术的核心基础。其缺点是算法复杂,加密数据的速度和效率较低。因此在实际应用中,通常将对称加密算法和非对称加密算法结合使用,利用对称加密算法来进行大容量数据的加密,而采用RSA等非对称加密算法来传递对称加密算法所使用的密钥,通过这种方法可以有效地提高加密的效率并能简化对密钥的管理。
(II) 鉴别与签名
对称密码学解决了数据机密性的功能要求,不对称密码学则相应的解决了签别和不可否认性等功能需求。
在不对称密码学中,用自己公钥加密的数据只有自己才能打开,我们就可以把我们自己的公钥放在网上,通信的对方可以用自己的公钥加密数据,密文只有我们自己才能打开,达到了加密数据而不需要通过一种十分可靠的方式来传递对称密钥的作用。反之,如果我们使用私钥来加密消息,通信的对方用公钥来解密消息,就可以达到鉴别的作用。因为能用公钥解密消息,说明数据一定是我自己加密的,前提是这些加密并不为保护数据内容,只为确认、鉴别我的身份而用。这样我们也可以用对称算法作数字签名 (digital signature),用私钥加密报文,就可以让对方确认我的身份。如果A用其私钥加密了某信息,B用A的公钥钥密后“阅读”A的信息,则A就不能否认其给A发过过信息。
(III)CA (Certification Authrity)
公钥加密体系理论上非常安全,操作过程中有可能会受到中间人攻击(man-in-the-middle attack)。
比如B要发一个保密信息给A,所以第一步A把自己的公钥Ka发给B。在这一过程中,如果窃听者H 截取到其公钥,然后伪装成A,将自己的公钥Kh发给B。B将敏感信息用Kh加密后发给A,此过程中,窃听者H截取密文后用H的私钥解密得到信息内容,然后用A的公钥Ka加密得到密文,自己伪装成B发给A,A用自己的私钥顺利的解开了密文。在此过程中,A与B通讯顺利,也感觉不到H的存在,但A与B的信息却被窃听者窃取。
CA的出现有效的解决了中间人的攻击。CA(certification authrity)把一个特定的实体和公钥绑在一起。我们把信任建立在一个大家都信任的第三方,从信任第三方来达到信任对方的目的。如果我们想发放自己的公钥,则用自己的相关身份信息和自己的公钥到一家权威机构(比如像派出所这样的机构)办一个数据证书。权威机构核实你的身份以后,用其权威机构的私钥来加密你的数据证书。如果你要把你的公钥传送给对方,只需要将自己的数据证书传递给对方,对方用权威机构的公钥解密即可得到你身份的相关信息和公钥。而权威机构的公钥则更加透明,比如可以刊登在报纸上让大家都知道。我们的系统本身也带有一些权威机构的公钥,这些在我们装好系统就已经存在了。
单向散列算法
对称加密算法和非对称加密算法有效的解决了机密性,不可否认性和签别等功能,单向散列算法则有效的解决了完整性的问题。
单向散列算法,又叫HASH算法,用HASH函数对一段数据进行一次运算,得到一段固定长度的报文摘要(message digest),任意两个不同的数据得到两个不同的摘要,或者一个数据内容发生一个bit的变化,生成的摘要都截然同。这样就可以达到确认数据完整性和没有被恶意或者无意识修改的作用。常用的HASH算法有:
(I)MD5
MD5是由 Ron Rivest 设计的可产生一个 128 位的散列值的散列算法。MD5设计经过优化以用于Intel处理器。
(II)SHA-1。
SHA-1是由NSA设计的,并由NIST将其收录到 FIPS 中,作为散列数据的标准。它可产生一个 160 位的散列值。SHA-1是流行的用于创建数字签名的单向散列算法。
同时日常数据交换中很多数据交换并不需要加密,不对称算法开销大,能过完成对数据加密/解密来达到签名的作用也大可不必。从报文和其摘要的单一对应关系,我们可以对摘要进行签名。对摘要进行不对称加密算法的系统开销要远小于对原报文的加密开销。