密碼,在安全機制上扮演一個極為重要角色的老朋友,也是大家幾乎天天都會用到的技術。密碼雖然很方便,但是同時也有很多問題存在。其中一個最常被談到的議題就是密碼本身過於簡單,以導致輕易地被惡意人士猜出。另外一個就是如何安全地存放密碼的議題。存放的議題主要發生在兩個地方,一個是使用密碼的人,另一個用來檢查密碼的系統。如果其中一方沒有保管好密碼,那麼選擇再好的密碼都沒有用。有關這些議題,已經有太多相關的資料加以討論,在此我不多贅述。倒是前幾天the New York Times發表了一篇文章,認為密碼應該被全面淘汰,改用Information Card這類較安全的驗證機制。理由很簡單,因為即使你選了再好的密碼,因為目前大多認證機制與流程的不良,所以還是一樣不安全。
基本上,大部分的說法我都能理解與接受。密碼使用上確實存在很多問題,但是其中包含技術性與非技術性的原因。用文章中舉例的Information Card機制,甚至是更安全的雙重因素驗證(Two-Factor Identification),也僅能解決技術性的問題(通常還不是完全解決),對於非技術性的問題可就沒多大的效用了。而且採用了新的機制,通常也會伴隨衍生新的問題,這個就是所謂的二次風險。至於文章中提到的另外一項SSO(Single Sign-On)技術-OpenID,那就更不用說了。因為SSO的Sign-On本身要怎麼做才不會有弱點,還有不同系統之間怎麼安全地傳遞身分,同樣是挑戰之所在。
所以,首先的重點是儘管密碼安全性不高,卻是目前最方便且簡單的機制。所以如果你的系統並沒有很高的安全性需求,用密碼絕對是首選。當然,這時候要搭配的是良好密碼的選擇與使用,以及安全的認證機制設計與實作。後者正是目前大家在談的Application Security的一環。但是如果你的系統有很高的安全性需求,除了採用更安全的技術外,更重要的還是整體的設計與實作。如果沒有正確的設計與實作,再好的技術也將漏洞百出。
不管是甚麼安全機制都應該遵守這些原則,那就是依據需求找出適用的方法(技術),並正確的加以規劃(設計)與佈署(實做)。當然,事後的評估與改進也是必要的。不過,那已經不在今天我討論的範圍了。
如果我們再將問題往前看,我們要解決的是使用者驗證的問題還是如何讓使用者安全地使用網路的問題。或者說,使用者真正關心的是前者還是後者的問題?我相信大多數使用者真正關心的是後者的問題。所以如果要提出一個真正的解決方案,應該是盡量針對後者才是。而後者就需要很不一樣的解決方法。正所謂問的問題不一樣,想到的解答也不一樣。當然,這個論述跟原始的文章並沒有很直接的關連,而是跟我們平常在面對客戶的需求有關。客戶的問題是甚麼,有時候不是大家說了算,問題背後真正的問題,是不是已經被發現了,還是用了正確的技術解決了錯誤的問題而導致徒勞無功。更甚者,我們是在解決技術的問題還是需求的問題,兩者之間的分別可千萬別搞混了。
原文出處:
沒有留言:
張貼留言