9.1.2  安全设计原则

9.1.2 安全设计原则

在信息化发展进程中,前人总结出了许多信息系统安全设计原则,是指导开展研发风险管控工作的宝贵经验。在大量的安全设计原则中,一部分经典原则总是被广泛引用。虽然这些原则很早就被总结出来,但仍在发挥作用,尤其是在安全软件中大行其道的今天[26]

1.薄弱环节保护原则

根据木桶原理,信息系统的安全水平是由其最薄弱环节决定的,这些最薄弱的环节往往也是最易受攻击的部分。因此,应对信息系统进行全面的风险分析,识别出最薄弱的环节,并且首先消除这些环节的风险隐患,而不是最容易整改的风险隐患。

2.纵深防御原则

纵深防御的原则是使用多重防御策略来提高系统安全水平,以便在一层防御不够时,另一层防御将会阻止侵害的发生。因此,新建信息系统所采用的安全措施需要与银行总体安全措施结合起来考虑与设计。根据信息系统的重要等级不同,分别在物理层、网络层、应用层及数据层实施各种必要的安全控制措施,建立信息安全纵深防御体系。

3.安全地错误退出

当系统发生错误时,应该能够安全地退出。而且在系统失效期间,也能保证敏感信息的保密性和完整性,即使破坏可用性,也不能让攻击者获取敏感信息。为此,研发人员应该提前想到错误发生时应该避免哪些安全问题。很多系统发生错误时可能表现出不安全的行为,这样攻击者只需要引发一个错误,或者等待错误发生就可以根据系统在错误处理时的不安全行为发起攻击。

4.最小授权原则

在对应用系统的操作人员进行授权设定时,应当采用最小授权原则,只授予操作人员执行业务操作所必需的最少访问权限,并且对于该访问权限只准许使用所需的最少时间。

每个用户和程序在操作时应当使用尽可能少的特权。该原则限制了事故、错误或攻击带来的危害。它还减少了特权程序之间潜在的相互作用,从而使对特权无意的、没必要的或不适当的使用难以发生。该原则还可以引申到程序内部:只有程序中需要那些特权的最小部分才拥有特权。

5.权限分离原则

应使用多个特权条件来限制用户访问某个对象。如果攻击者能够获得一个特权但没有第二个,将不能发起有效地攻击。如果系统主要由一个组件组成,那么使用多种检查措施访问不同组件的想法将无法实现。因此,将系统分离成多个组件且需要多次访问检查将阻止攻击,或有效地避免对整个系统的一次性攻陷。

6.简洁性原则

尽量避免把目前并不需要的功能加到信息系统中来。人机界面尽量设计得易于使用,这样用户就可以按惯例自动地正确使用保护机制,减少错误发生。项目开发过程中,简洁的代码产生的漏洞少,用少量代码实现的系统更可靠。

7.最小共性机制

避免多个主体通过共享机制使用同一资源。例如,互联网上服务应用程序同时允许攻击者和用户获得访问权。敏感信息可能通过这种机制在不同用户之间共享。不同的机制对不同的主体提供灵活的访问控制,防止只有一种机制实现时的可能出现的潜在安全问题。

8.勉强信任原则

研发人员应该认为他们系统所在的环境是不安全的,无论是外部系统、代码、人员等,都应该被时刻关注。当开发一个系统时,设计人员应该预先考虑未知用户输入的所有可能情况。即使用户是已知的,也要怀疑其可能发起社会工程学攻击,也要把他们的威胁加以考虑。没有系统是完全安全的,最小化对其他系统的信任可以增加对自己系统的安全性。

9.完全仲裁原则

当主体请求访问时,系统需要检查每个对象,特别是关系到重大安全的对象,减小错误的授权导致主体权限提升的机会。系统检查主体对象的访问许可仅仅只有一次的话,将被攻击者利用,应该在每次访问时都检查。如果主体的访问控制权限在第一次授权后减少了,若系统没有在第二次访问时检查,就发生了一次访问权限违例。短时间的保存权限信息可以提高系统性能,但是可能产生越权访问的代价。

10.完全检测原则

对用户输入系统的任何数据,都应当进行检查、验证或者过滤,以避免错误的或恶意的数据进入程序中,执行非授权的指令或引发系统出现错误。除了要在进入系统处理之前检查数据外,必要时还应在系统处理中及处理后也要进行数据合法性检查。

11.操作留痕原则

对于系统管理员、业务操作人员在维护系统及处理业务过程中的某些重要操作,应通过日志记录的方式进行留痕,以保证操作过程被客观地保留下来。操作日志应当通过管理及技术的手段加以控制,使得应用系统管理员、业务操作人员不能修改、删除应用信息系统操作日志。

12.单元分隔原则

单元分隔原则是指应当将系统分成尽可能多的独立单元,这样可以将安全事件对系统造成的损害降到最低的程度。单元分隔的粒度要适度,如果对每一个功能都进行分隔,那么系统将很难管理。单元模块设计应该松散耦合,可独立部署,增加重用性。

13.心理可接受程度

对资源的访问不应该因为安全机制的出现而变得更加困难。安全的产品是否易于使用?如果不是,那么用户就会关闭它。安全功能应该对用户很“友好”,从而让用户使用便利,方便用户对系统的理解。

14.保护隐私原则

保护系统隐私信息免受攻击者窃取非常重要。如果一个攻击者攻破一个软件并窃取了客户隐私信息,那么用户会对整个系统失去信心。因此,要尽可能保护任何一个用户放在系统里的个人信息。黑客入侵时,可能通过Web服务器入侵整个用户数据库,也可能劫持其他用户购物会话进程而得到私人信息。因此,要尽量避免各种场合的隐私的泄露和滥用用户隐私[62]

15.自主可控原则

从“棱镜门”到思科网络设备被爆存在后门,使我们越来越清醒地认识到“自主可控”在维护金融稳定和国家经济安全过程中的重要性。中国人民银行、银监会也多次强调商业银行在信息科技工作中要加强“自主可控”。自主可控除了要有自己的核心技术和自主创新能力外,还要在系统设计中尽可能采用国产化基础设施和产品。