计算机中的网络安全--笔记(1)

安全通信具有下列所需要的的特性:

  • 机密性(confidentiality)
    希望入侵者无法理解报文内容,所以这必须要求发送方对报文做加密,接收方对数据做解谜
  • 报文完整性(message integrity)
    报文不能在传输的途中被恶意改动或者意外变动。
  • 端点鉴别(end-point authentication)
    明确身份,不允许冒充。
  • 运行安全性(operational security)

词语解释:
明文:报文的最初形式 m
密文:经过加密算法加密的明文 KA(m)
加密密钥:KA
加密过程:KA(m)
解谜密钥:KB
解谜过程:KB(KA(m))=m

两种系统:

  • 对称密钥系统(symmetric key system)
  • 公开密钥系统(public key system)

公开密钥加密

K+:公钥
K-:私钥
加密:K+(m),其中K+的含义包括一个用于加密的算法和一个公开密钥
解密:K-(K+(m)),这里的K+同上:算法+钥匙

RSA

经典公钥加密算法
其过程:

1. 大素数p和q
2. 计算n=pq,z=(p-1)(q-1)
3. 选择e,e和z互素
4. 求一个d,使(ed)mod z =1
5. 得到:
K+:(n,e) 公钥
K-:(n,d)  私钥
加密报文:c=(m^e)mod ns
解密报文:m=(c^d)mod n

e=5,n=35,加密:

字母 m:数字表示 m^e c=m^e mod n
l 12 248832 17
o 15 759375 15
v 22 5153632 22
e 5 3125 10

d=29,n=35,解密:

密文 c^d m=c^d mod n 明文
17 481968572106750915091........ 12 l
15 12783.... 15 o
22 85164... 22 v
10 10000.... 5 e

报文完整性

报文完整性确保了报文在发送途中没有被篡改,这涉及了几个概念:密码散列函数,数字签名

密码散列函数

通常用H(x)来表示,它的特性之一:

  • 找到任意两个不同的报文x和y使H(x)=H(y),在计算上是不可能的
    如果说发送报文是(m,H(m)),入侵方就不可能用其他报文替换该受保护的报文
  • 接收方视角:收到报文(m,k),验证H(m)==k?,相同则证明没有被篡改。

作用:(m,H(m))可以保证发送报文不被篡改。
常见的密码散列函数:MD5,SHA-1

数字签名

上面如果单纯用密码散列函数会引发这样一个问题:
入侵者虽然不能篡改报文,但是可以整体替换整个报文发送(m',H(m')),这样仍然会使通信不安全,因此这种方式只保证了报文完整性,而不能端点鉴别。下面的数字签名解决了这个问题

K-(H(m)) ->实际上就是用发送方私钥加密的密码散列函数
发送方可发送(m,K-(H(m)))
接收方视角:
K+(k)==H(m)? 相同则证明没有被篡改,且因为是用发送方的公钥来解密,所以可以证明对方就是发送方。
那么引出下一个问题:如何可靠的获取发送方的公钥,如果这个不能保证,数字签名依然是不安全的。

证书

公钥证书CA
Bob从CA获取到的证书:CA-(B,KB+)
其中CA-是CA的私钥,B是Bob的实体信息,KB+是bob的公钥
接收方用CA+解密CA-(B,KB+),即可获得KB+

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容