什么是网络安全
安全通信具有下列所需要的特性:
- 机密性。仅有发送方和希望的接收方能够理解传输报文的内容。因为窃听者可以截获报文,这必须要求报文在一定程度上进行加密,是截取的报文无法被截获者所理解。
- 报文完整性。发送方和希望的接收方希望确保其通信的内容在传输过程中未被改变——或者恶意篡改或者意外活动。
- 端点鉴别。发送方和接收方都应该能证实通信过程所涉及的另一方,以确信通信的另一方确实具有其所生成的身份。
- 运行安全性。几乎所有的机构几天都有了于公共因特网连接的网络。这些网络因此潜在地能够被危及安全。攻击者能够试图在网络主机中安放蠕虫,获取公司秘密,勘察内部网络配置并发起DoS攻击。
密码学的原则
发送者报文的最初形式被称为明文。发送者使用加密算法加密其明文报文,生成的加密报文被称为密文,该密文对任何入侵者看起来是不可懂的。发送方提供了一个密钥KA,它是一串数字或字符,作为加密算法的输入。加密算法以密钥和明文报文m为输入,生成的密文作为输出。用符号KA(m)表示使用密钥KA加密的明文报文m的密文形式。类似地,接收方将为解密算法提供密钥KB,将密文和接收方的密钥作为输入,输出初始明文。也就是说,如果接收方接收到一个加密的报文KA(m),他可通过计算KB(KA(m)) = m进行解密。在对称密钥系统中,发送方和接收方的密钥是相同并且是秘密的。在公开密钥系统中,使用一对密钥:一个密钥为发送方和接收方两人所知,另一个密钥只有发送方或接收方知道。
在实际应用中,RSA通常与对称密钥密码结合起来使用。例如,如果发送方要向接收方发送大量的加密数据,他可以用下述方式做。首先,发送方选择一个用于加密数据本身的密钥,这个密钥称为会话密钥,该会话密钥表示为KS。发送方必须把这个会话密钥告知接收方,因为这是他们在对称密钥密码中所使用的共享对称密钥。发送方可以使用接收方的RSA公钥来加密该会话密钥,即计算c = (KS)e mod n。接收方收到了该RSA加密的会话密钥c后,解密得到会话密钥KS。接收方此时已经知道将要用于加密数据传输的会话密钥了。
报文完整性和数字签名
- 报文完整性是指,接收方为了鉴别收到的报文,需要证实:
- 该报文确实源自希望的发送方。
- 该报文在到达的途中没有被篡改。
- 为了证实上述2点,需要通过散列函数和共享秘密s。如下:
-
发送方生成报文m,用s级联m以生成m + s,并计算散列H(m + s)。H(m + s)被称为报文鉴别码(Message Authentication Code, MAC)。
-
然后发送方将MAC附加到报文m上,生成扩展报文(m, H(m + s)),并将报文发送给接受方。
-
接收方接收到一个扩展报文(m, h),由于知道s,计算出报文鉴别码H(m + s)。如果H(m + s) = h,接受方得到结论:一切正常。
- 数字签名:
使用数字签名的发送方的步骤:发送方让他的初始长报文通过一个散列函数。然后他用自己的私钥对得到的散列进行数字签名。明文形式的初始报文连同已经数字签名的报文摘要一道被发送给接收方。
接收方的步骤:接收方先把发送方的公钥应用于报文获得一个散列结果。然后再把该散列函数应用于明文报文以得到第二个散列结果。若果这两个散列匹配,则接收方可以确信报文的完整性及其发送方。