计算机网络学习 - 7| 青训营笔记

72 阅读2分钟
  1. 如何实现机密性

    • 已知:网络是明文的
    • 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
    • 所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息
    • 结论:在没有前置信息的前提下,想在一个不安全的信道上交换出秘密信息是不可能的。
  2. 如何实现完整性

    1. 基本思想:

      • 密码散列函数性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
      • 有明文m,密码散列函数 H
      • 计算 H(m)获得哈希值h
      • 将m和h组合成新信息m+h
      • 接收方拆分m+h,重新计算 H(m)得h',对比h’和h
    1. 但这个方法似乎存在着一些漏洞

      如果攻击者更改了h,重新计算m后,组成新信息,并发送,那么不久无法发现信息被篡改了吗?

      没错如果全是明文的话,这个方法没有任何防止篡改的作用。

      但假设通信双方有着攻击者不知道的秘密信息s,就可以实现信息防止篡改了

      • 有明文m,密码散列函数H,以及一个密钥s
      • 计算H(m +s) 获得哈希值h
      • 将m和h组合成新信息m+h
      • 接收方拆分m+h,重新计算H(m+ s) 得h’,对比h’和h
      • 所以想要实现完整性,通信双方需要先有秘密信息
  3. 如何实现身份验证

    • 签名:用于鉴别身份和防止伪造,由于计算机之间传输的是二进制数据,不具备笔记那样难以模仿的特性,所以诞生了数字签名技术,具有可鉴别和不可伪造性
    • 非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
    • 蟹老板用自己的私钥对信件进行加密,并发送给海绵宝宝
    • 海绵宝宝使用蟹老板的公钥进行解密,获得原文
    • 保证了机密性、完整性和身份验证