2015-05-29 75 views
1

我想在我的一個Web應用程序中處理一些機密數據。以便開發人員或數據庫管理員無法讀取數據。在Web應用程序中處理機密數據

通過實施一些加密技術,我們可以很容易地從數據庫管理員隱藏數據。但開發人員仍然可以看到數據,因爲他只創建解密技術。我只想讓最終用戶看到他的數據。

我不能使用一些算法如PBKDF2或數據庫端加密方法加密數據像TDE & EKM因爲仍然需要將加密密鑰保存在某處。如果我保留在服務器端或db中,開發人員可以訪問和解密數據。如果我將它保留在客戶端,用戶將無法從單獨的機器訪問信息。

那麼如何處理這種情況呢?提前致謝。

+1

如果您在應用程序層(例如Web服務器/服務)加密/解密數據敏感數據,則只需確保DBA和開發人員無權訪問密鑰。如果沒有密鑰,知道算法或訪問加密數據的用處不大。不要在客戶端存儲密鑰;使用HTTPS加密運動中的數據。 –

+0

處理鑰匙是我在這裏面臨的唯一問題。我無法將它保存在服務器端/ DB中,我不希望用戶始終記住他的密鑰並輸入它來查看他的數據。由於它包含用戶忘記/丟失密鑰並永久丟失數據的風險。 – Rameez

回答

2

您正在朝着Zero Knowledge Web Applications的方向行進,例如由SpiderOak執行(另請參閱crypton)。這些應用程序通常通過使用類似PBKDF2的用戶密碼來獲得密鑰並在客戶端執行加密/解密來工作。但是,要使其真正成爲零知識並滿足可用性要求,還需要克服很多複雜性。人們可以在此寫一篇文章,但是我建議你先閱讀鏈接的參考文獻。如果您有任何問題,請告訴我。

簡而言之,您希望系統成爲「更多零知識」,在不犧牲可用性的情況下實現就越困難(一個例子就是克服Javascript Cryptography Considered Harmful中的要點)。但是,爲了使其足夠難以作弊而不會過多地影響可用性,您可以進行各種權衡。

+0

這看起來不錯,我希望我能從你的答案中發展出一些東西。感謝您的領導 – Rameez

+0

我仍然面臨的一個挑戰是如果用戶忘記密碼,我們無法解密數據,因爲密鑰來自他的密碼。那一次他可能會丟失他的全部數據。可能是我可以給這個用戶一個警告?但是我仍然在尋找有什麼辦法來處理這種情況 – Rameez

+0

是的,但有一些方法可以將密碼恢復構建到系統中。 AlephCloud(不知道它們是否仍然存在)正在構建一個系統,以便法定人數能夠使用閾值密碼術爲忘記密碼的個人進行密碼恢復或數據恢復。這可以確保任何數量的內部人員都不會超過某個預定的門檻值。對於Google來說,我記得幾年前有關於它的新聞文章。 – TheGreatContini

0

我需要保持加密密鑰的地方

不,你不會。用戶只需要記住它。爲了方便起見,您可以將其保存在瀏覽器的本地存儲中。

+1

那麼它不會是一個用戶友好的應用程序嗎?每次用戶需要輸入加密密鑰時。同樣在任何情況下,如果用戶忘記了密鑰,他可能會丟失他的全部數據。 – Rameez

+0

聽起來就像你有相互矛盾的要求。 – CodeCaster

相關問題