2009-01-22 23 views
9

我有一個包含敏感信息的數據庫。我可以在讀寫操作上加密/解密數據。問題是我需要將密鑰存儲在應用程序中。如果有人黑了他們的方式,他們可以訪問數據庫,然後他們也可以抓住應用程序(java)來解壓縮它並拉出密鑰。好的,所以我現在加密了我的數據,我在哪裏隱藏密鑰?

這看起來好像是一個減速帶。還有哪些其他解決方案?

回答

2

要求用戶輸入密碼才能訪問其數據。在代碼中隱藏密鑰就是默默無聞的安全性。

-1

加密密鑰(使用DPAPI),把它放在一個文件,把一個ACL對文件等等

+0

DPAPI只適用於Windows相關的,但這是一個合理的建議... – 2009-01-22 14:19:13

+0

它也是機器特有的,所以如果你將你的數據庫遷移到新的服務器上,你的密鑰將不可解密。 – Russ 2009-01-22 14:59:28

3

我假設你有辦法讓他們之前驗證用戶的憑據訪問數據庫?

通常對於這類事情的體系結構如下:

  • 數據庫
  • 服務器
  • 客戶

客戶端連接到服務器,然後將其連接到數據庫。 服務器確保客戶端在允許其訪問敏感信息之前進行正確的身份驗證。解密密鑰僅存儲在服務器上。沒有人應該有權訪問服務器,特別是包含密鑰的文件。這樣客戶端就不必進行任何加密/解密操作,也不必存儲任何密鑰。

+1

是的,但OP的原始問題是「如果服務器受到威脅,我如何阻止他們發現密鑰」,這是一個完全不同的問題。我喜歡Kent使用操作系統內置密鑰管理的想法 – Coderer 2009-01-22 14:51:46

3

閱讀密鑰庫。

+0

他們是否使用Java?我所知道的所有密鑰庫都是特定於操作系統的 – TToni 2009-01-22 14:25:45

5

您唯一能做的就是難以從應用程序中提取密鑰。你不能讓它變得不可能。如果您向某人提供了一盒包含您想保護的內容的盒子,則必須爲他們提供密鑰才能讓他們訪問這些內容。一旦你給他們鑰匙,他們可以做任何他們想做的事......如果他們不費力地找到鑰匙。

這是一個鮑勃和夏娃是同一個人的情況下,你想讓鮑伯訪問但停止伊娃看到它。

這是DRM,它不起作用。

2

將密鑰存儲在CSP容器中。考慮Java CSP here

這是IMO最安全的方式。但是您也可以考慮將密鑰存儲在受操作系統使用某種ACL保護的文件中。

1

要求用戶使用強密碼登錄;使用密碼作爲密鑰的對稱加密算法來解密不對稱數據庫關鍵

保持在安全存儲器中的DB鍵的應用程序運行時(如果這是一個選項)

相關問題