安全敏感的應(yīng)用軟件的設(shè)計要求在易用性和安全性之間是平衡的,如果修改現(xiàn)有的系統(tǒng)設(shè)計,提高易用性就可能降低安全性,而增強安全性,就有可能讓軟件難以使用或者難以理解。在設(shè)計一個軟件系統(tǒng)時,安全性和易用性兩者都不能忽略,這兩方面的缺陷都可能導(dǎo)致產(chǎn)品無法使用。
1、安全性和易用性統(tǒng)籌考慮
在軟件產(chǎn)品的設(shè)計過程中要注意將安全性和易用性統(tǒng)籌考慮:
(1)安全和易用的元素不能撒胡椒面,應(yīng)該把這兩個元素合并在一起,貫穿整個設(shè)計過程。無論是安全性還是易用性都不能作為附加設(shè)計的內(nèi)容。
(2)設(shè)計者要牢記安全性和易用性都是用戶需求的一個方面,最后的取舍還是要根據(jù)用戶的需要,系統(tǒng)的安全狀態(tài)要和用戶頭腦中的模型相符合,并且兩者都是隨時間變化的。
(3)盡量將安全性元素合并到用戶現(xiàn)在已經(jīng)使用的工作流程中,他們已經(jīng)習慣了這樣的工作方式,不容易對安全手段產(chǎn)生厭倦情緒。
2、避免安全性和易用性的沖突
在安全軟件產(chǎn)品的設(shè)計過程中,安全性和易用性可能會產(chǎn)生沖突:
(1)設(shè)計階段的沖突
1) 不恰當?shù)陌踩詴p害易用性
讓差不多要開發(fā)結(jié)束的產(chǎn)品變得更加安全是設(shè)計者可能會遇到的要求,但是設(shè)計者會發(fā)現(xiàn)在最后一分鐘增加安全功能是多么困難和無效。盡管可以通過代碼審查發(fā)現(xiàn)一些Bug,但是安全則是整個設(shè)計更深的屬性,John Viega和Gary Mcgraw 認為“在一個現(xiàn)存系統(tǒng)上捆綁安全是一個糟糕的主意,安全不是一個在任何時間都能增加到系統(tǒng)上去的屬性”[2]。如果不是從設(shè)計一開始就考慮安全性問題,就可能不得不增加很多配置設(shè)置和提示,這種做法不能根本上解決問題,反而在出現(xiàn)問題的時候,容易將過錯推給用戶。
2) 不適當?shù)囊子眯詴p害安全性
讓差不多要開發(fā)結(jié)束的產(chǎn)品變得更加好用則是設(shè)計者可能會遇到的另外一種要求,但是這是同樣困難的任務(wù)。好的易用性設(shè)計強調(diào)理解用戶需求,在設(shè)計過程中溶入某種概念和風格,而不是僅僅玩弄一些表面的特色,比如動畫或者界面外表。沒有經(jīng)過慎重考慮的易用性可能會向用戶隱藏一些安全相關(guān)的決定或者選擇松散的缺省設(shè)置,另外不容易理解的界面也會增加操作的復(fù)雜性和迷惑用戶,降低產(chǎn)品的安全性。
3) 集成的交互設(shè)計
安全性和易用性的研究者都贊成疊代的開發(fā)過程,執(zhí)行重復(fù)的分析、設(shè)計和評估周期,而不是最后進行安全性測試或者易用性測試,將用戶交互和安全手段的設(shè)計同時考慮非常重要,疊代提供了檢查安全性和易用性相互影響的機會,如果一直割裂兩個方面的設(shè)計幾乎肯定會帶來問題。
(2)使用中的沖突
從目標上講,安全通常是使用戶操作變得困難,而易用性是使操作變得更容易,安全性所引起的操作困難的結(jié)果通常是用戶不情愿接受的,而易用性所帶來的結(jié)果一般是用戶所歡迎的,當系統(tǒng)設(shè)計不夠好時,這兩者可能發(fā)生沖突。
安全性對于用戶來說永遠是第二位的功能,用戶使用計算機肯定不是要使用它的安全功能,用戶使用計算機是為了使用資源和進行業(yè)務(wù)系統(tǒng)管理等,要求用戶采用額外的安全步驟可能會打斷他的工作流程,最后導(dǎo)致用戶關(guān)閉掉讓他煩惱的安全提示。這樣自然造成易用性和安全性之間的沖突。解決的辦法是盡量從自然的用戶交互中提取安全信息,提取的安全信息越多,安全性對用戶正常使用的干擾就越少。
(3) 安全交互設(shè)計的原則
研究者曾經(jīng)提出安全交互設(shè)計的10條原則[3]:
(1)完成一個任務(wù)最自然的方式也是最安全的;
(2)用戶能夠清楚理解授權(quán)過程,明確過程中的操作;
(3)用戶的交互界面應(yīng)該能夠吸引用戶的吸引力;
(4)影響安全決定的用戶交互界面應(yīng)該便于檢查;
(5)在任何時候都應(yīng)該允許撤消做出的安全授權(quán);
(6)用戶界面不應(yīng)該讓用戶誤以為擁有實際上沒擁有的權(quán)限;
(7)用戶與授權(quán)實體之間的通訊渠道必須是不能被欺騙和不容易癱瘓;
(8)確認實體與確認操作在界面上應(yīng)該與其他實體和操作不同;
(9)交互界面應(yīng)該提供足夠的表達能力讓用戶容易按照自己的目標表達安全決定;
(10)在動作生效前應(yīng)該讓用戶清楚授權(quán)操作的結(jié)果。
現(xiàn)在計算機的構(gòu)件都被標注成可信的,可信不是一個yes 或者 no 的問題,不明確下述問題“可信”這個詞是沒有任何意義的。這些問題就是:(1)“被誰信任?”(2)“被信任做什么?”(3)“什么條件下不可信?”(4)“應(yīng)對的安全風險是什么?”
Simson Garfinkel 和Gene Spafford給出的定義是:“如果你能夠依賴一臺計算機和它上面的軟件做出你期待的行為,就說它是安全的”[3],用戶的期待是基于系統(tǒng)的概念模型,這個概念模型的基本元素是“誰”和做“什么”,對應(yīng)“角色”和“能力”,每個角色有一系列的“能力”(可以影響用戶的可能動作),可以通過有限狀態(tài)機來模擬所有角色的所有可能動作。
安全性和易用性是貫穿軟件開發(fā)過程的要求,不僅需要早期考慮,還需要同時兼顧。特別在大型系統(tǒng)的開發(fā)過程中,負責這兩個方面的開發(fā)人員需要很好的溝通和交互。
參考文獻
[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.