网络安全的简单整理2


上一篇: 网络安全的简单整理1

数字签名

  • 为了证明真实性。 数字签名必须保证以下三点:
    (1) 报文鉴别——接收者能够核实发送者对报文的签名(证明来源);
    (2) 报文的完整性——发送者事后不能抵赖对报文的签名(防否认);
    (3) 不可否认——接收者不能伪造对报文的签名(防伪造)。
  • 现在已有多种实现各种数字签名的方法。但采用公钥算法更容易实现。

基于公钥的数字签名的实现

在这里插入图片描述

  • 因为除 A 外没有别人能具有 A 的私钥,所以除A 外没有别人能产生这个密文。因此 B 相信报文 X是 A 签名发送的。若 A 要抵赖曾发送报文给B,B 可将明文和对应的密文出示给第三者。第三者很容易用 A的公钥去证实 A 确实发送 X给B。反之,若 B将 X 伪造成 X‘,则 B 不能在第三者前出示对应的密文。这样就证明了 B 伪造了报文。
    在这里插入图片描述

鉴别

在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用鉴别 (authentication) 。 报文鉴别使得通信的接收方能够验证所收到的报文(发送者和报文内容、发送时间、序列等)的真伪。使用加密就可达到报文鉴别的目的。但在网络的应用中,许多报文并不需要加密。应当使接收者能用很简单的方法鉴别报文的真伪

鉴别与授权不同

  • 鉴别与授权 (authorization)是不同的概念。授权涉及到的问题是:所进行的过程是否被允许(如是否可以对某文件进行读或写)。

鉴别分类

  • 报文鉴别:即鉴别所收到的报文的确是报文的发送者所发送的,而不是其他人伪造的或篡改的。这就包含了端点鉴别和报文完整性的鉴别。
  • 实体鉴别:仅仅鉴别发送报文的实体。实体可以是一个人,也可以是一个进程(客户或服务器)。这就是端点鉴别。

报文鉴别

许多报文并不需要加密,但却需要数字签名,以便让报文的接收者能够鉴别报文的真伪。然而对很长的报文进行数字签名会使计算机增加很大的负担(需要进行很长时间的运算)。当我们传送不需要加密的报文时,应当使接收者能用很简单的方法鉴别报文的真伪。

散列函数MD5

  1. 附加:把任意长的报文按模 264 计算其余数(64位),追加在报文的后面(长度项)。
  2. 填充:在报文和长度项之间填充 1~512 位,使得填充后的总长度是 512 的整数倍。填充的首位是1,后面都是 0。
    在这里插入图片描述
  3. 分组:把追加和填充后的报文分割为一个个 512位的数据块,每个 512 位的报文数据再分成 4 个128 位的数据块
  4. 计算:将 4 个 128 位的数据块依次送到不同的散列函数进行4轮计算。每一轮又都按 32 位的小数据块进行复杂的运算。一直到最后计算出 MD5 报文摘要代码(128位)。

安全散列算法 SHA

SHA比 MD5 更安全,但计算起来却比 MD5要慢些。

报文鉴别码MAC

MD5 实现的报文鉴别可以防篡改,但不能防伪造,因而不能真正实现报文鉴别。

  • 入侵者创建了一个伪造的报文M,然后计算出其散列 H(M),并把拼接有散列的扩展报文冒充 A 发送给B。
  • B 收到扩展的报文 (M, H(M)) 后, 通过散列函数的运算,计算出收到的报文 MR的散列 H(MR)。
  • 若 H(M) = H(MR),则 B 就会误认为所收到的伪造报文就是 A 发送的。

为防范上述攻击,可以对散列进行一次加密。散列加密后的结果叫做报文鉴别码 MAC(Message Authentication Code)。由于入侵者不掌握密钥 K,所以入侵者无法伪造 A 的报文鉴别码 MAC,因而无法伪造 A 发送的报文。这样就完成了对报文的鉴别。
在这里插入图片描述

实体鉴别

实体鉴别与报文鉴别不同。报文鉴别是对每一个收到的报文都要鉴别报文的发送者。实体鉴别是在系统接入的全部持续时间内对和自己通信的对方实体只需验证一次。

  • 可以使用共享的对称密钥实现实体鉴别。 A 发送给 B 的报文的加密,使用的是对称密钥KAB。B 收到此报文后,用共享对称密钥KAB 进行解密,因而鉴别了实体 A 的身份。 因为该密钥只有 A和 B 知道。
    在这里插入图片描述
  • 入侵者 C 可以从网络上截获 A 发给 B 的报文。 C 并不需要破译这个报文,而是直接把这个截获的、由A加密的报文发送给B,使 B 误认为C 就是A。然后 B 就向伪装是 A的 C 发送应发给 A 的报文。这种攻击被称为重放攻击(replay attack)。C甚至还可以截获 A的 IP 地址,然后把 A的IP地址冒充为自己的 IP 地址(这叫做 IP 欺骗),使 B 更加容易受骗。

不重数鉴别

不重数(nonce)就是一个不重复使用的大随机数,即“一次一数”。由于不重数不能重复使用,所以 C 在进行重放攻击时无法重复使用所截获的不重数。
在这里插入图片描述

  • B 用其私钥对不重数RA 进行签名后发回给A。A用 B的公钥核实签名。如能得出自己原来发送的不重数RA,就核实了和自己通信的对方的确是B。 同样,A 也用自己的私钥对不重数RB 进行签名后发送给B。B用 A 的公钥核实签名,鉴别了 A 的身份。 公钥密码体制虽然不必在互相通信的用户之间秘密地分配共享密钥,但仍有受到攻击的可能。

例如

  • C 冒充是A,发送报文给B,说:“我是A”。
  • B 选择一个不重数RB,发送给A,但被 C 截获了。
  • C 用自己的私钥 SKC 冒充是A的私钥,对RB 加密,并发送给B。
  • B向 A 发送报文,要求对方把解密用的公钥发送过来,但这报文也被 C 截获了。
  • C 把自己的公钥 PKC 冒充是 A 的公钥发送给B。
  • B 用收到的公钥 PKC 对收到的加密的RB 进行解密,其结果当然正确。于是 B 相信通信的对方是A,接着就向 A 发送许多敏感数据,但都被 C 截获了。

中间人攻击

在这里插入图片描述

  • A向 B 发送“我是 A”的报文,并给出了自己的身份。此报文被“中间人” C 截获,C 把此报文原封不动地转发给B。B 选择一个不重数RB 发送给A,但同样被C 截获后也照样转发给A。
  • 中间人 C 用自己的私钥 SKC对RB 加密后发回给B,使 B 误以为是 A 发来的。A 收到RB 后也用自己的私钥 SKA对RB 加密后发回给B,中途被 C 截获并丢弃。B向 A 索取其公钥,此报文被C截获后转发给A。
  • C 把自己的公钥 PKC冒充是 A 的发送B,而 C 也截获到 A 发送给 B 的公钥 PKA
  • B 用收到的公钥 PKC(以为是 A 的)对数据加密发送给A。C 截获后用自己的私钥 SKC 解密,复制一份留下,再用 A 的公钥 PKA 对数据加密后发送给A。
  • A 收到数据后,用自己的私钥 SKA 解密,以为和B进行了保密通信。其实,B发送给A的加密数据已被中间人 C 截获并解密了一份。但 A和 B 却都不知道

猜你喜欢

转载自blog.csdn.net/qq1350975694/article/details/106982637