計算機安全界曾經有個笑話:“實現計算機系統安全很容易,,把計算機的電源關掉,鎖在保險箱裡,然後把鑰匙扔掉。”實際上,這個笑話一定程度上揭示了計算機的安全性與易用性之間的關系。
一、易用性和安全性之間的關系
在計算機的安全性和易用性設計之間存在權衡,一台不設口令的計算機非常方便使用,但是不安全;但是如果一台計算機每5分鐘要求你做一次身份確認,輸入口令甚至做血樣檢驗,這樣的計算機是安全的,但是不會有人願意使用。一般說來,安全軟件產品的操作要比其他軟件產品的操作困難,因為實現機制復雜了,需要配置的參數也多了。
安全性和易用性在設計上有共同點 :
(1)都需要從軟件的整體考慮;
(2)需要對系統結構、開發團隊和市場份額等方面統籌考慮;
(3)都要在系統設計的開始階段考慮,在系統開發臨近結束時無法臨時增加;但是由於易用性和安全性是不同的技術,所以建立一個既有安全性又有易用性的系統比較昂貴。
(4)易用性方面出現問題可能會妨礙安全性的效果。
目前安全性和易用性之間的接口成為計算機安全界研究的對象,被稱作人機交互和安全性(HCI-SEC)。在2003年ACM人機交互大會召開了HCI-SEC研討會,隨後HCI-SEC的有關問題逐步提了出來。2004年計算機界把易用安全性列為信息安全研究者的“重大挑戰”,有下面兩個問題:
問題1 口令問題。每個人都面臨口令問題,安全的口令都是難猜測的,但是難猜測的口令都是難記憶的。同時口令策略一般要求用戶口令是唯一的並且要及時更新,如果一個人的帳戶比較多,很難想象一個人可以完全憑借記憶牢記十多個不同的口令,並且不斷地分別更新。
問題2 身份確認問題。當認識到傳統的口令字不夠安全後,用戶需要新的身份確認手段。研究表明,人記憶圖像的能力比字符強,因此圖像口令字被作為字符口令字的替代方案,研究還發現,用戶對圖像口令字的選擇與種族和性別高度關聯。生物測量和硬件令牌也屬於用戶身份確認的方法,但是現在還缺乏對這些身份確認手段的統一評價和比較方法。
二、易用安全性的實現途徑
HCI-SEC的研究課題之一就是如何在某些特定的應用系統中實現易用的安全性,主要有三種類型的方法:
(1)構造不需要用戶干預就可以執行相關的安全和私有功能的系統。這種方法的問題是當用戶不了解某些方面的安全問題時,他們的操作可能會無意中減弱到位的安全保護。
(2)開發一種安全和私有相關的隱喻模型,讓用戶自發地正確使用安全和私有軟件。目前的鑰匙和鎖的隱喻模型顯然是不完全和不准確的,但是目前也沒有出現更具有廣泛接受性的其他隱喻模型。
(3)教給用戶有效使用私有和安全工具所需要的知識。但是以什麼形式把這些信息教給用戶,讓用戶少花時間去學習掌握,還是沒有解決好的問題。
很容易想到利用一種基於上述方法混合的方法,但實際上這更困難,因為上述方法的思路和實現根本上就是不同的。
現在有人開始用HCI-SEC的方法對安全系統進行評估,測試結果發現用戶在安全決策理解方面存在障礙,從而導致安全配置失誤遭受危險,用戶往往為了使用方便,而關閉某些安全防護。
Jerome Saltzer 和Michael Schroeder於1975年就在討論易用性是否是安全系統必要的成分,他們提出了信息保護的8條原則[1],最後一條就是對信息保護系統的“心理可接受性”,但是有些安全系統對這些思想不夠重視。此後30年來,HCI技術也有了很大的發展,在技術市場上,開始有人應用HCI設計和評價技術對安全系統進行評價,他們發現最終用戶在理解所面臨的安全設計和決定方面非常困難,所以非常容易出現誤配置的情況,而導致安全風險。很多時候用戶為了工作方便停止或者忽略安全功能,例如取消口令或者共享口令,都會把系統置於高安全風險之下。
很多用戶習慣將系統安全決策的權利交給系統管理員負責,但是當用戶離開自己的工作場所,脫離了所在機構的防火牆保護,在家裡或者在路上使用移動設備的時候,就必須根據自己的知識和經驗做出安全決定,而不能依靠機構的安全管理員了。因此,需要開發把安全決策權放在用戶手中的技術。
1983年,Don Norman指出許多引起數據損失的錯誤是由於糟糕的界面設計,雖然相關的操作需要用戶確認,但是有時候用戶確認只是出於習慣的機械點擊,因此把系統操作動作設計成可見的和可以取消的並不能完全解決問題。
這裡有一個說明問題的例子。在美國PARC研究中心建立無線局域網時,采用了基於PKI的方案,需要給200個用戶X.509證書,使用802.1x傳輸層安全認證協議EAP-TLS進行認證。統計表明許多人覺得PKI不容易理解,技術復雜和不易用。由於PARC中心對於PKI技術熟悉,他們認為有信心成功克服使用困難,但是他們錯了。在無線局域網的第一個版本裡,每個用戶都必須從內部認證中心申請和安裝一個X.509證書,然後配置操作系統提供的802.1x客戶軟件來使用EAP-TLS認證協議。為了提交證書申請,用戶必須決定和提供無線網卡的MAC地址和安裝內部認證中心的CA根證書。在建立系統過程中,技術管理團隊的大量時間花費在管理CA軟件和鑰匙上。利用Microsoft Windows XP提供的GUI802.1x的無線配置軟件,用戶需要總共完成38步才能完成注冊過程,每一步都強迫用戶做出決定或者采取行動。為了幫助用戶完成這個過程,系統管理員編寫了一個詳細的注冊指南,但是用戶很容易脫離這個指南自行其事,最後用戶甚至不知道對計算機做了什麼操作,如果出錯,他們就會不知所措。盡管PKI提供了安全保護,但是降低了用戶配置自己機器的能力。
三、易用安全軟件的設計考慮
安全敏感的應用軟件的設計要求在易用性和安全性之間是平衡的,如果修改現有的系統設計,提高易用性就可能降低安全性,而增強安全性,就有可能讓軟件難以使用或者難以理解。在設計一個軟件系統時,安全性和易用性兩者都不能忽略,這兩方面的缺陷都可能導致產品無法使用。
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)在動作生效前應該讓用戶清楚授權操作的結果。
&