加密解密算法与通讯安全(四)

非对称加密算法

对称加密算法指加密解密用同一密钥,那么非对称加密就是加密解密用不同的密钥。加密算法一次生成两个密钥,一个叫做公钥,一个较为密钥。公钥加密的数据,用密钥解密;密钥加密的数据,用公钥来解密(有些非对称加密算法,只能用密钥加密,公钥解密,或只能用密钥加密,公钥解密)。

非对称加密算法的确神奇,其理论的基础来自于数论。例如RSA算法建立在数论中的“大数分解和素数检测”的理论基础上。而ElGamalECC算法基于的则是数论中的“离散对数问题”。数学中的最后一个未找到应用场景的分支学科——数论,终于在加密学领域,找到了应用场景,这不得不说是个奇迹。

非对称加密算法的加入,使得加密算法得以真正的完整,他有这举足轻重的作用。他很好的解决了对称加密算法的缺陷。

 

通讯模型

客户端要将数据data发送给服务器端,客户端向服务器端发起对话请求,服务器端生成一对密钥——公钥Gkey和私钥Skey。将Gkey发送给客户端,客户端使用Gkey对数据data进行加密,获得密文C,将C发给服务器端,服务器端使用自己的Skey解密,获得数据data,完成后续业务逻辑。



 

从上面的通讯模型中可以看到,在网络中传输的只有密文C、和公钥Gkey。而私钥Skey不会在网络中传输,攻击者只能获取到公钥,无法对解密密文C,也就保证了数据的安全性。详细的分析下通讯中面临的四种威胁:

  • 截获:同样网络中传输的是密文,即时被截获,攻击者没有私钥,也无法解析密文。所以可以很好的防范截获威胁。
  • 中断:对于针对可用性的攻击,由于一般都是基于底层协议的攻击,所以一般很难防范。
  • 篡改:由于数据是密文传输的,攻击者没有私钥,无法解析,更无法伪造了。
  • 伪造:对于数据的伪造,和摘要算法一样,可以防范,但对于伪造的发送方,对称加密算法和摘要算法一样,比较的无力。

截获

中断

篡改

伪造

O

X

O

X

 

和对称加密算法一样,只能对通信中的截获、篡改有防范作用,对其他两个中断、伪造威胁都无法防范。

而由于非对称加密算法,很好的解决了对称加密算法中密钥交换的问题,所以其有着很不错的应用场景,可以说是一种通用的加密模型。

 

算法优缺点

那么非对称加密算法就没有缺点吗?也不是,首先,我们看上面的通讯模型,他比对称加密算法的通讯模型来的复杂,存在着两次请求/响应。此外,非对称加密算法的计算可能会很慢,比对称加密算法来慢得多。

所以,非对称加密算法在解决了对称加密算法的缺陷后,存在着一些性能问题,比较通用的解决办法是将两种加密算法进行结合——先使用非对称加密算法传递临时的对称加密算法的密钥,密钥传递完成后,再使用更快的对称加密算法来进行真正的数据通信。

 

 

典型的非对称加密算法有RSA/ElGamal/ECC算法,除了这两个算法外,还有一个DH算法,其比较的另类,其设计的初衷就是解决对称加密算法中密钥安全交换的问题。其通讯模型如下:

所有客户端生成一堆公钥CGkey和私钥CSkey,将AGkey发给服务器端。服务器端通过AGkey生成服务器端的公钥SGkey和私钥SSkey,并将SGkey发还给客户端。客户端通过CSkeySGkey生成对称加密算法的密钥key,服务器端通过CGkeySSkey生成相同的密钥key。后续客户端和服务器端都是用各自的密钥key来通信。


不得不说,这又是一个多么神奇的算法。但是他的确存在。并且早于其他的非对称加密算法。

 

猜你喜欢

转载自go12345.iteye.com/blog/1859790