每次一有機會跟從事軟體開發的朋友聊天時,我就會問一下他們有關軟體安全的問題。當然,我問的問題很簡單,就是他們的軟體有考慮安全的問題嗎?嗯,其中一種蠻常聽到的回答就是:「有啊,我們的資料在傳輸時有加密。」或者是「沒有耶,我們的資料都沒有做任何的加密。」
噹!這樣的答案聽起來好像很有理,卻是對軟體安全有著極大的誤解。對於軟體安全而言,從需求面可以分成兩大類型,第一類是安全性功能 (Security Feature),像是資料在儲存時要進行加密就是屬於這類需求。另外一類需求我們稱為安全軟體的需求 (Requirements for Secure Software),也是大家比較不熟悉的部份。舉例來說,避免程式受到跨網站腳本攻擊就是屬於安全軟體的需求。
兩者之間的分別其實並不是那麼地明顯,甚至有時候我們也可以把第一類需求歸屬在第二類需求之中。但是簡單來看,安全性功能依舊是屬於產品功能的一部分,所以可視為是用來解決客戶問題的手段。例如,將資料在加密後才加以儲存就可以避免使用者的資料被有心份子所窺探。除了加密之外,像是身分驗證也是很常見的安全性功能。相較於安全性功能,安全軟體的需求解決的是軟體本身的問題,像是如何避免有心份子利用軟體的錯誤取得寶貴的資料,或者是如何確保軟體在遭受攻擊時可以繼續運作。
事實上,軟體安全強調的並不是第一類型的需求,反而是第二種類型。就算你開發的軟體跟安全本身沒有任何關係(例如公司的公告欄網站),依舊有可能因為本身沒有做好安全的防護而導致安全問題的產生。以公司的公告欄網站為例,如果程式存在跨網站腳本的弱點,那麼就有可能讓有心份子修改公告,把自己升職為總經理。也就是因為這樣,所以我們在討論軟體安全時,不管該軟體是不是具有安全性功能,都必須考慮到安全軟體的需求。
這兩種類型的需求往往各自獨立,但是必須特別注意的是,一旦安全性功能出現問題,其所導致的危害往往將更為嚴重。舉例來說,一旦身分驗證系統出現問題,那麼就有可能導致系統內所有資料的外洩。所以對於安全性功能來說,我們通常必須更加小心地確保其沒有安全上的疑慮。除了安全性功能外,一些高價值的功能(如商品交易)也是必須多加小心的地方。
針對安全軟體的需求,通常由安全政策所衍生,而這些政策則來自於公司管理階層的考量、採用的標準、甚至是法規要求。此外,也應該包含對於各式威脅與攻擊手法的防範措施。想要進一步了解此話題的讀者可以參考這篇文章。
沒有留言:
張貼留言