道路千万条,安全只三条
在程序开发、产品设计的过程中,经常会听到安全方面不知道如何下手的问题。
对于如何把程序设计得更安全这一问题,推荐三条黄金准则:
1、不要自己设计安全算法;
2、不要自己设计安全算法;
3、不要自己设计安全算法;
我们所要纠结的应该局限于办公准入认证用AD还是搭建802.1x、radius等认证服务器,而非自建准入算法;我们所要考虑的是用哪种模式、哪个版本的https协议,而非自建三次、四次握手,如果你还知道sslv3.0、tlsv1.1存在安全问题,GCM模式更安全,那就更好了;我们所要考虑的是用RSA还是SM2、AES还是SM1/SM4,SHA256还是SM3,而非自创加解密算法,你在算法中设计多少次握手也不行。
我们应该做的,就是从一开始头一次就把安全设计的问题考虑好:在实践中,能够把已经有的安全技术、安全产品用好用对,就至少能实现60%的信息安全目标。
自公钥算法问世以来,“就喜欢你看不惯我又干不掉我的样子”成为现实。不用我赘述,就能想象无数能人志士想要攻克公钥算法的样子,这就是它的能力所在,相当于集结了设计者和攻击者对立双方的智慧。
后来的开源软件也是这个思路,虽然看起来爆出来很多cve漏洞,但比没人用过的、自己设计的、漏洞藏着掖着的软件,不知道要安全多少倍。
沿着这个思路,我们在采购、使用商业化软件的时候,究竟是使用标准版的好,还是提很多要求让厂商给定制化的好?我个人倾向于前者,标准版用的人多,遇到的问题就多,填过的坑也多,反观定制化,都是个性需求,遇到悬而未决问题的可能性就会大很多。
这本文一开头提出的问题上,安全架构师通常通过提供默认安全能力、选取适用于业务场景的成熟安全产品、使用当前稳定无漏洞的安全技术,融入到产品设计、开发中去。能做好这一点,架构师功力已经不可谓不深厚了。
版权声明: 本文为 InfoQ 作者【石君】的原创文章。
原文链接:【http://xie.infoq.cn/article/1ba4a52482f532fc5fecd3c22】。文章转载请联系作者。
评论 (2 条评论)