https://panopticlick.eff.org/ に示されているように、Webブラウザーはアクティブとパッシブの両方でフィンガープリンティングを行う傾向があります(多くの場合、ワイヤーを監視するだけでWebブラウザーのフィンガープリントを作成できます)。
私の質問は:BitTorrentクライアントでも同じことは可能ですか?
これまでの私の調査では、DHTの「アドレス」が永続的であるか、トレントクライアントの情報ハッシュのリストが明らかになる可能性があることを示唆しています。これにより、情報ハッシュのリストはほとんど一意であるため、パッシブフィンガープリントは簡単になります。これは本当ですか?
ほとんどのクライアントでは、一時停止されていても、現在ビットトレントクライアントにあるすべての情報ハッシュのリストをリモートで取得できることを思い出しました。これは、アクティブなフィンガープリントの可能性を示唆しています。ソースは見つかりませんでした。
クライアントバージョン文字列もいくつかの情報を提供しますが、指紋情報の唯一のソースとして機能するには少なすぎます。
フローベースの動作フィンガープリント は、BitTorrentクライアントの場合の脅威ですか?
私が知らないフィンガープリントに使用できる他の情報源はありますか?
開始すると、BitTorrentクライアントはpeer_id
という20バイトの識別子を生成します。これはClientIdentifierClientVersion-RandomNumbers
で構成されています。確かに、ClientIdentifier
とClientVersion
は識別を提供しませんが、RandomNumbers
はできますクライアントを識別するために使用され、理解する必要があるいくつかの事柄があります:
peer_id
は、クライアントが送信するものであれば何でもかまいません。プロトコルは、それがどのように生成されるべきであるか、それがどのように構造化されるべきかを定義していません。
クライアントはそのpeer_id
を要求する人に渡します(ハンドシェイクの一部です)。
no_peer_id
フラグを設定すると、peer_id
を開示せずに通信を行うことができます。
peer_id
は、クライアントが再起動されるたびに生成されます。 uTorrent 3.3は、時々実行される新しいpeer_id
whileも生成します。
ただし、 BitTorrent は [〜#〜] dht [〜#〜] と呼ばれる Kademlia を使用します。これはセキュリティ研究にとって素晴らしいニュースです(別名ストーカー)。しばらく前に、uTorrentとTransmissionを分析しましたが、どちらもDHT/PEXに暗号化を使用しています(有効にして強制した場合)。
クライアントがDHTの「ネットワーク」に入ると、一部のbootstrapサーバーに接続してブートストラップします。これは通常、新しいクライアントを初めて実行するときに発生します。しかし、Kademliaのブートストラップ時に発生するのはそれだけではありません。
クライアントがネットワークに参加すると、node ID
と呼ばれるランダムに生成された識別子が付与されます。このノードIDは、BitTorrentの「情報ハッシュ」と同じ160ビット空間からランダムに選択されます。いつでも、DHT情報をクリアしてネットワークに再参加できます。これにより、新しい識別子が付与されます。多くのユーザーがそうするわけではないので、比較的それを識別子として当てにすることができます。
クライアントのnode ID
を取得するには、DHT ping
メッセージを送信するだけで十分であり、IDで応答します
{"t":"T_ID", "y":"q", "q":"ping", "a":{"id":"THE_SENDER_ID
"}}
t
はトランザクションIDであり、メッセージを識別し、応答とともに返送されますy
はメッセージのタイプであり、値"q"
はメッセージであることを意味します。q
はクエリのタイプで、ここではpingクエリです。a
はクエリの引数を表します。ここでは、送信者のノードIDが含まれています。クライアントが応答します
Response = {"t":"T_ID", "y":"r", "r": {"id":"MY_ID"}}
y
の値"r"
は、これが応答であることを意味します。
これらは主に、プロトコル自体によって提供されるクライアントを識別する2つの方法です。