2015-07-21 64 views
1

我有一個C#應用程序連接到SFTP服務器來傳輸日誌文件。 該應用程序通過使用WinSCP .NET程序集連接到服務器來實現此目的。如何在WPF C#應用程序中安全部署PPK文件?

如何安全存儲.ppk私鑰文件,以便用戶無法使用此文件爲自己訪問SFTP?

http://winscp.net/eng/docs/library#csharp

基於庫引用.ppk的方式,它可能無法避免在運行時存儲在本地磁盤上的文件.ppk

在此先感謝。

+1

這是經典的「DRM問題」,如果硬件上存在密鑰,則用戶無限制地物理訪問它是不可能的,因此用戶無法獲得密鑰。你能做的唯一事情就是讓它足夠難以獲得關鍵性的努力,而不是找到它的成本。 –

回答

0

通常沒有辦法隱藏(任何)應用程序對最終用戶擁有的任何類型的憑證。你只能讓他們很難被發現,但它是否值得付出努力還是值得懷疑的。

你可以(也應該這樣做)是確保憑據授予儘可能少的訪問權限。

所以你的情況,確保賬戶,你用私鑰認證:

  • 只寫訪問(不讀訪問,甚至也不是列表)
  • 並具有低磁盤配額
  • 經常是監視任何不尋常的活動

具體地關於PRIVA(或自動) te key for WinSCP .NET assembly:

是的,它必須存儲在磁盤上(即,暫時提取到一個臨時文件夾)。雖然您可以使用密碼加密私鑰。並且在應用程序中使用密碼短語(如果您想要,則使用模糊處理)。

請參閱SessionOptions.SshPrivateKeyPassphrase


另請參閱有關Protecting credentials used for automation的WinSCP文章。

0

由於WinSCP .NET程序集正在調用命令行腳本接口,因此可能無法執行此操作。我是edtFTPnet/PRO的開發人員之一,該開發人員是各種文件傳輸協議(包括SFTP)的本地.NET實現。我們的接口允許您使用字節數組設置私鑰(請參見SecureFTPConnection.ClientPrivateKeyBytes)。我們的產品不是免費的,但它應該讓你想要去的地方。

相關問題