信任和安全的话题过于庞大,涉及很多数学知识,直接涉及 "正事" 反而不利于理解问题的本质,因此需要先讲一个前置作为 part 1。
part 1 主要描述物理世界的信任和安全,千万不要觉得数字世界是脱离物理世界的另一天堂,它只是效率高了,让物理世界被认为不可能的事变得可能,同时由于不可能的事变得可能了,它带来的问题也要一并解决。
我用棘轮装置设计了一个物理世界的非对称加密装置,实现类似 rsa 的效果:
- 公钥加密:任何人都可以放东西进去。
- 私钥解密:只有有钥匙的人才能把物品取出来。
- 私钥加密,公钥解密:持有钥匙的人把物品放入,任何取出物品的人可以确定这个物品是特定持有钥匙的人放入的,这机制可做签名。
从网上找了一个可转向棘轮原理图:
下面是一个设计(并非唯一,但细致):
还可以抽象出一个更简单的实现方式:
箱主钥匙旋至 180°,联动装置促使箱口内凹,初始状态为 1,分发箱子给别人,别人通过弹簧片可将物品推入箱内却无法取出,只有箱主插入钥匙再旋 180° 到状态 2,箱口外凸,方可以取出物品。
当箱子位于状态 2,箱主可将物品推入箱内,之后再旋转钥匙 180° 至转态 1,将箱子分发给接收者,接收者方可取出物品并确认物品只能是箱主推入。
总结一下,箱子处在状态 1,任何人都可存入物品,只有箱主可取出,箱子处在状态 2,任何人都可取出物品,此物品一定由箱主推入。
这样子给小孩子讲非对称操作应该可行。
我:你在一个信息几乎透明可被任何人截获的环境下和不能对方的人通信,要怎样?
孩子:要把信息加密。
我:如何加密,密码传给遥远的对方吗?如果密码被经理截获了怎么办?
孩子:...
我:使用上述装置,给对方一个瓶子,让对方把密码塞进去,只有我有钥匙能打开瓶子获得密码,就不怕被截获了。
孩子:既然都能塞进密码,如果有多个塞入,我打开瓶子后,怎么确定哪个是特定对方塞入的。
我:瓶子里只能有一个密码。
孩子:如果你希望获得 A 发来的密码,结果坏人 B 截获了瓶子,塞入了自己的密码发回来了怎么办?
我:A 从权威机构那里获得一种特殊的更小的小瓶子,并且拥有小瓶子的钥匙,A 用钥匙打开小瓶子,密码装进小瓶子里,再把小瓶子装进大瓶子里,就好了。
孩子: 坏人没有这种小瓶子吗?
我:是的,坏人没有。所以坏人就算抢了一个小瓶子,也没有钥匙打不开它,就放不进密码。
...
我们从没见过类似的装置实现安全认知需求,因为在物理世界,我们有更好更方便的。
任何人都可以放钱到存钱罐,只有存钱罐的主人可以用钥匙打开它拿出钱;只有管理员可以往自动售货机里加物品,但所有人只要投钱就能取出;带玻璃窗的公示栏每个人都可以看,但只有科长有权限打开玻璃门张贴新告示;印章和签名也能从细微之处认证每一个人或机构。
在线下物理世界,我们会配合使用锁,钥匙,玻璃窗,印章,签名,严格的法律等手段满足非对称安全需求,因为它们的操作时间处在同一个数量级,然而在线上世界,操作时延的差异被放大,使用不同的方式自然会引入木桶短板效应拖慢整个系统,固然需要一个统一的非对称算法,也就是我设计的上述装置在物理世界的描述,大概就是 rsa,ecc 这类。
此外,物理世界本就是 "零信任" 的,然而互联网最初却建立在普遍信任的基础上,这导致原则上基于 ip 地址的互联互通,包括攻击等恶意流量在内的所有流量在互联互通的原则上真的就是互联互通,恶意流量从物理层到应用无需付出太大代价就能在互联网注入恶意,这也是互联网安全的核心问题。
一个不那么技术但却典型的例子是任何人都可针对任何人攻击。谩骂,网络暴力无处不在,你甚至不知道骂你的人在哪里(显示 ip 地址本身争议很大),任何人都不需要对说过的话负责,互联网事实上是一个准匿名世界。然而实名制,防火墙等措施在另一方面又违背的网络中立原则,左右都是错。
物理世界的不与陌生人说话的零信任原则在互联网世界其实并不适用,它和互联网 ip 地址互联互通相违背,互联网架构让零信任的实施过程非常不便。
总之,信任和安全的话题非常大。从技术上讲,目前的互联网安全都属于案例,案例终究还是案例,并不会改变互联网根基,这些案例,以及其涉及到的算法,注入互联网的复杂性,我们可以从过往的 pki,ipsec,ssl/tls 等术语从可见一斑。很多人争论,互联网安全永远是最后贴上去的 patch,从来不是内置的,从这个视角看,物理世界也一样,出了事再说,规则和法律在不断完善,而不是被设计好。
浙江温州皮鞋湿,下雨进水不会胖。