web-dev-qa-db-ja.com

接続されたUSBデバイスは、USBバスからすべてのデータを読み取ることができますか?

(悪意のある)(ハードウェア)USBデバイスが、USBバスを介して転送されるすべてのデータにアクセスし、この情報を読み取り/保存して、本質的に転送されたすべてのデータを盗聴することは可能ですか?または、USBバスが切り替えられ、正しい受信者にのみデータを送信しますか?

31
user1049697

可能性が高いですが、状況によって異なります

PATA、SCSI、およびイーサネットデバイスと同様に、USBデバイスはコンピューターに直接接続しません。これらは、すべてのシグナリングと通信を管理するホストコントローラーに接続します。すべてのポートはルートハブと呼ばれるものに接続されており、各ルートハブに他のハブを接続してから、さらに多くのハブを接続できます。

これらの各ハブには、複数のダウンストリームと1つのアップストリームがあります。 "どういう意味ですか?"あなたが尋ねる。つまり、ハブから送信されたデータはすべて子ハブとデバイスに送信されますが、ハブとデバイスから送信されたデータはルートハブに「上向き」にのみ送信されます。

したがって、同じルートハブにつながるポートに複数のデバイスが接続されている場合(それらはすべて同じホストコントローラーによって制御されます)、どのデバイスでも、コンピュータ->デバイスの方向でのみデータを傍受できます。

たとえば、myラップトップでは、右側のポートはホストコントローラーによって制御され、左側のポートは別のホストコントローラーによって制御されます。

enter image description here

つまり、右側の任意のデバイスに送信されたデータは、右側の任意のデバイスによって傍受できますが、左側に接続されているデバイスでは傍受できません。

他のデバイスに送信されたデータが無視されないようにUSBスティックを変更していた同僚を覚えています。そのため、その変更されたUSBスティックをコンピューターに接続すると、同じコンピューター上の他のUSBスティックにコピーされたすべてのファイルをキャプチャできます。

更新:

私の情報は私の同僚の説明に基づいているので、@ Polynomialのコメントは私に答え全体を質問させました。確かに、私はいくつかの参照を見つけようとしました。私は SB仕様 を掘り下げて、これを見つけました:

enter image description here ...ダウンストリーム方向では、ハブはブロードキャストモードで動作します。ハブは、アップストリーム側のポートでパケットの開始を検出すると、有効になっているすべてのダウンストリーム側のポートへの接続を確立します。ポートが有効でない場合、パケットシグナリングはダウンストリームに伝播されません。

また、 TOTAL PHASE KB記事 は同意するようです

USB 2.0は、一方向のブロードキャストシステムを介して機能します。ホストがパケットを送信すると、すべてのダウンストリームデバイスがそのトラフィックを認識します。ホストが特定のデバイスと通信したい場合は、トークンパケットにデバイスのアドレスを含める必要があります。アップストリームトラフィック(デバイスからの応答)は、ホストへのリターンパスに直接接続されているホストまたはハブでのみ表示されます。

22
Adi

アドナンの答えは正しいです。ただし、図を完成させるために、Usb3.0のスーパースピードモードでは、ダウンストリームのパケットは、usb2.0とは異なり、ブロードキャストではなくハブによってルーティングされます。

Usb3.0ハブは、usb2.0部分と別のスーパースピード部分で構成されていることに注意してください。スーパースピードハブのusb2.0部分は、以前と同様にブロードキャストモードで動作します。

つまり、超高速モードで実行されているドライブに書き込んだ内容をスヌープすることはできません。

7
Linus kerk