2011-07-12 32 views
3

好的,所以我需要一些關於我應該用於當前項目的加密方法的建議。關於這個主題的所有問題都是關於網絡連接,並將加密數據從一臺機器傳遞到另一臺機器。關於我應該使用的加密方法的建議

的系統是如何工作的簡要總結爲:

我有一個是在那些以文本格式表中保存一些數據。然後我使用一個工具來解析這些數據並將其序列化爲一個dat文件。這工作正常,但我需要加密這些數據,因爲它將與應用程序一起存儲在公共場所。數據不會發送到任何應用程序簡單讀取的地方。我只需要對它進行加密,這樣如果它落入了錯誤的手中,就不可能讀取數據。

我正在使用crypto ++庫進行加密,我讀過它可以執行大多數類型的加密算法。然而,我注意到大多數算法使用公鑰和私鑰來加密/解密數據。這將意味着我將不得不存儲私人密鑰,而這些數據似乎對我來說不直觀。有沒有什麼方法可以在不存儲私鑰的情況下執行加密?

+1

查找對稱與非對稱加密 –

回答

4

我沒有理由在你的情況下使用不對稱加密。根據互聯網訪問的可用性,我看到兩種體面的解決方案:

  1. 將密鑰存儲在服務器上。只有當程序的用戶登錄到服務器時,他才能獲得本地存儲的密鑰。
  2. 使用Key-Derivation-Function(例如PBKDF2)從密碼派生密鑰。

當然,如果攻擊者耐心等待並安裝鍵盤記錄並等到下次訪問這些文件時,所有這些都會失敗。一旦您的機器遭到入侵,無法保護您的數據。

+0

感謝您的建議。我認爲生病使用Key-Derivation-Function方法來做到這一點。而且是的,硬件操作員主要負責確保機器在這種情況下不被篡改。 – Hubbo

1

如果您的應用程序可以讀取數據並且人們可以訪問該應用程序,那麼具有足夠動力和時間的人最終會找出(通過反彙編您的應用程序)如何讀取數據。

換句話說,解密加密數據所需的所有信息已經在攻擊者手中。在所有與DRM相關的設計中,你都有消費者=攻擊者的問題,這就是爲什麼人們可以輕鬆解密DVD,藍光光盤,M4A,加密電子書等等等等等等等等。

1

這就是所謂的非對稱加密, /私鑰對。

你可以使用對稱加密算法,這樣你只需要一個鍵。

該密鑰仍然需要存儲在某個地方(它可能在可執行文件中)。但如果用戶有權訪問.dat,他可能也可以訪問該exe。意味着他仍然可以提取這些信息。但是如果他能夠訪問pc(以及所需的權限),他可以從內存中讀取所有信息。

您可以詢問用戶密碼(又名密碼)並使用它來對稱加密。這樣你就不需要在任何地方存儲密碼。

3

簡答:不要打擾。

長答案:如果你存儲你的。DAT文件與應用程序,你必須在某處存儲密鑰。很可能在同一個地方(可能隱藏在代碼中)。所以如果一個惡意用戶想要破解你的加密,他所要做的就是尋找那個密鑰,就是這樣。使用哪種方法或算法並不重要。即使您沒有將解密密鑰與應用程序一起存儲,它也會最終到達目的地,並且惡意用戶可以在運行時用調試器捕獲它(除非您使用專用的安全存儲器芯片並在設備上運行)有必要的保護)

這就是說,很多時候數據加密的事實是足夠的保護,因爲數據是不值得的麻煩。如果這是你的情況 - 那麼你可以在代碼中嵌入密鑰並使用任何可用的對稱算法(AES將是最好的選擇)。

2

解決您的問題,常用的方法是:

  • 使用對稱的密鑰算法到加密數據,常見的算法是AES,Twofish的。最有可能的是,你想使用CBC鏈接。
  • 使用一個摘要(sha-256)並用一個不對稱算法(RSA)使用你的私鑰對它進行簽名:這樣你嵌入了一個簽名和一個公鑰來檢查它,確保如果你的加擾密鑰被泄露,其他人將無法僞造你的個人資料。當然,如果你需要更新這些數據,那麼你不能使用這個私鑰機制。

在任何情況下,你應該檢查

  • 對稱的加密VS不對稱者
  • 簽名VS加密操作的
  • 模式,這意味着你如何鏈中的一個塊到下一個塊密碼,如AES,3DES(CBC VS ECB)

正如前文所說,如果在讀取數據的同一個應用程序andwritten,以任何方式,這將是很難防止惡意用戶竊取這些數據。有些方法可以隱藏代碼中的密鑰(您可以搜索Whitebox加密技術),但它絕對是相當複雜的(顯然不依賴於簡單的外部加密庫,可以很容易地用模板來竊取密鑰)。

+0

你所描述的「鏈接」通常被稱爲「操作模式」。 –

+0

同意了,更新了我的帖子 – Bruce

相關問題