簡體   English   中英

用戶如何加密服務應用程序使用的配置文件?

[英]How can a user encrypt a configuration file to be used by a service application?

好的,我問一個特定問題的相當普遍的問題。 我用更多的方式搜索了這個,而且似乎沒什么用。 讓我解釋一下我的需求,然后我會提到一些我找到的最佳解決方案,以及為什么它們在我的情況下不起作用。

我有一個用戶啟動並用於設置保存到app.config文件中的各種配置值的應用程序。 這是一個WPF應用程序。 具體而言,這些數據中的一些非常敏感。

此數據需要加密,然后由配置步驟完成后由應用程序啟動的Windows服務解密。 給出這種情況的一般解決方案是使用DPAPI,它有兩種加密模式:用戶和本地機器。

如果使用用戶級加密, 只要最初加密數據的當前用戶正在進行解密 ,您的應用程序就會根據需要對數據進行加密和解密 我的問題是,當服務啟動時,它也會在重新啟動時重新啟動,並且將特別在不同的用戶帳戶下運行。

使用DPAPI的下一種方法是將數據加密為本地計算機。 這意味着當ANYONE登錄到機器時可以解密敏感數據。 這是一個大禁忌!

我需要的是讓用戶有一種方法來指定他想要加密的數據,然后指定一個帳戶(在這種情況下,將是什么服務帳戶)並將其用於數據加密。

我找不到怎么做。 這篇MSDN文章暗示可以做到。 (請參閱“Web場景方案”一節。)該文章的TL; DR是針對ASP.Net應用程序的,您可以使用RsaProtectedConfigurationProvider加密數據,並導出要與特定Web帳戶一起使用的密鑰。 接近我想要的,但在我的情況下,我需要在WPF應用程序中創建數據並將其存儲以用於Windows Server服務。

如何才能做到這一點?

使用帳戶名作為加密的salt,decyption應使用登錄的帳戶名作為解密的salt。

我有一個建議,您可以創建用戶組將所需的用戶添加到該組。 僅當用戶使用第二種方法成為該組的一部分時才加密和解密數據。

您可以使用與EFS一樣平凡的東西來完成與此類似的操作,但與原始DPAPI不​​同,恢復密鑰可能會繞過保護。 在任何一種情況下,本地管理員都可以用自己的程序替換您的程序,並且可以完全訪問解密的數據。

至於設置它,最簡單的方法是使用服務帳戶以交互方式登錄,並使用System.Security.Cryptography.ProtectedData創建受保護的數據,或者在標有“encrypt”屬性的目錄中創建文件。

暫無
暫無

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

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