一、安全的要素
信息安全的核心問題是要保障數據的合法使用者能夠在任何需要該數據時獲得保密的,沒有被非法更改過的數據。主要有以下幾要素:
機密性
- 保證數據內容不能泄露。
- 用戶的密碼用明文保存,就破壞了機密性。
完整性
- 保證數據內容不被篡改。
- 使用HTTP提交數據時,數據在傳輸過程中被篡改后再發往服務器,就破壞了完整性。
可用性
- 保證數據可被正常訪問和使用。
- 像拒絕服務攻擊(DoS)就是破壞了可用性。
最基本的安全要素就上面三個,下面還有一些其他的。
可審計性
- 記錄對數據產生的操作,用于日后的分析、審查。
不可抵賴性
- 首先要保證數據完整性,然后,在傳輸的數據中必須攜帶用于身份識別的信息,且這部分信息在不同主體間不能發生碰撞。
加密技術的使用
上一篇《Web安全技術(1)-對加密機制的理解》中提到了三類加密算法,可以應用于某些要素的安全保障。如下面的說明:
對稱加密
- 可保障機密性,對數據加密后存儲,可以使沒有密鑰的人員無法獲取數據內容。
非對稱加密
- 可以對數據進行加密解密操作,所以也能像對稱加密一樣保障機密性;
- 因為非對稱加密可以實現數字簽名,所以可以保證數據完整性。另外,由于是使用私鑰簽名,而私鑰只有數據發送方才有,所以如果公鑰可以驗簽成功,則發送方不可抵賴。
摘要加密
摘要算法可保障數據完整性。
- 在某些網站的軟件下載頁面里,有時除了下載地址,旁邊還會有一個MD5碼。這個MD5就是對下載的軟件做的摘要加密。在下載完成后,在本機對下載的軟件做MD5,然后和網站上顯示的MD5做比較,如果相同就表示軟件被成功下載,而且下載過程中軟件內容沒有被篡改。
- 在做系統時,我們也經常會對密碼做摘要加密后再保存,因為摘要加密的一個特性是不可逆,這樣通過數據庫中保存的加密后的密碼不可能還原成用戶的真實密碼。而用戶登錄時,只需將用戶提交的密碼再做摘要加密,然后與數據庫中保存的密碼比較,就能判斷用戶有沒有輸入正確的密碼。
二、風險分析
對于數據可能會遇到什么威脅,一般是拍腦袋想一想,也可以使用模型幫忙,下面是一個叫STRIDE的威脅模型:
如何評估風險?
數據受到威脅就可能造成損失,但損失有大有小,威脅發生的概率也有高有低,我們要結合具體情況來對風險做出判斷。有一個叫DREAD的模型,可以指導我們如何判斷威脅的風險程度。
每一個因素都分高、中、低三個等級,權重值分別為3、2、1。
當有一個威脅時,我們將它在每一個因素中的權重值相加,即可得出風險系數。
假如我們對風險系數范圍的定義如下:
高危:12~15分,中危:8~11分,低危:5~7分。
那如果以使用明文保存密碼為例,風險系數可能像下面這樣計算:
風險 = D(3) + R(1) + E(1) + A(3) + D(1) = 9分,這就是一個中危風險。
后續對威脅的處理,應當根據風險的大小和修復的難易程度做出平衡。
微信訂閱號:
源文地址:http://blog.gopersist.com/2015/04/17/web-security-2/