最近两天因为爆发了一个勒索病毒,安全问题又受到了一波关注。对于总体的 IT 系统的安全性问题,我其实一直是抱着一种悲观的态度,这里我们从开发方和用户方的角度去谈谈。
不被重视的安全问题
首先,作为一名开发人员,系统安全问题的优先级即便不是排在最末,那也是在很后的位置,这在行业内也不是什么秘密!
我们首先关注的是功能问题,因为它是必不可少的。其次我们可能关注美观性,易用性方面的问题,因为它们是很容易看到,感受到或者体验到的,再其次可能是性能问题,当用户或数据越来越多时,这个问题也会凸显,因此开发人员也不得不去解决它们。在这些之后,我们可能才会去关注安全问题,还有其它诸如可维护性问题等等。
当然,可维护性即便有问题,这些欠下的技术债务也由开发人员自己去承担,但安全问题则危及到我们的客户。
业外人士可能会说:“啊?不会吧,对安全问题你们居然这么草率?”
安全问题的抽象与深奥
怎么说好呢?首先,软件的安全问题很抽象。简单讲,软件系统看不见,摸不着,外行根本不能理解漏洞是怎么回事。
如果是一个物理的系统,看到锁太小,或看到门是木头做的,或看到保险柜太薄,你就知道存在安全的隐患。
如果我向你交付了一套系统,你问我安全问题解决了没有,我拍着胸脯大言不惭地说,完全没有问题。那么作为接收方,你是否有能力组织一个安全漏洞的验收程序呢?
要知道,安全问题可不像那些功能问题,美观问题,性能问题那么直观!
软件的安全问题的这种抽象性,再加这些问题常常位于底层位置的事实,使得安全问题通常是很难,很深奥的。
我们都知道,找到系统的漏洞,那常常是黑客的干活!
大部分开发人员都没有深入了解过安全方面的知识,没有这方面的知识储备。
当然,这不是说他们一点都不懂,任何工作都没有做,基本的安全问题还是会注意到。
另一方面,安全的攻防方面常常呈现不对称的情况。黑客们可以在一个点钻得很深,安全威胁可能来自全世界所有的黑产组织者,开发人员那点基本的安全知识储备根本无法应对这种不对称的威胁。
不确定性的困扰
其次,安全问题是不确定性的。安全问题即便存在(这点几乎无需怀疑),也不一定会导致问题。只有没有人攻击,安全缺陷就不会暴露。所以,这也导致大家都抱着侥幸的心理,糊弄过去就算了。而且系统即使出了问题,通常也不是人命关天的事,天不会塌下来。
这点不像桥塌了,或者列车出轨了那样。
由于这种不确定性,用户方面也常常吝啬于往安全方面投钱。花的钱是实在的,收益却是不确定的。更糟糕的是,即便你花了很大的钱,你也不能保证百分之百的安全。
这其实跟保险很类似,只是很多用户更多地选择了冒险!
一切都是钱的问题?
所以这其实就是一个钱的问题。有时安全问题这个锅还真不能让开发人员去背。简单的讲,用户太抠门,不舍得为安全投资。
如果用户舍得花钱,开发方自然也愿意花钱多聘请安全人员为漏洞把关。或者更直接的,用户也可以请安全专家在验收时把关。
如果这些都没有发生,那说明啥了呢?只能说大家都意识到这些问题是存在的,但彼此却心照不宣,也知道各自的困境,于是系统常常就带着缺陷就上线了。
也难怪它的优先级不高了!
前面说了,安全问题很难。可是像火箭这种高科技,聪明的科学家也能让它上天,你软件的安全问题再难能难上天?
所以如果用户真心重视起来了,舍得砸钱,安全专家吃香的话,自然会有源源不断的人才涌入。
天道循环
具有某种讽刺意味的是,这次的漏洞爆发,黑客赤裸裸勒索比特币,这可是再明白不过的“钱的问题”了!
或许这就是某种天道循环吧。天网恢恢,疏而不漏,为安全欠下的债,终归还是要还的。就像电影里说得那样:出来混,迟早是要还的。
从这个角度来看,安全问题爆发,或许能促使用户真正重视起安全问题来。
安全相关股票或许又能带一波行情了。
老子曰:祸兮,福兮?祸兮,福之所倚;福兮,祸之所伏!
当然,由于前面提到的不确定性,想到炸弹并不一定此时此刻就在我的手中爆炸,依然还会有很多用户会选择“抱着炸弹,击鼓传花”!