Dot-Net
.Net 加密
我想知道的是在配置文件中加密連接字元串的明確方法。以下是我的問題:
- 使用機器級加密,訪問我的伺服器的任何人都不能編寫一個小的 .Net 程序來讀取連接字元串的內容嗎?
- 如果我將我的應用程序部署到企業環境中的使用者電腦,並且應用程序在配置文件中有連接字元串,我如何確保只有我的應用程序可以解密它?該場景在 ClickOnce 部署場景中特別有趣。我讀過有人在發布伺服器上儲存未加密的配置,並在首次下載、安裝和執行應用程序時在機器級別加密。這對我來說聽起來很不對 - 連接字元串在電線上不受保護地壓縮,並且在下載和應用程序執行之間的短時間內不受保護。
- 我可以擁有公鑰和私鑰,簽署我的應用程序,使用密鑰加密配置文件,並且當使用者執行它時,只能從簽名的應用程序中解密嗎?
- 由於我使用的是 ClickOnce,我可以在程式碼中或嵌入我的加密敏感資訊,因為除非版本 # 更改,否則 ClickOnce 不會檢測到更改。因此,如果我在更改連接字元串時需要重新編譯,則 app.config 的點將被靜音。除了使用配置文件之外,我還可以採取哪些其他方法來保護伺服器、客戶端以及它們之間的連接字元串?
- 是的。使用機器密鑰加密的秘密可以被任何有權訪問機器密鑰的程序解密。使用使用者密鑰加密的秘密可以被同一使用者啟動的任何程序解密。
- 這不可能。所有相反的說法都是蛇油。您的應用程序需要一個秘密來解密某些東西。沒有已知的方案可以在應用程序中隱藏秘密。有各種混淆方案,但沒有什麼是萬無一失的。你能做的最好的就是提高標準。
- 不可以。要麼應用程序具有解密某些東西的密鑰,在這種情況下你回到第 2 點,或者你的應用程序有公鑰,在這種情況下任何人都可以解密相同的秘密,所以你基本上對配置進行驗證(未被篡改),但配置不是秘密。
- 您無法在應用程序中安全地部署嵌入式機密。只是價格有多高的問題,如果您的受保護資產(秘密)值得,那麼黑客就會得到它。
加密基礎設施旨在保護目前使用者的秘密免受其他使用者的侵害。它並非旨在保護應用程序的機密不被使用它的使用者。您要求的不是加密,而是 DRM,您需要查看 DRM 基礎架構以尋求答案。我不知道DRM API周圍的託管庫。