一直以來無論是Web Form應用、Windows Forms應用還是Mobile&Smart Device應用,強密碼保護的認證機制普遍缺失,點對點的非對稱消息加密和數據內容簽名因為缺少了這個可信賴的憑證也總是成為“沙丘上的城堡”,PKI環境中的證書機制也許是解決上述問題一個不錯的選擇。
最新一期的MSDN雜志刊發了用證書保護.Net 2.0應用的文章,文章提綱挈領地將如何使用證書,如何用證書完成SSL,如何對Web Service調用進行保護,如何對代碼、安全策略(.Net Framework和Active Directory)、自動下發機制、數據進行簽名支持等進行了介紹。對於開發人員而言,這些內容應該是非常珍貴的,因為它解決了應用中一個兩難的問題:
◆為了安全和實施簡便,.Net應用常常會選擇集成活動目錄域環境認證(或者是互信域認證)模式,這種情況普遍存在於IT環境相對比較好的企業內部,尤其被用於企業內部應用,企業分支機構(Branch Offices)的員工也通過包裝的SSPI接口或者集成認證方式訪問內部應用。但偶爾還會遇到很多信任域外的用戶訪問,出於安全考慮不能給他們開放域賬號,但又想讓他們訪問企業信息資源的時候有個憑據;
◆應用本身定位於開放的互聯網環境(跨域),采用用戶名/密碼的Forms認證方式,認證後的結果也“偷偷摸摸”地保存在某個調用上下文中(Session、CookIE)。如果進行一些無關痛癢的操作倒也無妨,但如果用於會有“別有用心”人特別惦記的一些操作時,例如:賬戶支付、醫療信息交換等,雖然算不上“裸奔”但也和“就穿著內衣過鬧市”沒什麼區別。這些場景下,無論是法律規定,還是用戶需求,往往都促使應用的設計者考慮一些跨信任域的強身份措施,以及在此基礎上的非對稱密碼處理。
當“跨域”、“安全”、“簡便”合並在一起的時候,好像現有技術手段中能勝任的寥寥無幾,僅從.Net Framework層面看證書機制也許是最易於實施的一種,它本身基於PKI的公鑰體系下,可以為各主要的安全機制提供強密碼保護。而且在SOA大行其道的今天,似乎架構師們更關注與互通(Inter-Communication)和互操作(InterOperation),大家常常談的“互”其實更多的指消息,但往往忽略了如果調用雙方互相都不認識這個“互”似乎也太牽強了,而證書機制恰好也適合這個場景。不僅如此,如果設計人員將安全邊界界定到應用服務部分的話,對外交戶的內容不會僅限於消息,想想看:
◆您的應用不需要更新嗎?如果需要更新的話,下發的、或者客戶端應用調用的Assembly、ActiveX是您意願中的那個版本嗎?
◆變基於規則和硬性邏輯的治理為基於策略的治理是一個趨勢,但是最終發布的這個策略(適於某個應用,或者某組應用,甚至於適於企業發布的各個應用)能忠實地發布到用戶一端,並在目標應用執行中被正確解讀嗎?
◆WS-*協議組中,WS-SEC、XML-Signature之類的似乎給出了很圓滿的應用無關、平台不管、開發技術無所謂的Web Service安全方案,但他充其量只說了結果、賓語,沒有提過程的主語——“誰”。
數據、組件、安全策略、Web Service調用還有其他只要是與邊界外對象交換的東西,如果需要,能用證書的就都給它用上證書好了,不過之前先要生成並分發好這些證書