`
isiqi
  • 浏览: 16053777 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

遵循Unix哲学 简化系统最安全

阅读更多

遵循Unix哲学 简化系统最安全

作者:Chad Perrin
翻译:PurpleEndurer,2010-04-22第1版
分类:安全
标签:生产率,安全,软件工程,系统设计与实施

  前言

  在其它所有条件都相等的情况下,简单的方案更安全。

  正文

  为给定软件系统写的代码越多,bug出现的可能也越大。对代码行数和bug数量的统计分析显示:代码越多,bug越多。由于许多(即使不是全部)bug可能是可被利用的安全漏洞,因此一个单独的软件系统中的代码数量会对系统的安全产生重大影响。

  为软件系统增加功能,而无视实现这些功能的代码行数,也会增加bug出现的机会。这是因为系统中的不同功能模块之间相互作用,有时会产生出人意思的效应,特别是在这些功能互相之间严重依赖的时候。这种危险会随着功能的增加而增大,因为多个功能可能同时依赖某一功能的行为——而且同时也可能反过来影响该单一功能的行为。这种相互依赖可能会产生预计不到的影响。

  除了严格的技术安全的复杂后果,还有一个问题是对于复杂系统我们是否能了解。系统越复杂,个人对系统各部分可能会互相作用的所有方式也会越难理解。如果对系统各部分之间的这种互动没有完全理解,系统维护人员就不会认识到这些相互作用的安全问题,也因此而无法妥善解决这些问题。


  显然,简化系统是一个重要的安全战略。有许多不同的战术有助于简化系统:

  ▲ 最小化设计(Minimal Design):要抵制向系统添加功能的冲动确实很困难,但抵制的回报的价值会在避免挫折和困难中得到体现。在考虑是否要为系统增加额外的功能时,应考虑这是否有实际需要,或则只是期望列表中可能永远不会真正有用的项目。

  ▲ 模块化(Modularity):许多人期望在单一整体系统中包含所有可能用到的功能,因此在某些情况下,一个单独系统可能有多种用途,这些用途可能涉及到系统的本地执行。如果能够把系统中这些需要在本地执行的部分挑选出来,将有助于保持该特定用途尽可能的简化。基于这个原因,把系统分解成“模块”,从而可以根据用户的需要包含或排除,有助于在不增加复杂性的前提下满足更多用户的需要。

  ▲ 关注点分离(Separation of Concerns):把功能分离到不直接互动的离散部分有助于减少系统的复杂性。这通常称为“关注点分离”。通过增加系统中各部件的独立性,每个部分的管理就会变得更加容易,不用担心系统突发安全问题。

  Unix哲学中有一个基本原则是“尽力将一件事做到最好。”这种想法也是Unix系统中每个工具的设计理念:只做一件事情,并把它做好(do only one thing, and to do it well)。当同时有多个事情需要做时,多个工具可以一起使用,从而达到所需的复杂性,但这种复杂性不会成为系统本身的一个永久性的部分。Unix和类Unix系统在设计时提供了简单的机制,可以在离散的工具之间自动创建特定的临时连接,制作可以灵活地与其他工具协同工作来完成更复杂任务的单用途工具的策略是值得支持和鼓励的。

  结论

  尽管这种保持系统简单的方法可能不是一个针对系统安全问题的良方,但它涵盖了上述所有三个简化系统的要点:最小化设计,模块化和关注点分离。因此,在制作软件工具时遵循Unix哲学“做一件事并做好”的忠告,由此带来的安全效益不可忽视。

http://blogs.techrepublic.com.com/security/?p=3337&tag=leftCol;post-3337

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics