Как безопасно развернуть файл PPK в приложении WPF C#?

У меня есть приложение C#, которое подключается к серверу SFTP для передачи файлов журнала. Приложение достигает этого, используя сборку WinSCP .NET для подключения к серверу.

Как мне безопасно хранить .ppk файл закрытого ключа такой, что пользователь не может взять этот файл для доступа к SFTP для себя?

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

Основываясь на том, как библиотека ссылается на .ppk, может быть невозможно избежать сохранения .ppk файл на локальном диске во время выполнения?

Заранее спасибо.

2 ответа

Решение

Как правило, нет способа скрыть какие-либо учетные данные, которыми (любое) приложение обладает от конечного пользователя. Вы можете только сделать их трудно найти, но сомнительно, стоит ли это даже усилий.

Что вы можете (и должны делать) - убедиться, что учетные данные предоставляют только минимальный доступ по мере необходимости.

Так что в вашем случае убедитесь, что учетную запись вы аутентифицируете с помощью закрытого ключа:

  • имеет только доступ на запись (нет доступа на чтение и даже список)
  • и имеет низкую дисковую квоту
  • регулярно (или автоматически) контролируется на предмет любых необычных действий

В частности, в отношении закрытого ключа для сборки WinSCP .NET:

Да, он должен храниться на диске (то есть временно извлекаться во временную папку). Хотя вы можете зашифровать секретный ключ с помощью ключевой фразы. И иметь парольную фразу, жестко запрограммированную в приложении (запутанную, если хотите).

Увидеть SessionOptions.SshPrivateKeyPassphrase,


См. Также статью WinSCP о защите учетных данных, используемых для автоматизации.

Поскольку сборка WinSCP .NET вызывает интерфейс сценариев командной строки, вероятно, сделать это невозможно. Я один из разработчиков edtFTPnet / PRO, которая является нативной.NET-реализацией различных протоколов передачи файлов, включая SFTP. Наш интерфейс позволяет вам установить закрытый ключ, используя байтовый массив (см. SecureFTPConnection.ClientPrivateKeyBytes). Наш продукт не является бесплатным, но он должен доставить вас туда, куда вы хотите.

Другие вопросы по тегам