-
如何实现机密性
- 已知:网络是明文的
- 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
- 所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息
- 结论:在没有前置信息的前提下,想在一个不安全的信道上交换出秘密信息是不可能的。
-
如何实现完整性
-
基本思想:
- 密码散列函数性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
- 有明文m,密码散列函数 H
- 计算 H(m)获得哈希值h
- 将m和h组合成新信息m+h
- 接收方拆分m+h,重新计算 H(m)得h',对比h’和h
-
但这个方法似乎存在着一些漏洞
如果攻击者更改了h,重新计算m后,组成新信息,并发送,那么不久无法发现信息被篡改了吗?
没错如果全是明文的话,这个方法没有任何防止篡改的作用。
但假设通信双方有着攻击者不知道的秘密信息s,就可以实现信息防止篡改了
- 有明文m,密码散列函数H,以及一个密钥s
- 计算H(m +s) 获得哈希值h
- 将m和h组合成新信息m+h
- 接收方拆分m+h,重新计算H(m+ s) 得h’,对比h’和h
- 所以想要实现完整性,通信双方需要先有秘密信息
-
-
如何实现身份验证
- 签名:用于鉴别身份和防止伪造,由于计算机之间传输的是二进制数据,不具备笔记那样难以模仿的特性,所以诞生了数字签名技术,具有可鉴别和不可伪造性
- 非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
- 蟹老板用自己的私钥对信件进行加密,并发送给海绵宝宝
- 海绵宝宝使用蟹老板的公钥进行解密,获得原文
- 保证了机密性、完整性和身份验证