HOME > 新聞與活動 > 最新消息 
軟體保護 授權管理 方案 全面掌握 軟體安全開發 IAIC

電腦軟體已從過去的由馮紐曼程式架構演進到物件導向設計模型,從為了解決單一應用的工具軟體發展到的複雜應用系統,甚至因網際網路而跨越實體空間距離,過去由於空間距離限制無法完成的工作,藉由網路與軟體系統的介接,可以在瞬間完成,電腦軟體已經漸取代真實環境中的各種文件記錄與工作流程,真實的人物角色與行為,在虛擬的空間內被完全執行,因此,「安全」這個真實環境中所必備的議題也逐漸被重視,軟體安全應被置入軟體的設計中。

我們可以從惡意行為模式和目的各面向來檢視軟體的安全, 這幾個面向包含牽涉行為人的身分、物品或文件、安置空間的保全與機密性。對照到應用軟體設計即為身分識別(Identity)與授權(Authority)、應用程式邏輯與資料的完整性(Integrity)、儲存的機密性(Confidentiality)。

目前大多數的應用程式仍然以帳號和密碼來當成操作行為人的身分依據,帳號和密碼可以透過簡單的社交工程和列舉攻擊而取得,雖然某些應用軟體設計已懂得在帳密錯誤後鎖定帳戶或延遲再次登入的時間,降低破解的機率,但在今天木馬程式、鍵盤側錄程式容易取得環境下,帳號密碼顯然是薄弱的措施。因此在重要的應用軟體系統多以呈遞證書(Credential)取代帳號,證書是一長串加密編碼過後的資料,代表行為人的身分與被授權執行的工作內容與有效期,在行為人登入應用軟體系統時,傳遞給系統進行認證,給予適當的操作權限。

由於不同的操作角色而賦予不同的作業權限,稱為「授權」(Authority),一般的做法會將使用者權限和作業項目的對照表儲存於資料庫當中,但程式設計員習慣於以一共同的使用者名稱(如 sa)對資料庫進行存取,就安全的觀點,這是不當的做法,如果這個資料庫用戶帳號密碼遭攻擊或外洩,權限管理將出漏洞,即使不斷變更帳號密碼,亦難倖免。在人員權限管理亦可以採用證書取代帳號與權限的資料庫,作法其實很簡單,只要對每一個作業項目賦予一個功能名稱,藉由發放用戶證書時,一併將該用戶被授予的作業權限寫入到證書當中,爾後亦可更新、展期、撤銷證書等動作來管理人員的權限。

軟體安全另一個重點則是應用程式檔案本身, 如何維護程式執行邏輯與原始設計一致(Integrity),黑客可以透過軟體除錯工具對程式碼進行修改,達到其犯行目的,這裡面包含病毒攻擊、帳號密碼竊取、資料側錄、更改執行權限,甚至癱瘓系統或服務。應用軟體在系統架構設計時期或是被分發之前,這些保護措施應該被加入其中。我們可以透過程式碼簽章(Code Signing),先驗證其檔案完整性再被載入執行。

有了程式碼的保護措施, 更必須注意靜態資料的保安措施, 確保資料的機密性(Confidentiality)在大型的資料庫都會提供資料編碼保密的功能,但在小型的資料庫、檔案則不提供編碼保密的功能,而軟體設計者也因缺乏加密技術或未被要求資料保安而忽略了資料加密。其實保密資料庫技術與資源,不難在網際網路上找到,亦可利用坊間的保護工具,加速這一部分的工作,這些工具備 Encrypt/Decrypt on the fly 的功能,可以不修改任何一行程式碼,將資料加解密程式碼,以注入的方式加入執行檔案,省去程式設計員研究與撰寫的功夫。

軟體安全開發其實不難,掌握 IAIC(Identity、Authority、Integrity、Confidentiality),就可以掌握軟體安全的基礎面向。 SafeNet Sentinel HASP SRM 實現了完整的保護機制,採用非對稱密鑰演算和 AES 演算技術來建立資訊保密通道,保護證書被安全的存取。更提供完整授權管理工具,不管是發行證書或將證書置於 USB 載具、或者遠端更改、展期、撤銷授權內容等都可輕易完成。最吸引人的是,想加入這些保護措施,完全不用撰寫一行程式碼。

http://www.pronew.com.tw/download/doc/SafeNet%20IAIC_HASP.pdf

資料來源 : 資安人雜誌  No.67   2010. JAN/FEB  p.24 ~ p.25