2010-12-03 5 views
1

SFTPを使って公開鍵/秘密鍵認証を使ってファイルをサーバにアップロードする予定です。私は人々がキー(特にプライベートキー)の管理をどのように推薦しているのだろうかと思います。非ファイルベースの鍵を使ったSFTP

ターゲットプラットフォームは、C#またはC++のWindowsです。

C#
(フリー/オープン)
SharpSSH
Granados

(商用)
Rebex

C++
libcurl/OpenSSH

:私は、ライブラリの数を見てきましたこれらのすべては次のように見えます秘密鍵がファイルシステムに格納されている必要があります。これはセキュリティ上の理由から避けることをお勧めします。また、私はオプションとして認識していますが、自分で認証を実装しない方がよいでしょう。私の質問:

ファイルから読み込むのではなく、これらのライブラリ(または見落としている可能性のあるライブラリ/ API)のキー値をメモリから直接フィードする方法はありますか?

これらのキーファイルを管理するには、どのような方法が推奨されますか?パスワードの暗号化と緊密なアクセス制御以外にも、キーファイルを保護するために必要な作業はありますか?

答えて

0

私は、グラナドスを使ったことがないが、そのライブラリのSSH2UserAuthKey classは(あなたがメモリから直接キーをロードする場合MemoryStreamすることができる)任意Streamからユーザーの認証キーをロードFromSECSHStyleStream方法があります。これは、キーストレージのためにファイルシステムをバイパスできるように思えます。

Rebex.NetにはSshPrivateKey class constructorがあり、byte[]からロードできます。これにより、ファイルシステムを避けることもできます。

私は他のライブラリをチェックしていないが、それらのすべてがファイルから直接ロードする便利なメソッドで、byte[]MemoryStream、またはunsigned char*からキーをロードするための方法を提供する可能性が高いようです。

これらのAPIは、秘密鍵の実際の格納方法の問題を解決しません。あなたはそれをパスワードで保護することができます(これはSSH秘密鍵ではかなり一般的な方法です)、またはProtectedData classを使用して現在のWindowsユーザーの資格情報で暗号化します。

0

SFTP classes SecureBlackbox(本製品)では、任意のストリームまたはバイト配列からキーをロードできます。また、さまざまな形式のSSH鍵を生成して変換することもできます。

質問があれば、我々はこれらのすべては、私は 避けるために好む ファイルシステム、上に保存されるように 秘密鍵を必要とするように見えるForumHelpDesk

3

経由でユーザーの評価への支援を提供セキュリティ上の理由から。

私はあなたがファイルシステムを受け入れるべきだと思います。 NTFS(Windowsの開発者がほぼ確実に使用している)のような現代的なものは、あなた(または私)が考案する可能性のあるほとんどの代替メカニズムよりも優れたセキュリティメカニズムを備えている可能性があります。 NTFSにはアクセス制御リスト、暗号化などがあります。ファイルシステムを信頼してデータを安全に保てない場合、なぜネットワークトラフィックを気にするのですか?

上記のことを行うことができない特定の状況がありますが、元の投稿に記載されているものはありません。

+0

ありがとう、ジョン。私はそれをあまりにも議論することはできません。私は、これがマシン上の管理者権限を持つ悪い俳優からさえこのことを守るための解決策を見つけるよう圧力をかけられていたので、これが疑問でした。 –

+1

プロダクションサーバーに管理者権限を持つ悪い俳優は、私にとってゲームのように聞こえます。私は、セキュリティ上の問題が最初にこの懸念を引き起こしても何にでも取り組んでいます。 –

0

次のコードは、Rebex SFTPを使用して秘密鍵を使用して認証する方法を示しています。

コードは、次のようになります。forum post。詳細はSFTP tutorialをご確認ください。

​​
関連する問題