8.1什么是网络安全
1.安全通信具有下列所需要的特性:
机密性。仅有发送方和希望的接收方能够理解传输报文的内容。因为窃听者可以截获报文,这必须要求报文在一定程度上进行加密,是截取的报文无法被截获者所理解。
报文完整性。发送方和希望的接收方希望确保其通信的内容在传输过程中未被改变——或者恶意篡改或者意外活动。
端点鉴别。发送方和接收方都应该能证实通信过程所涉及的另一方,以确信通信的另一方确实具有其所生成的身份。
运行安全性。几乎所有的机构几天都有了于公共因特网连接的网络。这些网络因此潜在地能够被危及安全。攻击者能够试图在网络主机中安放蠕虫,获取公司秘密,勘察内部网络配置并发起DoS攻击。
8.2密码学的原则
1.发送者报文的最初形式被称为明文。发送者使用加密算法加密其明文报文,生成的加密报文被称为密文,该密文对任何入侵者看起来是不可懂的。发送方提供了一个密钥KA,它是一串数字或字符,作为加密算法的输入。加密算法以密钥和明文报文m为输入,生成的密文作为输出。用符号KA(m)表示使用密钥KA加密的明文报文m的密文形式。类似地,接收方将为解密算法提供密钥KB,将密文和接收方的密钥作为输入,输出初始明文。也就是说,如果接收方接收到一个加密的报文KA(m),他可通过计算KB(KA(m)) = m进行解密。在对称密钥系统中,发送方和接收方的密钥是相同并且是秘密的。在公开密钥系统中,使用一对密钥:一个密钥为发送方和接收方两人所知,另一个密钥只有发送方或接收方知道。
2.凯撒密码用于英语文本时,将明文报文中的每个字母用字母表中该字母后第k个字母进行替换。
3.凯撒密码的一种改进方法是单码代替密码,也是使用自字母表中的一个字母替换该字母表中的另一个字母。然而,并非按照规则的模式进行替换,只要每个字母都有一个唯一的替换字母,任一字母都可用另一字母替换,反之亦然。
4.当考虑入侵者破解加密方案的难易程度时,可以根据入侵者所拥有的信息分为三种不同的情况:
唯密文攻击。有些情况下,入侵者只能得到截取的密文,也不了解明文报文的内容。
已知明文攻击。如果入侵者以某种方式确信在密文报文中会出现的信息,就可以破解部分匹配关系。
选择明文攻击。在选择明文攻击中,入侵者能够选择某一明文报文并得到该明文报文对应的密文形式。
5.多码代替密码是对单码代替密码的改进。多码代替密码的基本思想是使用多个单码代替密码,一个单码代替密码用于加密某明文中一个特定位置的字母。因此,在某明文报文中不同位置出现的相同字母可能以不同方式编码。
6.在块密码中,要加密的报文被处理为k比特的块。为了加密一个块,该密码采用了一对一映射,将k比特块的明文映射为k比特块的密文。块密码通常使用函数模拟随机排列表。例如当k = 64时,该函数首先将64比特块划分为8个块,每个块由8比特组成。每个8比特块由一个“8比特到8比特”表处理,这是个可管理的长度。接下来,这8个输出块被重新装配成一个64比特的块。该输出被回馈到64比特的输入,开始了第二次循环。经n此这样的循环后,该函数提供了一个64比特的密文块。
如果使用上述的块密码,会出现一个微妙而重要的问题,即相同铭文块对应的密文块可能是相同的。为了解决这个问题,可以在密文中混合某些随机性,使得相同的明文块产生不同的密文块。令m(i)表示第i个明文块,c(i)表示第i个密文块,并且a⊕b表示两个比特串a和b的异或。将具有密钥S的块密码加密算法表示为KS。其基本思想如下:发送方为第i块生成一个随机的k比特数r(i),并且计算c(i) = KS(m(i)⊕r(i))。接收方收到c(i)和r(i),它能够通过计算m(i) = KS(c(i)⊕r(i))而恢复每个明文块。
引入随机性产生了另一个问题:发送方必须传输一千两倍的比特。为了有效利用该技术,块密码通常使用了一种称为密码块链接(Cipher Block Chaining, CBC)的技术。其基本思想是仅随第一个报文发送一个随机值,然后让发送方和接收方使用计算的编码块代替后继的随机数。集体而言,CBC运行过程如下:
在加密报文之前,发送方生成一个随机的k比特穿,称为初始向量(Initialization Vector, IV)。将该初始向量表示为c(0)。发送方以明文方式将IV发送给接收方。
对第一个块,发送方计算m(1)⊕c(0),即计算第一块明文与IV的异或。然后通过块密码算法运行得到的结果以得到对应的密文块,即c(1) = KS(m(1)⊕c(0))。发送方向接收方发送加密块c(1)。
对于第i个块,发送方根据c(i) = KS(m(i)⊕c(i – 1))生成第i个密文块。
7.在公开密钥密码中,发送方和接收方并未共享一个密钥,而接收方则由两个密钥,一个世界上任何人都可得到的公钥,另一个是只有接收方知道的私钥。使用符号$ K^+_B 和 和和 K^-_B 来分别表示接收方的公钥和私钥。为了与接收方通信,发送方首先取得接收方的公钥,然后用这个公钥和一个众所周知的加密算法,加密他要传递给发送方的报文m;即发送方计算 来分别表示接收方的公钥和私钥。为了与接收方通信,发送方首先取得接收方的公钥,然后用这个公钥和一个众所周知的加密算法,加密他要传递给发送方的报文m;即发送方计算来分别表示接收方的公钥和私钥。为了与接收方通信,发送方首先取得接收方的公钥,然后用这个公钥和一个众所周知的加密算法,加密他要传递给发送方的报文m;即发送方计算 K^+_B (m)。接收方接收到发送方的加密报文后,用其私钥和一个众所周知的解密算法解密发送方的加密报文,即接收方计算 (m)。接收方接收到发送方的加密报文后,用其私钥和一个众所周知的解密算法解密发送方的加密报文,即接收方计算(m)。接收方接收到发送方的加密报文后,用其私钥和一个众所周知的解密算法解密发送方的加密报文,即接收方计算 K^-_B ( (( K^+_B (m))。存在着可以选择公钥和私钥的加密/解密算法和技术,使得 (m))。存在着可以选择公钥和私钥的加密/解密算法和技术,使得(m))。存在着可以选择公钥和私钥的加密/解密算法和技术,使得 K^-_B ( (( K^+_B (m));也就是说,用接收方的公钥 (m));也就是说,用接收方的公钥(m));也就是说,用接收方的公钥 K^+_B 加密报文m,然后再用接收方的私钥解密报文密文形式就能得到最初得到明文m。公钥和私钥加密相互交换同样能够得到结果,即 加密报文m,然后再用接收方的私钥 解密报文密文形式就能得到最初得到明文m。公钥和私钥加密相互交换同样能够得到结果,即加密报文m,然后再用接收方的私钥解密报文密文形式就能得到最初得到明文m。公钥和私钥加密相互交换同样能够得到结果,即 K^-_B ( (( K^+_B $(m)) = $ K^+_B ( (( K^-_B $(m)) = m。
8.RSA算法广泛地使用模n算术运算。RSA由两个互相关联的部分:
公钥和私钥的选择。
解密和解密算法。
为了生成RSA的公钥和私钥,接收方执行如下步骤:
选择两个大素数p和q。该值越大,破解RSA越困难,而执行加密和解密所用的时间也越长。
计算n = pq和z = (p – 1)(q – 1)。
选择小于n的一个数e,且使e和z互素。
求一个数d,使得ed – 1可以被z整除。即给定e,求d,使得ed mod z = 1。
接收方使外界可用的公钥 是一对数(n, e),其私钥是 是一对数(n, d)。
发送方执行的加密和接收方执行的解密过程如下:
假设发送方要给接收方发送一个由整数m表示的比特组合,且m < n。为了进行编码,接受当执行指数运算me,然后计算me被n除的整数余数。换言之,发送方的明文m的加密值c就是:c = me mod n。对于这个密文c的比特模式发送给接收方。
为了对收到的密文报文c解密,接收方计算:m = cd mod n。
9.在实际应用中,RSA通常与对称密钥密码结合起来使用。例如,如果发送方要向接收方发送大量的加密数据,他可以用下述方式做。首先,发送方选择一个用于加密数据本身的密钥,这个密钥称为会话密钥,该会话密钥表示为KS。发送方必须把这个会话密钥告知接收方,因为这是他们在对称密钥密码中所使用的共享对称密钥。发送方可以使用接收方的RSA公钥来加密该会话密钥,即计算c = (KS)e mod n。接收方收到了该RSA加密的会话密钥c后,解密得到会话密钥KS。接收方此时已经知道将要用于加密数据传输的会话密钥了。