今天讲的内容就是安全需求分析,所有安全的需求都是源自于业务的发展,随着公司业务发展到一定的层度,安全需求就会慢慢凸显,安全工作者需要做的就是从业务流程当中挖掘出安全需求。举个简单的例子吧:公司外出人员办公越来越多,原先都是通过PC电脑访问OA系统,但是随着移动互联网的发展,为了高效的工作,需要增加移动端的访问,这就是业务需求。这个需求提交到安全评审这边就需要考虑安全对应的需求,移动端访问会导致数据从移动端的泄漏、如果是原生APP,那APP需不需要加固呢?如果是H5方式,H5安全的点有没有考虑到呢?所以安全要做的工作就是根据业务的需求提炼出对应的安全需求。
通常来说安全需求的来源可以分为以下几个:
1. 通用安全技术需求
2. 国际/国家/地区法规要求
3. 行业规范要求
4. 客户最直接的安全需求
5. 竞争力安全需求
这里其实还分为甲方乙方的区别,你开发一个系统自己使用和开发一个系统拿出去卖给别人使用其实会有很大的不同,这就涉及到系统的使用范围和受众群体的差异了。先谈谈基本的安全需求概念吧。
1) 通用安全技术需求。这个字面意思就很好理解了,不管你开发啥系统,都会涉及到的安全需求。有很多的参考标准供大家去作为基础进行分析,nist、x.805、27002、等保、owasp、csa等等都行。这些都是从不同的角度去将安全的方方面面总结出来。归纳出来无非就是:身份鉴别、授权管理、安全审计、防攻击、抗抵赖……..这里我提一个点就是需要将每一个类别做一个分层,分为基线类和增强类。因为你这套通用性技术需求针对的不是一个系统或者产品,而是应用于整个公司,然而公司的系统都是有级别对待。安全的控制是会增加开发的成本,不要造成不必要的浪费。举个用户登入的例子:用户登入模块需要有用户账号和口令,登入失败3次之后要弹出验证码,这是基线安全需求,所有系统都要满足。但是呢,总有一些高级别的系统需要增强性的安全需求,在登入模块增加双因素认证,U盾、短信、指纹等。把所有能进行拆分的通用技术需求都分开,以满足不同等级系统需求,根据系统的级别来进行安全控制,在安全和便利性当中取个平衡。
2) 国际/国家/地区法规要求。每个国家和地区有各自国家的法律法规,只要涉及到有当地业务的肯定要遵循当地的法律要求,在网络信息安全行业可能更多的是关于隐私保护相关的信息,比如这两年欧盟大热的GDPR,国内的中华人民共和国网络安全法、个人信息安全保护规范等。其实除了这些为大家所熟知的法律法规之外,还需要更进一步去深入了解你业务涉及范围内的其他法规。比如美国的《2015年网络安全信息共享法》,美国出口限制法;澳大利亚的《数据泄露通知法》,俄罗斯的《关于信息通信网络使用个人法律要求》等等。安全合规是让你的业务能在该国或者地区能正常发展的重要一环。
3) 行业规范要求。每一个行业都有各自的行业特殊性,由于其业务的独有的特殊性,导致监管部门会根据各自的行业制定相应的规范要求。金融行业的银监会、证监会运营商行业的工信部、政府行业的公安部……,当然还有另外一些国际的行业规范要求,比如支付行业的PCI DSS,规范虽然没有像法律一样具有强制性,但是达成规范的要求是增强产品安全性的另一个渠道。
4) 业务(客户)直接的安全需求。这部分内容我觉得是作为业务(客户)自身有一个对安全性要求有一个比较强的要求,这块内容需要进行重点设计和落实的部分,有可能通用安全技术要求满足不了情况,这种情况安全人员需要和需求提出者进行深入的交流,发掘背后潜在实际需求,比如说关注凌晨三点登入的账号,或者是脱裤后都不能解密的数据,又或者某人在读取了一个数据后接着去访问了别的不该访问的数据……这些需求更多强调的是增强性要求,但安全防护涉及到投资回报的问题,越安全,越费钱。
5) 竞争力安全需求。对于自己开发自己用的系统就不比过分强调这点了,这个更多的是公司于公司,产品于产品之间竞争需求了。举两个简单的例子:1、支付宝和京东金融,我闭着眼睛都觉得支付宝比京东的安全性高,投钱放心程度明显在支付宝我感觉会比京东安全,即便支付宝的利率会比京东低,但是就是可以吸引那么多人去投,这就是公司安全的竞争力。2、当我们在选择一款涉及到敏感个人数据的软硬件产品的时候安全性高的产品会相对加分,比如我个人就认为IOS比安卓相对安全。
安全需求关键是要厘清业务当中的安全控制点,对安全控制点进行详细的梳理和分析,为后面产品设计和开发打下基础,也需要在这个阶段清楚的懂得安全防护适度原则,找到安全投入和产出的平衡点,最大限度的保证业务走在安全的主航道上。本文讲的还是相对宽泛的需求分析要点,比如每一个产品的需求分析都会涉及到威胁建模也没有在这里进行体现,等所有科普性内容讲完了之后再根据具体场景进行威胁建模的分析吧。下周看看能不能抽空谈谈安全设计的内容了。