扫一扫
关注微信公众号

软件设计中安全性与易用性的考虑
2009-01-03   

  安全敏感的应用软件的设计要求在易用性和安全性之间是平衡的,如果修改现有的系统设计,提高易用性就可能降低安全性,而增强安全性,就有可能让软件难以使用或者难以理解。在设计一个软件系统时,安全性和易用性两者都不能忽略,这两方面的缺陷都可能导致产品无法使用。   1、安全性和易用性统筹考虑 在软件产品的设计过程中要注意将安全性和易用性统筹考虑: (1)安全和易用的元素不能撒胡椒面,应该把这两个元素合并在一起,贯穿整个设计过程。无论是安全性还是易用性都不能作为附加设计的内容。 (2)设计者要牢记安全性和易用性都是用户需求的一个方面,最后的取舍还是要根据用户的需要,系统的安全状态要和用户头脑中的模型相符合,并且两者都是随时间变化的。 (3)尽量将安全性元素合并到用户现在已经使用的工作流程中,他们已经习惯了这样的工作方式,不容易对安全手段产生厌倦情绪。   2、避免安全性和易用性的冲突 在安全软件产品的设计过程中,安全性和易用性可能会产生冲突:   (1)设计阶段的冲突 1) 不恰当的安全性会损害易用性 让差不多要开发结束的产品变得更加安全是设计者可能会遇到的要求,但是设计者会发现在最后一分钟增加安全功能是多么困难和无效。尽管可以通过代码审查发现一些Bug,但是安全则是整个设计更深的属性,John Viega和Gary Mcgraw 认为“在一个现存系统上捆绑安全是一个糟糕的主意,安全不是一个在任何时间都能增加到系统上去的属性”[2]。如果不是从设计一开始就考虑安全性问题,就可能不得不增加很多配置设置和提示,这种做法不能根本上解决问题,反而在出现问题的时候,容易将过错推给用户。   2) 不适当的易用性会损害安全性 让差不多要开发结束的产品变得更加好用则是设计者可能会遇到的另外一种要求,但是这是同样困难的任务。好的易用性设计强调理解用户需求,在设计过程中溶入某种概念和风格,而不是仅仅玩弄一些表面的特色,比如动画或者界面外表。没有经过慎重考虑的易用性可能会向用户隐藏一些安全相关的决定或者选择松散的缺省设置,另外不容易理解的界面也会增加操作的复杂性和迷惑用户,降低产品的安全性。   3) 集成的交互设计 安全性和易用性的研究者都赞成叠代的开发过程,执行重复的分析、设计和评估周期,而不是最后进行安全性测试或者易用性测试,将用户交互和安全手段的设计同时考虑非常重要,叠代提供了检查安全性和易用性相互影响的机会,如果一直割裂两个方面的设计几乎肯定会带来问题。   (2)使用中的冲突  从目标上讲,安全通常是使用户操作变得困难,而易用性是使操作变得更容易,安全性所引起的操作困难的结果通常是用户不情愿接受的,而易用性所带来的结果一般是用户所欢迎的,当系统设计不够好时,这两者可能发生冲突。 安全性对于用户来说永远是第二位的功能,用户使用计算机肯定不是要使用它的安全功能,用户使用计算机是为了使用资源和进行业务系统管理等,要求用户采用额外的安全步骤可能会打断他的工作流程,最后导致用户关闭掉让他烦恼的安全提示。这样自然造成易用性和安全性之间的冲突。解决的办法是尽量从自然的用户交互中提取安全信息,提取的安全信息越多,安全性对用户正常使用的干扰就越少。   (3) 安全交互设计的原则 研究者曾经提出安全交互设计的10条原则[3]:
(1)完成一个任务最自然的方式也是最安全的; (2)用户能够清楚理解授权过程,明确过程中的操作; (3)用户的交互界面应该能够吸引用户的吸引力; (4)影响安全决定的用户交互界面应该便于检查; (5)在任何时候都应该允许撤消做出的安全授权; (6)用户界面不应该让用户误以为拥有实际上没拥有的权限; (7)用户与授权实体之间的通讯渠道必须是不能被欺骗和不容易瘫痪; (8)确认实体与确认操作在界面上应该与其他实体和操作不同; (9)交互界面应该提供足够的表达能力让用户容易按照自己的目标表达安全决定; (10)在动作生效前应该让用户清楚授权操作的结果。
现在计算机的构件都被标注成可信的,可信不是一个yes 或者 no 的问题,不明确下述问题“可信”这个词是没有任何意义的。这些问题就是:(1)“被谁信任?”(2)“被信任做什么?”(3)“什么条件下不可信?”(4)“应对的安全风险是什么?” Simson Garfinkel 和Gene Spafford给出的定义是:“如果你能够依赖一台计算机和它上面的软件做出你期待的行为,就说它是安全的”[3],用户的期待是基于系统的概念模型,这个概念模型的基本元素是“谁”和做“什么”,对应“角色”和“能力”,每个角色有一系列的“能力”(可以影响用户的可能动作),可以通过有限状态机来模拟所有角色的所有可能动作。 安全性和易用性是贯穿软件开发过程的要求,不仅需要早期考虑,还需要同时兼顾。特别在大型系统的开发过程中,负责这两个方面的开发人员需要很好的沟通和交互。   参考文献 [1] J.H. Saltzer 和 M.D Schroeder, “The Protection of Information in Computer Systems,” Proc. IEEE, vol.63, no.9,1975. [2]J. Viega 和G. McGraw, Building Secure Software, Addison-Wesley, 2002,p.14. [3]S. Garfinkel 和G Spafford, Practical UNIX and Internet Security,2nd ed. O’Relly & Associates, 1996,p.6.

热词搜索:

上一篇:郝军志:电子邮票面临着两大困境
下一篇:Vista 的存储技术揭密 VSS

分享到: 收藏