几个小故事带你通俗理解安全测试

什么是安全?安全的定义是什么?我们什么时候需要安全?就像下图我们平时所用到的锁子,它可以保障物品的安全,这是一种物理的安全。锁子是机械加工制造而成的,它有它的制造原理,也有设计原理。锁子的核心就是锁簧,由几个弹子保证锁子的安全性。下面的gif动图是一个开锁工具的动态演示,知道了锁子的原理之后,就可以轻松的开锁。

 

安全测试 

根据加工精度,珠子的数量决定了最大的钥匙的组合的可能性,互开率就是评价一个锁子安全与否的关键指标。如果说互开率是固定的,比如说10%的互开率,也就是说我只要试10把钥匙,总有两把钥匙是可以开同一把锁的,这个时候锁子是不太安全的。那么大家考虑下,如何做不改变锁子的设计原理的前提下,提高锁子的安全性?

 

在日常的生活中,一把锁子有设计、制造、销售和使用这些环节,从设计和制造工艺已经固定的情况下,最终可以解决的是要么我不安装不安全的锁子,要么就是我安装了还想安全,这时候就是这十分之二的可能性,不要把这个卖给我的邻居,邻居拿到钥匙就可以开到我家的锁。

 

所以答案就是,在实际的销售过程中,厂家会把同样的钥匙、同样的锁芯,卖到不同的地方,比如一把锁卖到陕西、一把锁卖到长春。跨地域之后,由于钥匙是物理钥匙,不可能经过快速的运输,快速找到这把锁。这样就可以保证,在生产制造和设计环节的安全性都没办法提高的情况下,还可以提高产品的安全性。

 

这是一个思路,希望通过这些小的案例给大家拓宽一些思路,我们在讲安全的时候,原理和密码的强度是固定的,如何使它相对安全,或者提高它的安全性?这也是我们在做安全测试

的时候需要去思考的,毕竟每个公司的设计开发能力是有限的,但是做出的产品需要是安全的,就要从多个方面进行考虑。

 

刚才举的锁具的例子,它是一种物理的安全。在计算机领域,安全最多提到的是加密。

 

银行里面的安全,钱是要放到保险柜中用锁子锁起来,但是如果钱是放在我们的手机银行里,更多的是靠我们自己设置的密码以及银行对交易过程的数据加密,保障即使你看到加密的密码之后,你也没有办法去把它破解掉。

 

我们知道当银行卡丢失时,如果有人捡到你的银行卡,在ATM机上只有两次试错的机会,第三次输入错误,银行卡就会被锁定,这也是一种安全机制,它保障了我们使用的安全。

 

计算机里面的安全更多的是靠密码,加密算法以及密码的长度、复杂度这些手段来保障的。我们经常用电脑,作为计算机用户,大家都知道,密码设置的时候比较容易,但是要记住密码就比较难,为了记住密码,通常我们都会设置一些有规律的密码。什么是有规律的密码?123456是一种规律、654321也是一种规律。如何设置一个复杂的密码?既方便自己记住,别人又很难猜到,这个就需要一些技巧。

 

这里再给大家举一个例子,有一部电视剧是张嘉译主演的,他把家里的无线密码改了,孩子的妈妈就没有办法连上无线了,问他密码是什么,他说了一首唐诗,这句首诗里每个字的首字母再加一个符号、数字,这时候密码的复杂度就足够高了,你必须知道这首诗和附加的特殊字符才能猜到这个密码。我们的密码安全首先要便于记忆,再就是要有足够的复杂度,第三个要有足够的长度。再就是我们说的明文密码在计算机里要经过加密,否则就是一张白纸,你设置得再复杂,别人也是一看就明白。

 

就像我们之前听说过的,CSDN的用户密码全部都是明文,导致整个网站的信誉度就会下降,我不确定我在里面写的任何内容是不是都保存的是明文?

 

密码的复杂度有了之后,也经不起现在大数据、云计算、GPU计算以及像MD5字典这种解密工具,密码更多的是一种策略,不能说绝对安全,只能是相对安全,并且有时间限制。

 

另外,别人想要获取密码首先是有获取利益的需求,当密码保护的数据和信息不足以产生很大价值的时候,密码的安全度要求是不高的。


第三个问题就是我们安全性的脆弱点是在哪里?

 安全测试

就像上面给大家放的这个图片,这是一个珠串,这个产品它本身就有一个脆弱点,就是总有一天它会断,但是从哪个珠子断我们都不确定。它可能是最容易摩擦到的地方,也有可能刚拿到手还没用就断了,它有设计的原因,也有使用的原因。所以产品的脆弱点在哪里我们无从得知,但是在做软件的时候,安全是需要我们一点点去分析,建立模型,最终保证这个产品的安全。