4

ドメイン

私はソフトウェア ATM を設計しています。必要な暗号化操作を「暗号化デーモン」の背後に隠したいと考えています。これは、ディスク上の暗号化されたキーにアクセスし、これらの操作に対して高レベルのアプリケーション固有のインターフェイスを提供します。

他のプログラムは次のことを行う必要があります。

  • デーモンに対する認証 (有効な認証により、デーモンはディスク上のキーを復号化できます)
  • デーモンにコマンドを発行し、応答を受け取る

これらの操作に localhost 経由で TCP を使用するという考えがあります。TCP ハンドシェイクを実行した後、プログラムはデーモンに対して認証を行う必要があり、認証が成功した場合は、暗号化コマンドをデーモンに発行できます。

実際の質問

少なくとも 2 つの仮定が成り立つ必要があります。そうでない場合、これは設計上安全ではありません。

  1. localhost の TCP チャネルはハイジャック/変更できません (管理者/ルートを除く)
  2. localhost の TCP チャネルは非公開です (覗き見ることはできません) (管理者/ルートを除く)

これらの仮定は正しいですか?なんで?なぜだめですか?他に欠陥はありますか?

4

3 に答える 3

6

一般に、ループバック接続は中間者攻撃 (同じボックス上の他の非ルート プロセスから、またはボックスの外部から) の影響を受けません。

(TLS の代わりに) 貧しい人々 のトランスポート セキュリティとしてループバックを使用する場合は、接続の両端が適切に保護されていることを確認する必要があります。

  • クライアント側では、許可されていない権限の低いプロセスがサーバーへの接続を許可された結果はどうなりますか? クライアント アクセスが平文のパスワードで保護されている場合、そのパスワードに対するブルート フォース攻撃を検討し、パスワードの複雑さと失敗の監査で対処することができます。

  • サーバー側で、権限の低いプロセスがサーバーを終了させ (たとえば、不正な入力またはリソースの枯渇でサーバーをクラッシュさせ)、クライアントからパスワードを盗んだり、誤解を招くようなメッセージを返すトロイの木馬のリスナーに置き換えたりすることは考えられますか?結果?Unix の低ポート番号保護を使用してこれを停止することを検討することもできます (ただし、root/setuid/fork として実行することについて心配する必要があります)。

ローカル アクセスからの保護に関してどの程度の懸念を持っているかは、脅威モデルによって異なります。攻撃者が低特権アカウントを取得するシナリオを無視するには、インフラストラクチャと監視で十分であるという立場をとることができます。しかし、一般的なケースでは、よく知られている TLS のソリューションを使用する方がよいかもしれません。

于 2013-07-24T10:46:26.487 に答える
2

アドレスが localhost の場合、TCP パケットは IP レイヤー自体にルーティングされます。ワイヤーを通さないため、乗っ取り・改ざんができません。

ウィキペディアから、関連情報が強調されています。

インターネット プロトコル スイートの実装には、ネットワーク アプリケーションのクライアントとサーバーが同じマシン上で実行されているときに通信できる仮想ネットワーク インターフェイスが含まれています。これは、オペレーティング システムのネットワーク ソフトウェア内に完全に実装されており、どのネットワーク インターフェイス コントローラーにもパケットを渡しません。コンピュータ プログラムがループバック IP アドレスに送信するトラフィックは、別のデバイスから受信したかのように、単純かつ即座にネットワーク ソフトウェア スタックに戻されます。

Unix ライクなシステムでは、通常、この LOopback インターフェースに lo または lo0 という名前を付けます。

さまざまな IETF 標準では、この目的のために、IPv4 アドレス ブロック 127/8 (127.0.0.1 が最も一般的に使用されます)、IPv6 アドレス ::1、および名前localhostが予約されています。

于 2013-07-24T07:40:00.407 に答える