怎樣提高加密資料庫的安全性

  資料庫加密越來越常見,但與此同時還是有一些因缺乏加密而造成重要資料洩漏的情況。姑且認為你已經部署了所有的安全措施,並且開發程序中的每一步都經過深思熟慮;開發出的web應用程式也有足夠的能力對抗跨站指令碼攻擊、SQL注入和其他常見的web漏洞;並且熟知所有的安全計劃OWASP條款,也知道對所有的傳輸資料、敏感資料庫、資料庫中的敏感欄位加密。但接下來你會將加密金鑰放在哪裡呢?有沒有使用硬體安全模組HSM?大多數企業都沒有使用HSM,其實為了安全他們應該都要使用的。儲存明文密碼就相當於將鑰匙放在門墊上,完全沒有安全意識。

  Web應用程式框架

  讓我們先來惡補一下常見的Web應用程式框架。在一個典型的資料庫加密Web應用程式中,應用程式會直接將金鑰儲存在伺服器的某個角落。這樣就被置於了逆向工程攻擊之列,並且還會造成一些操作性的安全問題。這就是不使用HSM的後果,所以各位程式猿們趕緊使用HSM吧。

  2cto科普:什麼是HSM

  一個HSM本質上就是一個協同處理器。就計算機架構而言,HSM可能含有馮諾依曼機的所有元件——包括儲存、記憶體以及處理能力。計算機採用二進位制演算法和記憶體貯器後,指令和資料便可以一起存放在存貯器中,並可作同樣處理,這樣,不僅可以使計算機的結構大大簡化,而且為實現運算控制自動化和提高運算速度提供了良好的條件。

  HSM為主機本身提供專用離線加密服務。

  HSM致力於處理加密和保護加密程序,伺服器記憶體不能訪問重要資料,使用者也無法看到明文金鑰,因此可以保證應用程式和加密資料中間存在一個可信任的路徑。這個時候你可能會想到還有可能被物理入侵呢,其實不用擔心,HSM擁有一個防干擾的密封圈,可阻止攻擊者的電子竊聽和無線電監測。

  HSM可以用來防範什麼?

  HSM可以防止攻擊者從一個敏感資料庫中盜取資訊。如果攻擊者獲得了應用伺服器儲存了明文金鑰的訪問特權,密碼可以重新找回。無論密碼有多複雜,哪怕是被編譯、被打包或者被更改,它也能給逆向工程了。從安全工程的角度來看,這不是一種最佳的方式。

  從操作安全的角度看,讓別人看到敏感、加密資料都是不明智的。其中包括終端使用者,還有開發團隊、系統管理員以及資料庫管理員。從系統角度看,你同樣不希望看到敏感資料從產品伺服器傳播到工作伺服器或開發伺服器上。如果你的資料庫含有敏感資料,最好不要讓任何人訪問它。

  HSM是如何實施的?

  因為HSM是由一個應用程式開發團隊部署,它是屬於程式安全領域,而不是基礎設施安全。硬體安全模組能夠被應用程式用於建立一個安全、可靠的通路。應用程式必須使用HSM供應商提供的應用程式程式設計介面API建立專門執行加密的操作。這些API包括常見的加密功能,如對稱演算法、非對稱演算法和解密操作,雜湊訊息身份驗證程式碼,密碼資訊身份驗證程式碼,RSA,數字簽名演算法,Diffie-Hellman金鑰交換,隨機數生成,素數生成以及格式儲存生成。HSM程式程式設計介面可以由特定的供應商提供,比如IBM釋出的常見加密體系結構,或遵循公共標準,如PKCS 11。顯然,有人會需要做一些謹慎的購物來確保適當的功能可用。

  遵從FIPS-140-2標準

  然而HSM不受PCI合規的託管,它們為大多數支付方案使用。當前HSM的管理標準為來自美國國家標準和技術委員會,稱為美國聯邦資訊處理標準縮寫:FIPS-140-2。事實上,若你需要儲存信用卡資料,你非常應該使用HSM。2009年PCI安全需求檢視請點這裡,2012年更新內容可以在這裡檢視。

  當遵守FIPS-140-2標準的HSM被廣泛運用於支付行業中,所有行業資料庫的安全係數都得到了大幅提高。而需要牢記的是你的醫療記錄對網路犯罪而言比你的信用卡更具有價值,所以請保持警惕。

  怎麼開始使用加密?

  幸運的是,HSM認證產品擁有一個“票據交換所”,同時還有很多關於硬體安全模型的討論,包括專為基於網路模組儲存系統及其他定製的設計。然而,本文的目的是為HSM做一個高階的介紹,同時鼓勵使用者去SANS研究所和Stack Exchange一系列問答網站,每一個網站包含不同領域的問題做一些深入的閱讀。