2012-07-18 53 views
2

我正在使用帶有LAMP堆棧的Zend Framework。客戶要求保護敏感數據,包括電子郵件。在這個項目中,電子郵件將以兩種方式使用:發送自動消息和發送簡訊。使用Zend存儲數據庫中加密電子郵件的最佳實踐

有沒有人使用過?哪些算法快速,可靠並且可以與可變密鑰一起使用?我應該在哪裏存儲加密密鑰?數據庫表使用什麼引擎?

+2

只需在db存儲應該是足夠的,它不是公開。在db中加密它們可能不會添加任何東西,如果數據庫被盜,那麼他們可以訪問存儲加密密鑰的文件系統。 – 2012-07-18 06:27:11

+0

您可以使用PHP的密碼學特性或數據庫的密碼學特性(如果有的話)來存儲加密數據。但是,如果我們正在討論電子郵件,那麼存在一個很大的問題。除非您要發送電子郵件的人擁有公鑰,否則無論如何您都不能向他們發送加密的電子郵件。只要它擊中導線,它必須是明文。 – GordonM 2012-07-18 07:32:22

+2

@Dagon攻擊者獲得數據訪問權限並不是不尋常,因爲攻擊者無法訪問文件系統(SQL注入),所以我認爲這個想法有一些優點。 – bububaba 2012-07-18 07:46:10

回答

4

好吧,這些是我的2位。

對於需要同時進行加密和解密的數據,我會提出對稱密鑰算法,首先想到的是Blowfish。它既快又安全。

至於變量鍵。通常,對於需要加密和解密的每個條目具有不同的密鑰是毫無意義的。因此,我建議使用單個密鑰,該密鑰在某處配置文件中設置。

如果你確實需要爲每個用戶/記錄有一個鍵,我建議不要把它們保存在數據庫中。將它們保存到磁盤上的平面文件中。

對於表引擎,只要它不是基於內存的,就不要緊。


至於價值 - 我認爲有價值,如果客戶明確要求。即使技術上沒有什麼理由來創建這種加密,這將有助於客戶的安全感。當然,這可能是錯誤的,但確實有助於保持數據的安全性,並讓客戶的睡眠更加健康。因此,如果客戶要求它,去吧!

+0

你無法與許多真實的客戶合作,如果你認爲迎合每一個要求,無光澤的優點是一個好主意。 – 2012-07-18 10:08:55

+2

如果客戶要求,就這樣做,我會推遲一點。作爲專業人士,教育客戶也很重要。當然,如果客戶在瞭解成本/價值/性能後想要它,那麼繼續。關於加密和「敏感數據」的話題,猜猜客戶將要嘗試誰,並在數據被盜和解密時承擔責任?在安全和責任方面站在前面,寫下來是一個好主意。並不保證安全。 – jmbertucci 2012-07-18 10:09:47

+1

@Dagon請忽略冒犯性部分,好嗎?不需要他們。至於jmbertucci,我同意。我從來沒有說過要保證安全,但感謝評論。 – 2012-07-18 10:53:26

1

如果你真的需要這樣做,Janis Peisenieks給出的答案是一個很好的起點。

據我所知,在PHP中沒有安全的存儲密鑰的方式 - 這意味着攻擊者可以對系統進行中等級別的控制,並可以從配置文件中檢索密鑰並使用該密鑰解密數據。

想要知道用戶電子郵件地址的攻擊者可能會有多種方法來檢索該數據 - 如GordonM所寫,如果您的系統向這些用戶發送電子郵件,該電子郵件相對容易攔截,而身體可能會被加密,以「解決」不是。

只是檢查,你會被散列(未加密)密碼(如果您的系統使用這些?)