[英]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.