为什么没有完美的安全
大门上装一把锁,就更安全。装两把,还要更安全。那装十把呢?当然更安全了,可从此每次回家都得转十次钥匙,锁的钱也要花十倍。上一课的原则推到底,也会碰上这样的时刻。安全没有尽头,越想更安全,就越不方便、越花钱。所以真正的问题不是怎样才能完美,而是该在哪里停下。
没有完美
在这个领域里,我们看了各种防御:用加密把内容锁上,用哈希确认内容没被改过,用密码和第二道关证明自己是谁。那么,把这些全加在一起,就完美了吗?
很遗憾,不是。任何一把锁,只要花足够的时间和力气,就仍有被撼动的可能;里面也可能藏着谁都还没发现的缺陷。想把安全推到100的那根长条,不管怎么推,都不会正好碰到100。
把安全再往上推一推。长条会逼近100,却始终碰不到。离完美只会越来越近而已。
推了又推,长条的末端还是碰不到100。这是安全的第一条真相:完美不是一个能到达的地方。
不过,这也不用失望。接受了没有完美这件事,问题反倒变聪明了。不再问怎样才能完美,而是问安全到什么程度才算够,而这个“够”总要付出代价。下面就来看看这代价是什么。
越安全越不方便
明明做得到,却不把长条推到底,原因很简单:代价太大了。密码越长越复杂就越安全,可每次输入都很麻烦,还老是忘。认证多加一道就越安全,可登录一次要过的步骤也多了。
安全往上调一格,方便就往下降一格,成本往上涨一格。三者拴在一根线上,此消彼长。太不方便,有时反而更不安全:有人会把难记的密码写在纸条上贴在显示器上,或者偷偷跳过麻烦的步骤。俗话说,过犹不及。
把安全等级一格一格往上调。调得越高,安全越满,方便越少,成本越高。
每调高一格,三根长条就一起动。一边变好,另一边就变差。这就叫权衡取舍。
天下没有免费变安全的路。安全总要用方便或成本来付账。所以,一味调到最高并不是答案。太低危险,太高就没人能用。那长条该放在哪儿?答案取决于你怎么对待风险。
不是消灭风险,而是管住风险
既然没有完美,风险也不可能降到0。那安全是一场注定输的仗吗?不是。换个想法就行:不去消灭风险,而是管理风险。过马路时风险不是0,可我们左右看看照样过。
风险有多大,要把两样放在一起看:发生的可能性有多大,一旦发生损害有多大。先挡住两样都大的风险,把它压到足够小,剩下的小风险就带着走。这才是安全现实的目标。
从大风险开始,一个一个挡住。风险不会变成0,但能被管到可以接受的小程度。
先挡住大风险,长条一下子缩短了,可始终没缩到0。这没关系,这正是关键。剩下的风险只要足够小,就决定接受它。
对付风险的办法还有别的。可以避开:用不着的信息一开始就不收集,也就不会泄露。可以转移给别人:保险就是这样的办法。在降低、避开、转移、接受之间做选择,就叫风险管理。那么,可以接受的大小对谁都一样吗?
合乎情境的平衡点
可以接受的风险因情境而异。写着今天午饭菜单的便签泄露了,顶多有点难为情,算不上大事,所以用重锁就过头了。反过来,银行金库要是泄露就是大事,所以宁可忍受不便,也要把锁加厚。
要守护的东西有多重,决定了平衡点在哪里。所以决定安全措施时,先问三句:守护什么,防着谁,丢了会有多痛?越珍贵越往安全那边挪,越轻越往方便那边挪。答案不止一个,要看情境。
选一选这两种情境。轻的便签,平衡点往方便那边移;重的银行金库,平衡点往安全那边移。
同一把锁,并不适合两种情境。便签配轻锁,银行金库配厚锁。好的安全不是最强的安全,而是最合乎情境的安全。
而且,这个平衡点不是定一次就完事了。新的攻击会出现,要守护的东西也会变多,风险的大小随之改变,所以要时不时重新衡量,记得及时更新。不去追求完美,而是选择平衡、再重新选择,这就是这一课学到的看安全的眼光。
一路走来
把这一课归纳一下:没有完美的安全。安全调高,方便就降低,成本就上升。所以不去把风险降到0,而是看可能性和损害来管理它。看清守护什么、守护到什么程度,选出平衡点,情况变了就重新选。
这是安全领域的最后一课,也正适合回头看看我们走过的Cogito八个领域。最后,一起把这八条路重新走一遍。
依次点八个领域,回顾整个Cogito:结构、编程、操作系统、算法、网络、数据、人工智能、安全。
八条路都走过了。在结构里看了计算机的骨架,在编程里学会了写指令。看了操作系统怎样协调这一切,在算法里练出了解决问题的本事。通过网络和世界连在一起,用数据来记忆和处理信息。在人工智能里遇见了会自己学习的机器,在安全里学会了怎样平衡地守护这一切。
这段旅程从来不是为了背答案,而是为了培养一种眼光:用直觉看世界,自己把公式立起来。谢谢你一路陪伴走到这里。从现在起,就带着这双眼睛,去走属于你自己的下一段路吧。