前言
事情是这样的,你刚交了个女朋友——小美。你们俩喜欢在上课偷偷传纸条,任务很简单:尽量不被抓到。


Round 1

由于你们频繁交流,班主任干脆把你们调开座位,你中间隔着死党,但你并不在意。

你依旧像往常一样传纸条。突然,死党微微一笑,起身——把你的纸条递给班主任。

你失败了。


Round 2

你意识到:不能再直接传纸条了。

于是你发明了一个办法:

  1. 把纸条放进一个盒子,并上你的锁;
  2. 传给小美,她再加上自己的锁;
  3. 盒子回到你手里,你解开自己的锁;
  4. 再传回她,她解开自己的锁,看到明文纸条。

恭喜你,成功发明了 “双重锁定协议”,看起来非常安全。

然而——
一次传纸条时,死党又微微一笑,把盒子交给了班主任。

WASTED。


Round 3

你开始思考:为什么这次还是被截获?

原因很简单:你无法确认收到的锁到底是不是小美的。

当你解开自己的锁,剩下的可能是死党的锁。他轻轻松松就能解开,获取纸条内容。

解决方案:
在锁上加上独特标记或签名,证明它确实来自对方,而不是死党伪造的。

恭喜你,发明了 “数字签名验证机制”,理论上安全。

但——一次纸条传递后,你依然失败了。


Round 4

原来,死党早就学会了 “密钥替换攻击”
第一次交换锁时,他就伪装成你或小美,截获并解密所有信息,然后重新加密,让你们以为安全。

你开始明白:单枪匹马,是敌不过死党的。

于是你想到了全班同学:

把纸条分成若干部分,每部分用不同同学的公钥加密。
加密后的纸条依次传递,每个同学解密自己负责的部分,再加密传给下一个。
最后,小美用她的私钥解密最后一部分,获得完整消息。

恭喜你,发明了 “洋葱路由(Onion Routing)”,理论上安全。


Round 5

你发送了消息,但再也没收到回应。
原来,小美已经被死党的甜言蜜语诱走了。 任何技术手段,在 社会工程学 面前都是纸老虎。

GAME OVER。
果然,理工男都是直男,怪不得交不到女朋友。