Я планирую написать некоторое программное обеспечение, использующее SFTP с аутентификацией с открытым / закрытым ключом для загрузки файлов на сервер. Мне интересно, как люди рекомендуют управлять ключами (особенно закрытым ключом).
Моя целевая платформа - Windows с C # или C ++. Я посмотрел на несколько библиотек:
C #
(Свободное / открытое)
SharpSSH
Granados
(коммерческий)
Rebex
C ++
Libcurl / OpenSSH
Похоже, что все они требуют, чтобы закрытый ключ хранился в файловой системе, чего я предпочел бы избежать по соображениям безопасности. Я также предпочел бы не реализовывать аутентификацию самостоятельно, хотя я признаю это как вариант. Мои вопросы:
Есть ли способ передать любую из этих библиотек (или любую библиотеку / API, которую я, возможно, пропустил) значениям ключей непосредственно из памяти вместо загрузки из файла?
Если нет, каков рекомендуемый способ управления этими ключевыми файлами? Помимо шифрования пароля и строгого контроля доступа, нужно ли что-то делать для защиты файла ключа?