0

ユーザーがネットワーク経由でサーバー上で任意のコードを実行できるクライアント サーバー アプリケーションがあります。ユーザーが他のサーバーに接続するのを防ぎたいのですが、それは本物のように振る舞いますが、パスワードを盗みます。どうすればそれを行うことができますか? サーバーもクライアントもインターネットにアクセスすることは期待できません。認証局は問題外です。誰かがソースコードを入手したとしても、それが私のコードであることを確認する他の方法はありますか?

4

2 に答える 2

0

攻撃者は実サーバーへのrootアクセスを取得する可能性がありますか?そうでない場合は、(CodesInChaosによって提案されているように)自己署名証明書を確立し、オペレーティングシステムのアクセス許可に依存して、許可されていないユーザーが秘密鍵ファイルを読み取れないようにすることができます。そうすれば、クライアントが(SSL経由で)実サーバーにのみ接続していることを確信できます。

攻撃者が実サーバーへのrootアクセスを取得できる場合、対処すべき多くの問題があります。まず、攻撃者はプロセスメモリを自由に読み取ることができるため、サーバーメモリに公開されている機密情報(言及したパスワードなど)にアクセスできます。また、攻撃者はあなたの秘密鍵を盗み、独自のサーバーを確立する可能性があります(ただし、実際のサーバーのメモリをスヌープできるのに、なぜ攻撃者はそうするのでしょうか)。

于 2012-09-02T09:56:29.727 に答える
0

最も簡単な解決策は、自己署名証明書で SSL を使用することです。次に、サーバーの証明書をクライアントにハードコードします。ほとんどの SSL ライブラリは、独自の証明書検証ロジックを展開したり、有効な CA のコレクションを変更したりする方法を提供しています。

これは、サーバーの証明書の秘密を保持できることを前提としています。


原則として、 SRPは代替手段となる可能性があります。しかし、自分で実装するべきではありません。機能しているように見えても、システムの安全性を損なう微妙な間違いを犯しやすいからです。GnuTLS などの一部の SSL ライブラリは、SRP をサポートしています。

于 2012-08-02T09:13:44.903 に答える