安全敏感的應用軟件的設計要求在易用性和安全性之間是平衡的,如果修改現有的系統設計,提高易用性就可能降低安全性,而增強安全性,就有可能讓軟件難以使用或者難以理解。在設計一個軟件系統時,安全性和易用性兩者都不能忽略,這兩方面的缺陷都可能導致產品無法使用。
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,2
nd ed. O’Relly & Associates, 1996,p.6.