1. 背景:世界上不存在 100% 安全的系统,总会有漏洞存在
- 应对方式:多层防御
- 使用多层不同的安全机制来阻碍攻击者
2. 密码学 cryptography
- 计算机安全中最常见的防御方式
- 来自 crypto 和 graphy,大致翻译为「秘密写作」
- 加密算法早在计算机出现前就有了
- 加密(encryption):把明文转成秘文
- 解密(decryption):把密文恢复回明文
3. 凯撒加密
- 把信件中的字母,向前移动三个位置
- 是一大类算法「替换加密」中的一种
4. 替换加密
- 原理:把每个字母替换为其他字母
- 缺点:字母出现的频率是一样的。例如:E 是英语中最常见的字母,如果把 E 加密成 X,则 X 出现的频率就会非常高。熟练的密码破译师可以从统计数据中发现规律,进而破译密码。
5. 移位加密
- 举例:列移位加密
- 把明文填入一个表格,然后换个顺序来读取明文,例如从左边开始,从下往上,一次一列,加密后字母的排列不同了,解密的关键是:知道读取方向和网格大小
6. 德国英格玛 Enigma 加密机
- 1900 年,人们用密码学做了加密机器
- 最有名的是 Enigma
- 纳粹在战时使用英格玛加密通讯信息
- 「转子」是加密的关键
7. 数据加密标准
- 随着计算机的出现,加密从硬件转往软件
- 1977 年,IBM 和 NSA 开发了「数据加密标准」
- 到 1999 年,一台 25 完美元的计算机能在两天内把 DES 的所有可能密钥都试一遍,让 DES 算法不再安全
- 因此,2001 年,出现了高级加密标准(AES)
8. 密钥交换
- 出现背景:随着技术的发展,需要某种方法,在公开的互联网上传递密钥给对方,为了防止密钥被黑客获取,出现了解决方案「密钥交换」
- 概念:密钥交换是一种不发送密钥,但依然让两台计算机在密钥上达成共识的算法
- 核心:单项函数:是一种数学操作,很容易算出结果,但是想从结果逆向推算出输入非常困难
- 用颜色来举例 「单向函数」 和 「密钥加密」 的原理
- 比如:把颜色混合在一起很容易,但是想知道 混了什么颜色很难,要试很多种才知道
9. 迪菲-郝尔曼密钥交换
- 单向函数是模幂运算
- 使用模幂运算算出双方共享的密钥
10. 对称加密
- 双方用一样的密钥加密和解密消息
- 举例:凯撒加密、英格玛、AES
11. 非对称加密
- 有两个不同的密钥,一个是公开的,另一个是私有的。人们用公钥加密消息,只有有私钥的人能解密,
- 知道公钥只能加密,但是不能解密,它是不对称的
- 也可以用私钥加密,用公钥解密,这种情况可以用于签名,服务器可以用私钥加密,任何人都可以用服务器的公钥解密
- 举例:RSA,名字来自发明者 Rivest, Shamir, Adleman
12. 现代密码学关键部分