5.1安全和算法
- 用互联网传输数据会发生的四个问题:窃听,假冒,篡改,事后否认。
- 四个问题的解决方法:
5.2加密的基础知识
加密:A想向B传输数据,为了防止被窃听,因此把所要保护的数据加密,加密后的数据被称为“密文”。
解密:B收到密文后,解除加密得到原本的数据,这被称为“解密”。
加密的具体操作:在计算机里,所有数据都由0和1的二进制来组成。对计算机来说,数据是有意义的。但对数据进行加密后,计算机就认为它是一串无规则的数字罗列。这个过程中需要用到密钥。加密就是利用密钥对数据进行加工的过程。
5.3哈希函数
- 哈希函数可以想搅拌机一样把不同长度的数据转化成固定长度(要求使用16进制)的无规则数值,这个数值就是哈希值。
- 输入的数据完全不同,其哈希值仍可能一样。这种情况叫“哈希冲突”。输入的数据一样,其哈希值一定一样。输入的数据也许很相似,但哈希值仍会有很大区别。
- 不可能从哈希值反向推算出原本的数据。
- 计算机在储存哈希值时,仍用二进制储存。也就是说,哈希函数存在于计算机内部的。
- 求哈希值的计算相对简单(?)。
解说:
- 哈希函数算法具有代表性的是MD5,SHA-1和SHA-2。其中SHA-2应用较为广泛。
- 使用的算法不同,就算输入的数据相同,得到得哈希值也是不同的。
- 用户在电脑上的密码往往只保存哈希值,用户输入密码时会算出该输入密码的哈希值。再将它与服务器中的哈希值相比对。这样做不会暴露原本的密码。
5.4共享密匙加密
加密数据时方法主要有两种:加密和解密都使用相同密匙的“共享密匙加密”和分别使用不同密匙的“公开密匙加密”。
本节讲述共享密匙加密。
- 共享密匙加密也被称作“对称加密”。
- 我们在把密文交给对方时,密文可能已经被窃取。如果我们把密匙交给对方时,密匙也可能被窃取,这样密码就会泄露。我们为了应对这种情况有两种方法:“密匙交换协议”和“公开密匙加密”。
提示:如果使用共享密匙加密,会因为发送人数的增多而增加,需要的数量便是n*(n-1)/2。
5.5公开密匙加密
公开密匙加密又被称为“非对称加密”。其使用的密匙叫做“公开密匙”,解密用的叫做“私有密匙”。
具体操作:
- 接收方B需要生成公开密匙和私有密匙。
- B将公开密匙传输给发送者A。
- A使用公开密匙进行加密,并将密文传输给B。
- B使用私有密匙解密密文。
注:
- 这里的公开密文只能加密,无法解密,因此即使X窃取了密文和公开密匙,也无法解密密文。
- 当有多人想向B发送数据时,必须提前从网上取得B的公开密匙。
提示:公开密匙加密虽然密匙数量下降,但同样存在有缺点。当接受方B把自己公开密匙交给A时,且窃听者X可能把B的公开密匙替换成自己的的。等到发送方A用X的公开密匙加密发给B时,X会再次窃取,用自己的私有密匙解密。并用B的公有密匙加密错误的信息发送给B,从而进行攻击,这就叫“中间人攻击”。
补充:为了使A判断公开密匙是否来自于B,我们会使用“数字证书”。另外,公开密匙加密比较耗时,不适合持续发送零碎信息,这时候我们就要用“混合加密”。