如何在 WPF C# 应用程序中安全部署 PPK 文件?

How to securely deploy PPK file in WPF C# app?

我有一个连接到 SFTP 服务器以传输日志文件的 C# 应用程序。 该应用程序通过使用 WinSCP .NET 程序集连接到服务器来实现这一点。

如何安全地存储 .ppk 私钥文件,使用户无法使用此文件自行访问 SFTP?

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

根据库引用 .ppk 的方式,可能无法避免在 运行 时间内将 .ppk 文件存储在本地磁盘上?

提前致谢。

通常没有办法向最终用户隐藏(任何)应用程序拥有的任何类型的凭据。你只能让他们很难被发现,但是否值得付出努力是值得怀疑的。

您可以(也应该)做的是确保凭据只授予必要的访问权限。

因此,在您的情况下,请确保您使用私钥进行身份验证的帐户:

  • 只有写入权限(没有读取权限,甚至没有列表)
  • 并且磁盘配额较低
  • 定期(或自动)监控任何异常 activity

特别是关于 WinSCP .NET 程序集的私钥:

是的,它必须存储在磁盘上(即临时解压缩到临时文件夹)。虽然您可以使用密码加密私钥。并在应用程序中硬编码密码(如果需要,可以进行混淆)。

SessionOptions.SshPrivateKeyPassphrase


另请参阅 Protecting credentials used for automation 上的 WinSCP 文章。

由于 WinSCP .NET 程序集正在调用命令行脚本接口,因此可能无法执行此操作。我是 edtFTPnet/PRO, which is a native .NET implementation of various file-transfer protocols, including SFTP. Our interface allows you to set the private key using a byte-array (see SecureFTPConnection.ClientPrivateKeyBytes) 的开发者之一。我们的产品不是免费的,但它应该能带你去你想去的地方。