导读:传统的对称加密算法遇到了密钥分发管理的难题,的算法,如果密钥在分发、传发泄漏,则整个安全体系则毁于一旦。不对称加密算法则有效的避免了其分发管理密钥的难题。不对称密码学中使用到一对公钥(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是流行的用于创建数字签名的单向散列算法。
同时日常数据交换中很多数据交换并不需要加密,不对称算法开销大,能过完成对数据加密/解密来达到签名的作用也大可不必。从报文和其摘要的单一对应关系,我们可以对摘要进行签名。对摘要进行不对称加密算法的系统开销要远小于对原报文的加密开销。
编辑点评:以上的相关内容就是对网络安全之密码学基础的介绍,望你能有所收获。