前几天听 bugs 说,国内某C2C网站打算这个月开始禁止Firefox用户登录其网站,而说到原因,又是“出于用户安全考虑”,“Firefox无法支持其‘安全控件’”云云。
我没用过这家公司的服务,因此我也不想就这家公司发表什么评论。我觉得很有意思的一件事是,似乎大家都很信任所谓“安全控件”。
那么,什么是“安全”控件呢?简单地说,这类控件是由特定商家发布的,基于ActiveX技术实现的一种Internet Explorer插件。尽管不同的公司会以不同的方式进行实现,但这类插件通常会实现的功能,不外乎以下几种:
- 替代输入框,防止其他程序通过hook的方式得到输入框中的内容。
- 以更直接的方式从键盘读取数据,防止非本机键盘输入数据和其他程序监听键盘输入。
- 确保内存中没有某些应用程序正在运行。
很遗憾,“安全控件”往往并不能理想地达到上述目的。更有甚者,事实上这些控件几乎一定会破坏系统的安全性。
为什么这么说呢?我们人类有历史以来,从正确的假设或前提出发,都有可能会得出错误的结论;那么,从错误的假设出发,能够到达正确结论的可能性有多大呢?可想而知。
那么,回到我们刚才的话题,为什么说基于ActiveX的“安全”控件几乎一定会破坏你的系统安全呢?错误的假设又是什么呢?
首 先,在我们讨论安全系统的时候,人们往往会忽略这类系统中最重要的那个环节——用户。用户之所以是安全系统中最重要,同时也是最薄弱的环节的原因是,尽管 我们能够精确地预计机器的行为,却无法精确的估计人类的行为;我们见到抢劫银行的罪犯用枪指着工作人员或人质,却很少有人用枪指着银行使