簡體   English   中英

從Java程序存儲/讀取敏感數據

[英]Storing/Reading sensitive data from Java program

我正在開發一個程序,該程序需要將數據持久存儲在計算機上的某個位置,因此,當我關閉程序時,數據不會消失。 數據是我無法哈希的,因為程序需要檢索它的值。

該數據庫必須是超級安全的,以便只有程序本身可以訪問該存儲,而沒有其他訪問權限。

現在,SQL對我來說似乎並不安全,如果您可以訪問SQL,則可以訪問其中包含的每個數據庫,唯一的方法是對我插入的某些數據進行加密,但這將導致存儲另一個密鑰為了那個原因。

這是我需要存儲的結構:

FileName  |         Key         | GroupOwner
----------|---------------------|-----------
foo.txt   | $iv44dsfggsdvav523v | adminGroup
----------|---------------------|-----------
bar.txt   | %iihg9v8326h5798v93 | adminGroup

基本上,文件存儲在服務器上並用密鑰加密,如果有人闖入服務器,則他們應該無法讀取密鑰從而解密文件,而只有程序才能這樣做。

有什么方法可以存儲只有我的程序才能讀取和修改的數據?

關於SO,也有一些類似的問題- 是一個很好的概述(即使適用於Web應用程序)。

簡而言之-您無法解決此問題,因為您遇到了雞和蛋的問題。 常見的解決方案是將密鑰存儲在文件系統上,並使用操作系統的安全性來確保只有授權用戶才能讀取它。

最后,一個程序只不過是一個寫下來的算法 換句話說就是協議

含義:無論您將哪種代碼放入程序中; 最后,它涉及一系列動作。 從這個意義上講:總是有另一個完全不同的程序執行相同操作的機會。

因此,最終,“僅軟件”解決方案始終會暴露某些風險。

這就是為什么“高端”解決方案總是將多個“層”結合在一起的原因; 提供不同的保護方式。

換句話說:在某個時候,您需要信任 如果“攻擊者”可以訪問運行您的軟件的系統,那么所有選擇都變為無效。 因為這樣他可以使用調試器進行攻擊。 甚至撕掉驅動器; 並在其他系統中進行分析。

含義:您無法保護自己免受一切侵害。 當程序在您控制的硬件上運行時; 那么,您就受到“保護”。 但是如果沒有, 那么您根本無法在該系統上存儲敏感信息!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM