附加章二:数据加密
复习
- 数据表示:数据以比特的形式存放在存储介质上,可以被复制、读取
- 网络传输:网络传输中的数据,可能被第三方截获
TL;DR
- 加密把明文变成密文,只有掌握密钥的人才能还原
- 对称加密速度快,但密钥怎样安全分发是难题
- 非对称加密用公钥加密、私钥解密,解决了密钥分发
- 实际系统常把两者结合,各取所长
正文
数据一旦离开你的机器,就踏上了一条不太安全的旅途:它可能被复制、被截获、被偷看。想让它即使被看到也读不懂,就得加密(encryption)。
加密做的事很简单:把能看懂的明文,按一套规则变成看不懂的密文;只有掌握正确密钥的人,才能把它还原。
从凯撒到现代密码
最早的加密朴素得可爱:把每个字母往后挪几位。凯撒密码把 “A” 挪成 “D”,把 “B” 挪成 “E”。挪几位,就是那把钥匙。
这种思路叫替换,问题也很明显:只要字母出现的规律还在,统计一下频率,就有可能把规则猜出来。现代加密则在替换之外大量叠上混淆与扩散,让密文和明文之间的关系统统打乱,使这种“看规律”的办法失去用武之地。
对称加密与它的软肋
对称加密(symmetric encryption)的特点,是加密和解密用同一把钥匙。它速度很快,适合加密大批数据。
但它有一个绕不开的软肋:钥匙怎么交到对方手里? 你和对方相隔千里,总不能把钥匙写在明信片上寄过去——因为盯着这封信的人,很可能把钥匙一起看走。加密再强,钥匙泄露,一切白费。
非对称加密:把钥匙分成两把
于是有了非对称加密(asymmetric encryption):每个人生成一对钥匙——
- 公钥:可以大大方方公开,谁都能拿
- 私钥:只有自己保存,绝不外泄
别人用你的公钥加密,只有你的私钥能解开;你用私钥签名,别人用你的公钥验证。这样,分发不再保密,却依然安全——因为公开的只是公钥,用它推不出私钥。
把公钥想象成一个任何人都能投递的邮筒:谁都能往里塞信,但只有拿着钥匙的你能打开。它解决了对称加密最头疼的钥匙分发问题。
为什么不干脆全用非对称
非对称很优雅,但计算代价高、速度慢,不适合直接加密大量数据。
所以实际系统通常采用混合加密:先用非对称方式,安全地协商出一把临时的对称密钥;之后的数据,就都用这把快速的对称密钥来加密。用非对称解决“怎么安全地约定”,用对称解决“怎么高效地加密”,各取所长。
加密不是万能药
最后提醒一句:加密保护的是“内容不被读懂”,并不自动保证数据没被篡改、没被删除,也不解决“对方到底是不是他自称的人”。这些分别要靠校验、备份和身份认证去补充。安全从来不是单一技术,而是一整套配合。
思考题
为什么公钥可以公开、私钥必须保密?如果私钥泄露,会发生什么?
小结
知识点
- 加密把明文变为密文,密钥是还原的关键
- 对称加密快,但密钥分发困难
- 非对称加密用一对密钥解决分发问题
- 混合加密结合两者,兼顾安全与效率
参考资料
- Wikipedia(zh):密码学:研究保密通信的学科
- Wikipedia(zh):对称密钥加密:加密解密使用同一密钥
- Wikipedia(zh):公开密钥加密:使用公私钥对的加密方式
思考题答案(仅供参考)
因为非对称加密的数学性质保证:从公钥极难反推出私钥。公钥只用于加密或验证,即使人人皆知也不影响安全;而私钥用于解密或签名,一旦泄露,别人就能冒充你解密信息或伪造签名,安全性随之崩溃。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图
设计师 | 南国微雪