什么是计算机安全
假设你寄出一封信。从邮筒到收信人手里,谁会偷偷拆开看、谁会把内容掉包,甚至这封信是不是有人冒用你的名义写的假信,你都无从知道。网络也一样。消息要经过许多你根本不了解的设备和线路。所以,安全的起点就是:不轻易相信这条路。
从一条信不过的路出发
在网络上发出一条消息,它就离开你的手,经过沿途许多地方:路由器、运营商的设备、别人的服务器都在这条路上,你没法知道它们是不是都安全。
某个地方可能有人偷看内容,悄悄改掉内容,或者在半路把消息截下来,让它根本到不了。攻击的手法不必知道。出发点只有一个:别盲目相信这条路。
沿着从发送方到接收方的路,把风险一个个点开。偷读、篡改、截走,都可能发生在路上。
三种风险在路上都可能发生:偷读、篡改、截走。仔细看,它们各自破坏的东西不一样:被读了,秘密就泄露;被改了,内容就不可信;被截走了,该到的东西就到不了。
要守的东西不止一样。安全领域把它分成三个目标。
要守的三样:机密性、完整性、可用性
安全的目标可以归成三个。第一是机密性:只让指定的人读到内容,被人偷读,机密性就破了。第二是完整性:内容不能未经允许被改动,哪怕差一个字,完整性就破了。
第三是可用性:需要的时候能畅通无阻地使用,服务器被搞瘫或者路被堵死、用不了,可用性就破了。有人故意发来海量请求,把服务器挤到瘫痪,破坏的就是可用性。取这三个英文词的首字母,合称 CIA。
把机密性、完整性、可用性一个个点开。每个目标守的是什么、破了会怎样,都会显示出来。
分开来看,区别就清楚了:机密性是不被读,完整性是不被改,可用性是随时能用。同一条消息,三样也可能各自出问题:没人读过,机密性守住了,可要是这期间内容被改了,完整性就破了。
所以三个目标要分别照顾。不过要注意,这三样只是想守住的东西,还没说怎么守。要守住目标,就得有办法。
一种手段:确认对方是谁
守住目标的办法有很多,最先遇到的是认证。认证就是确认对方真的是他自称的那个人。在陌生的路上,光报名字不够,因为谁都能报别人的名字。
所以要请对方拿出只有本人知道的东西。密码就是最常见的例子,手机收到的验证码、指纹和人脸,也都用来确认本人。拿出对的,就当作本人放行;拿错了,就不让进。
从下面三个里选出只有本人知道的秘密,过这道门。选对了就当作本人放行,随便报的名字或别人的猜测都会被拦下。
拿出只有本人知道的秘密,门就开了。认证就是这样分辨对方是谁。可认证是手段,不是目标。它自己并不保守秘密,而是把不相干的人挡在外面,帮着守住机密性这样的目标。
除了认证,还有很多手段:把内容打乱、让别人读不懂的加密,能看出内容有没有被改的哈希,等等。把目标和手段并排放,就容易分清了。
目标和手段是两个格子
把两者清楚地分开:目标是想守住的东西,机密性、完整性、可用性这三样属于这里;手段是守住目标的方法,认证、加密、哈希属于这里。
两者常被搞混是有原因的:目标和手段总是成对地被提起。加密是手段,但它要守的目标是机密性。把卡片分进目标格和手段格,一眼就看明白了。听到“我们用了加密”,还要接着问:它守的是哪个目标?其他目标又靠什么守?
点每张卡片,把它分进目标格或手段格。机密性、完整性、可用性是要守的,认证和加密是守的方法。
卡片全分好了,一目了然:一格装着要守的目标,另一格装着守的手段。不把两者混在一起,是看懂安全的第一步。
不管听到什么安全话题,先问一句:这是要守的目标,还是守的方法?把手段当成目标,就容易丢了真正的目标。就像设了密码,并不能保证数据不被篡改。
小结
归纳起来是这样:网络是一条信不过的路。所以安全要立下机密性、完整性、可用性 (CIA) 三个目标。这是要守的目标,不是方法。
守住目标的手段另有其物,确认对方是谁的认证就是其中之一。定下要守什么,再选怎么守,这就是安全。
依次点要点回顾一下。(信不过的路 → 目标是机密性、完整性、可用性 → 手段之一是认证 → 分清目标和手段)
现在你知道安全在问什么了:守什么,怎么守。这两个问题是一切安全的骨架。三个目标以后还会反复出现,而认证只是守护它们的众多手段中的第一个。
下一课讲哈希:不直接保存密码,而是把它变成无法还原的指纹。哈希也用来检查内容有没有被改过。接下来的每一课,都可以带着“守什么、怎么守”这两个问题来读。