
A .torrent file and a 磁石 link are two ways of giving a BitTorrent client the same thing: the identity of a torrent.
- .torrentファイルは「メタ情報」ファイルです。 その情報辞書には、ピースの長さ、ファイル名と長さ(またはファイルのリスト)、v1 ではピースごとに 1 つの 20 バイトの SHA-1 ハッシュの連結リストが格納されます。情報ハッシュは、エンコードされた情報値の 20 バイトの SHA-1 であり、.torrent ファイルに表示されているエンコードされた形式とまったく同じように計算されます。トラッカー URL はその辞書の外にあるため、torrent の識別情報を変更することなく変更できます。BitTorrent v2 (BEP 52) ではハッシュが変更され、ファイルごとのマークル ツリーと階層的なファイル ツリーを使用して SHA-256 が使用されます。ファイルごとの「ピース レイヤー」は情報辞書の外にあり、実装は しなければならない それらを内部のピースルートフィールドと照合してください。 bep 0003 +2
- マグネットリンクにはメタデータは含まれておらず、その識別情報のみが含まれた。 その形式は、v1 の場合は magnet:?xt=urn:btih:、v2 の場合は xt=urn:btmh: で、オプションで表示名 (dn)、トラッカー (tr)、ピアアドレス (x.pe) パラメータを指定できます。ハイブリッド トレントは、1 つのリンクで btih トピックと btmh トピックの両方を伝送できます。まず、クライアントは BEP 9 拡張機能を使用して他のピアからメタデータを取得します。この拡張機能は、.torrent ファイルの情報辞書部分のみを 16 KiB ブロックで転送します。次に、クライアントはそれをリンク内のハッシュと照合します。リンクにトラッカーが指定されていない場合、クライアントは DHT を使用してピアを見つける必要があります。 bep 0009 +2
つまり、この2つのフォーマットは同じスウォームを指しており、ダウンロードが開始されると同じデータが得られます。違いはメタデータの取得元です。
.torrentファイルは静的な成果物です。ファイルリストはすぐに判明し、メタデータはスウォームが停止しても保持され、ファイルはどこかにホストされる必要があります。
マグネットリンクはどこにでも貼り付けられる短い文字列ですが、メタデータが少なくとも1つの到達可能なピアに保持されている場合にのみ機能します。どちらの形式も、発行者を認証したり、コンテンツがラベルと一致することを確認したりするものではありません。ハッシュは、データがハッシュと一致することのみを証明するものです。
ヒント: 多くのご要望にお応えして、この記事は当サイトのトレントおよびP2Pエンジニアリング関連記事すべてを補完するものです。
歴史と背景
.torrent フォーマットは、オリジナルの BitTorrent 設計に由来します。Bram Cohen は 2001 年 4 月にプロトコルを設計し、同年 7 月 2 日に最初のバージョンをリリースしました。そして、彼と Ashwin Navin は 2004 年に BitTorrent, Inc. (後に Rainberry, Inc. に社名変更) を設立しました。Cohen は、メタ情報ファイルと情報ハッシュを定義するコア仕様である BEP 3 の著者としても名を連ねています。今後の開発は、Python の PEP をモデルにした BitTorrent Enhancement Proposal プロセスを通じて調整されており、Cohen はメインラインのクライアントをオープンソースのままにすることを望んでいました。
BEP 3 仕様は、 ファイル形式v2 フォーマットははるかに後になって登場しました。BitTorrent, Inc. は 2017 年 5 月 15 日に v2 仕様をリリースしました。マグネット リンクは別の起源を持っています。magnet: スキームは BitTorrent のために考案されたものではありません。これは、複数の P2P ネットワークでコンテンツ ハッシュによってファイルを識別するプロジェクトに依存しない方法として設計されました。IANA はこれを暫定的なスキームとしてのみリストしており、2012 年に Magnet-URI プロジェクトが作成者として登録されています。二次資料ではその導入時期を 2002 年としていますが、その日付の一次資料は見つかりませんでした。BitTorrent のマグネット リンクの使用は、Greg Hazel と Arvid Norberg が作成した BEP 9 に基づいています (Norberg は libtorrent のオリジナル作成者でもあります)。 BEP 9はまだ「承認済み」の段階で、最終版ではありません。また、2016年にピアアドレスパラメータ「x.pe」が追加されました。このBEPはメタデータ交換プロトコルとBitTorrentマグネットフォーマットの両方を定義していますが、ある実装者のメモでは、マグネットURIは番号付きのBEPではなく、事実上の慣習であると説明されています。
実際には、どちらの形式も、正式なものではなく、BEPプロセスと主要クライアントが実装するものに基づいている。 基準 体。
1. 基礎知識
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| それは何なのか | 小さなバイナリファイル(エンコードされた辞書) | テキストURI(magnet:?xt=urn:btih:…) |
| 内容が含まれていますか? | いいえ、メタデータのみです | いいえ、識別子のみです |
| 主要コンテンツ | トラッカーURL、ファイル名とサイズ、ピースの長さ、各ピースのハッシュ値、オプションのコメント、作成者と日付 | 情報ハッシュ(xt)、オプションの表示名(dn)、トラッカー(tr)、ピアアドレス(x.pe)。Webシード(ws)はクライアント依存の拡張機能としてのみ提供され、BEP 9では定義されていません。 |
| 標準サイズ | 数KBから数MB(コンテンツサイズに応じて増加) | 約100~500バイト |
| 識別子が使用されています | SHA-1情報ハッシュ(v1)、SHA-256(v2)、または両方(ハイブリッド) | 同じ情報ハッシュ: 骨壺:btih (v1) または urn:btmh (v2) |
| 仕様 | BEP 3 (v1)、BEP 52 (v2) | BEP 9(メタデータ交換およびマグネットURIフォーマット) |
| プロトコルハンドラ | ファイル関連付け(.torrent)によって開かれました | OSまたはブラウザマグネットによって開かれたURIハンドラ |
2. メタデータとファイル情報
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| ダウンロード開始前にファイル一覧が表示されます | はい、すぐに | いいえ、ピアからメタデータを取得した後のみです。 |
| メタデータソース | ファイルに埋め込まれています | ut_metadata を介してピア (DHT、PEX、トラッカー) からダウンロード |
| メタデータの整合性 | ハッシュ化によって検証済み | リンク内の情報ハッシュと照合して検証したため、改ざんされたメタデータは拒否されます。 |
| 開始遅延 | なし | 数秒から数分(メタデータを持つピアが存在しない場合は、まったく発生しない場合もある) |
| 表示名 | ファイル(名前)に保存されます | dnはオプションであり、検証されていません。単なるラベルです。 |
| ピースハッシュ | 含まれる | メタデータから後日取得 |
| 編集可能 | トラッカーはハッシュ値を変更せずに編集できます。情報辞書を編集すると情報ハッシュ値が変更され、別のトレントが作成されます。 | テキストとして簡単に編集できます(トラッカーの追加または削除)。情報ハッシュは、別のコンテンツを指し示さない限り変更できません。 |
3. 著者、出所、および真正性
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| 著者情報 | オプション項目:作成者(クライアントとバージョン)、作成日、コメント | なし。標準的な著者欄はありません。 |
| 作成者に関するメタデータの漏洩 | 可能性あり(クライアントバージョン、タイムスタンプ、場合によってはコメントやURL) | 最小限。リンクには共有者が含めたものだけが含まれています。 |
| デジタル署名 | 署名拡張機能(BEP 35)は存在するが、ほとんど使用されていない。 | なし |
| 内容物がラベルに記載されている通りであることの証明 | いいえ、名前は偽造可能です | なし、そしてdnは偽造可能 |
| コンテンツがハッシュと一致することの証明 | はい、すべての部品はハッシュ検証済みです。 | はい、すべてのピースはメタデータの後にハッシュ検証されます 検証 |
| 信頼モデル | ファイルを提供した人物を信頼し、ハッシュ値と照らし合わせてデータを検証する。 | リンクを提供した人物を信頼し、同じ方法で検証する |
| なりすましのリスク | 同じタイトルの偽トレントはよくある | 同じです。しかも、リンク先はさらに情報量が少ない(最初に確認できるファイルリストがない)。 |
4. ホスティング、配信、および可用性
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| ホスティングが必要 | はい、Webサーバー、インデックスサイト、またはファイル共有 | いいえ、これは単なるテキストなので、どこにでも貼り付けることができます。 |
| 共有方法 | ダウンロード、メール添付、ファイル転送(添付ファイルはブロックされる場合があります) | チャット、メール本文、QRコード、フォーラム投稿、メモアプリ |
| テイクダウンの露出 | ホストされているファイルは削除またはブロックできます | 削除は難しい(純粋なテキスト)が、それらを公開するサイトはブロックできる。 |
| リンク切れ | ファイルはホストが存続する限り存続する | テキスト自体は残っているが、メタデータを保有しているピアが存在しない場合は役に立たない。 |
| アーカイブ価値 | 高:群れが死んでも完全なメタデータを保持する | 低: メタデータの取得には、稼働中の群れに依存します |
| インデックスサイトと検索サイト | トレントごとにファイルを保存する必要があります(ストレージ容量が増えます) | 短い文字列のみを保存する(安価でミラーリングも容易) |
| デバイスを跨いでの利便性 | ファイル転送が必要です | 簡単:コピー&ペーストするか、QRコードをスキャンする |
| ブラウザの動作 | ファイルをダウンロードし、クライアントで開きます。 | プロトコルハンドラーのプロンプトをトリガーします(登録済みのクライアントが必要です) |
5. ネットワークの動作とパフォーマンス
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| ピア発見 | ファイルに記載されているトラッカーに加え、DHT、PEX、LSD(非公開の場合を除く) | DHT、PEX、LSD、およびリンク先のtrトラッカー |
| トラッカーなしで動作します | DHTが許可されている場合のみ | はい、DHT対応です(これが通常のモードです)。 |
| DHTへの依存 | オプション | メタデータやピアにとって不可欠な場合が多い |
| ウェブシード(HTTPソース) | URLリスト / httpsフィールド (BEP 19) | ws= パラメータ。BEP 9 では定義されていないクライアント依存の拡張機能です。 |
| 実行中のダウンロード速度 | 同一 | |
| デッドトレントや希少トレントに対する挙動 | 開始してピアを待機します | 「メタデータの取得」で停止する可能性があります。 |
| プライベートトラッカー | 完全サポート(アナウンスURLにプライベートフラグ、パスキーが含まれます) | 一般的に使用不可。プライベートトレントではDHT/PEXが無効になり、トラッカーパスキーは共有可能なリンクに公開されない。 |
6. セキュリティ
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| マルウェアリスクの発生源 | ダウンロードされたコンテンツ、フォーマットではない | ダウンロードされたコンテンツ、フォーマットではない |
| パーサーまたはハンドラーのリスク | 不正なベンコードは、不適切なクライアントでバグを引き起こす可能性があります(まれ)。 | 悪意のあるDNまたはURIパラメータは、不適切なクライアントまたはハンドラーにおいて、インジェクションまたは表示バグを引き起こす可能性があります(まれ)。 |
| ダウンロード前に内容を確認できる機能 | 高:ファイル一覧、拡張子、サイズを最初に確認できます | メタデータが到着するまでは低速で動作し、ほとんどのクライアントではダウンロード前にファイルリストを確認できます。 |
| 偽装された実行ファイル | ファイル一覧(.exe、.scr、.lnkなど)で検出可能 | 同様だが、メタデータが取得された後のみ。 |
| フィッシングと広告のリスク | トレントサイトは広告が多いことが多い | 同じことに加えて、似たようなマグネットボタンを誤ってクリックしてしまうこともあります。 |
| ハッシュ強度 | v1にはSHA-1(理論的には衝突耐性が低いが、トレントでは悪用しにくい)を使用し、v2にはSHA-256を使用する。 | 参照先のトレントと同じハッシュ値 |
| 輸送中の改ざん | ピースハッシュを介して検出 | 情報ハッシュによって検出されたが、入れ替わったリンクは全く異なるコンテンツを指していた。 |
7. プライバシーと匿名性
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| ピアから見えるあなたのIPアドレス | はい | |
| トラッカーにあなたのIPアドレスが見える | はい(埋め込みトラッカー) | はい、trトラッカーが含まれている場合 |
| DHT曝露 | 可能 | ほぼ確実です。検索は公開DHTに送信されます。 |
| 匿名性の違い | 意味のないもの | |
| 共有者を明らかにするメタデータ | 作成者、コメント、作成日によって詳細が明らかになる | リンクテキストに含まれる内容以外には何も記載されていません。 |
| 緩和策 | VPNまたは プロキシクライアント側 暗号化プライベートトラッカー | |
8.リスクと制限
| リスク | .torrentファイル | マグネットリンク |
|---|---|---|
| 他に類を見ない屋台 | 仲間を待つ | メタデータを取得できない可能性あり |
| 偽造または誤ったラベル付けがされたコンテンツ | 可能 | |
| 法的リスク | 内容と管轄区域によります。ファイルをホスティングすると、サイト運営者にとって露出が増える可能性があります。 | 内容と管轄区域によって異なります。リンクの共有はファイルのホスティングとは異なる扱いを受ける場合もありますが、これは状況によって異なり、安全な避難所となるわけではありません。 |
| プライバシー侵害 | トラッカーとピアの可視性 | DHTとピアの可視性 |
| トラッカーの死亡 | 発見は減少するが、DHTは依然として機能する可能性がある | リンクがDHTに依存している場合は問題ありません |
| 長期耐久性 | より良い | 悪い |
| 誤字脱字と省略 | 破損したファイルが検出されました | ハッシュにタイプミスがあっても何も意味せず、切り詰められたリンクは黙って切断される。 |
9. 互換性と使いやすさ
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| 顧客サポート | ユニバーサル | 現代のクライアントに普遍的に対応(BEP 9が必要) |
| シードボックスとウェブサービス | 普遍的に支持されている | ほとんどのサービスはサポートされていますが、一部の古いサービスはファイルのみを受け付けます。 |
| モバイル対応 | 中程度(ダウンロードしたファイルの処理がぎこちない) | 高い |
| 自動化(RSS(スクリプト、API) | 分かりやすい | また、シンプルで、保管も簡単です。 |
| 人間の読みやすさ | 工具なしでは読み取れません | ハッシュは不透明だが、構造は読み取れる |
10. .torrentファイルとマグネットリンクの作成方法
短剣マークが付いている項目は、私の独自の推論または一般的な知識に基づくものであり、出典によって確認されたものではありません。
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| 入力開始 | 実際のファイルまたはフォルダ、および作成ツール(例えば、mktorrent、またはクライアントの「トレント作成」機能) | 既存の情報ハッシュ。v1では、これはベンエンコードされた情報辞書のSHA-1なので、.torrentメタデータが存在する前にマグネットリンクは存在できません。 |
| 手順の順序 | 1) ピースの長さを選択します。2) 各ピースをハッシュ化します。3) 情報辞書を作成します。4) トラッカーなどの外部フィールドを追加します。5) Bencode でエンコードして保存します。 | 1) トレントファイルを用意する。2) その情報ハッシュを取得する。3) URIにxtを付ける。4) 必要に応じてdn、tr、x.peを追加する。 |
| ピースの長さ | それはあなたが選びます。ほとんどの場合、2のべき乗で、最も一般的なのは256 KiBです。mktorrentはデフォルトで2^18バイトに設定し、-lオプションで設定します。 | いいえ。それはトレントから受け継がれたものです。 |
| ハッシュ作業 | すべてのバイトがハッシュ化されます。v1ではSHA-1で断片化され、v2ではファイルごとにSHA-256のマークルツリーが生成されます。処理時間はデータサイズに比例して増加し(ダガー)、mktorrentは複数のスレッドを使用できます。 | 無視できる程度:既存のハッシュを超えるものは何もない |
| トラッカー | announce、またはannounce-list。リストは情報セクションの外にあります。存在する場合、互換性のあるクライアントはannounceを無視し、ティアは順番に試行され、ティア内のURLはシャッフルされます。 | tr= URI のパラメータ。指定がない場合、クライアントは DHT を使用する必要があります。 |
| プライベートフラッグ | info辞書にprivate=1を設定することで、この設定が可能になります。準拠するクライアントは、プライベートトラッカーにのみ通知し、プライベートトラッカーが返すピアにのみ接続します。これは内部情報であるため、infoハッシュ(ダガー)に影響を与えます。 | リンクにはそのためのフィールドがありません。フラグはメタデータに存在し、クライアントはメタデータを取得した後にのみそれを見ることができます(ダガー)。 |
| ウェブシード | BEP 19 に基づく url-list。mktorrent はこれを -w として公開します。HTTP/FTP サーバーは、永続的にチョークされていないシードとして機能します。 | ws= は BEP 9 のパラメータリストに含まれていません。クライアント依存の拡張機能として扱ってください。 |
| オプションの説明フィールド | コメントと作成日はオプションです。mktorrentでは、コメントを追加するには-c、日付を省略するには-dオプションが用意されています。 | dn(表示名)のみ。ラベルであり、検証されていません。 |
| ソースタグ | mktorrents -s は情報ハッシュにソース文字列を埋め込むため、タグが異なる同じファイルでもハッシュ値とスウォームが別々になります。 | Not applicable |
| アイデンティティを変えるものは何か | 内部情報:名前、ピースの長さ、プライベートフラグ、ソースタグ、ファイルリスト(ダガー) | xt を変更すると、別のトレントを指すようになります。dn、tr、または x.pe を変更しても、 |
| ハッシュバージョンの選択 | v1 (SHA-1)、v2 (SHA-256)、またはハイブリッド(作成時に選択) | ハイブリッドの場合、リンクにはbtih、btmh、またはその両方が含まれている必要があります(BEP 9では、同じハイブリッドトレントを説明する場合、1つのマグネットリンクに両方のトピックを含めることが許可されています)。 |
| 署名 | BEP 35では、ファイルにRSA署名を埋め込むことができ、オプションでX.509証明書も使用可能で、1つのトレントにつき複数の署名を設定できます。ただし、あまり使用されていません(ダガー)。 | BEP 9では署名フィールドが定義されていないため、署名するものはありません。 |
| 出力 | KBからMBまでのバイナリファイル。ホストまたは送信する必要があります。 | 数百バイトのテキスト行1行 |
| 使いやすくする | ファイルをアップロードし、元のデータがある状態でクライアントを実行してシードできるようにします。 | 回線を公開し、シード処理を継続してください。ピアがデータとメタデータを持っていない場合、リンクは役に立ちません。 |
| よくある間違い | コンテンツサイズに対してピースサイズが間違っている(ダガー);公開前にプライベートフラグを忘れた(後で変更すると新しいハッシュが生成される)(ダガー);間違ったトラッカーを追加した | ハッシュにタイプミスや切り捨てがあるため、リンクがどこにも繋がらない(ダガー);プレフィックスが間違っている(btih と btmh の違い);dn にエスケープされていない特殊文字が含まれている(ダガー) |
11. それぞれの使い方
短剣マークが付いている項目は、私の独自の推論または一般的な知識に基づくものであり、出典によって確認されたものではありません。
| 側面 | .torrentファイル | マグネットリンク |
|---|---|---|
| 開け方 | ファイル関連付けをダブルクリックするか、クライアントにドラッグするか、「トレント ファイルを追加」を使用します。 | マグネットリンクをクリック(登録済みのハンドラーが必要)、クライアントに貼り付ける、またはQRコードをスキャンする(ダガー) |
| クライアントが最初に行うこと | bencodeされたメタ情報を解析する | URIを解析し、情報ハッシュを抽出します。 |
| メタデータの入手元 | 既にファイル内にあります | ピアは情報辞書(.torrent ファイルのその部分のみ)を 16 KiB ブロックで BEP 9 拡張機能経由で送信し、クライアントはそれをハッシュと照合します。 |
| 仲間を見つける | ファイルからのトラッカーに加え、プライベートなトレントでない限り、DHT/PEX/LSDを使用します。プライベートなトレントの場合、DHTとPEXは使用しません。 | リンク内のトラッカー。ない場合はDHT |
| 開始遅延 | なし | メタデータを持つピアからの応答を待つため、無期限に停止する可能性がある。 |
| ダウンロード前にファイルを選択する | すぐに | メタデータが到着した後。一部のクライアントはメタデータのみを取得し、ダウンロード前にファイルリストをプレビューできます。 |
| 実行前に確認する | あらゆるパーサーツールによる完全な検査、オフライン | メタデータが取得されるまで不可能です |
| それらの間の変換 | 情報ハッシュを計算し、マグネットリンク(ダガー)を書き込む | 取得したメタデータはトレントとしてエクスポートおよびキャッシュできるため、同じマグネットリンクではメタデータを再度ダウンロードする必要がありません。 |
| プライベートトラッカーの使用 | ファイルにトラッカーURLが含まれているため、クライアントはそれのみにアクセスを制限しなければならないので、これは有効です(BEP 27)。 | おそらく非現実的:リンクにフラグがなく、トラッカーURLには個人情報が含まれている可能性がある(ダガー)。BEP 27は磁石について言及していない。 |
| 編集 | ハッシュ値を変更せずにトラッカーを追加または削除できます。これは、トラッカーが情報セクションの外にあるためです。情報を編集すると、新しいトレントが作成されます。 | テキストは自由に編集できます。xt を変更すると、どのトレントかが変わります。 |
| 真正性の確認 | 信頼できる証明書に対してBEP 35署名を検証してください。あるライブラリでは、そのチェックでは証明書自体は検証されないと指摘しています。それ以外の場合は、ファイルリストを確認してください。 | 情報ハッシュを信頼できる情報源からのハッシュと比較してください。他に利用できる情報はありません。 |
| 自動更新 | BEP 39では、作成者が情報辞書に更新URLを記述することができ、クライアントは作成者によって署名されている場合にのみ新しいトレントを自動的にダウンロードします。 | なし |
| 共有して | ファイルを送信またはホストする | 行をコピー&ペースト |
| 失敗した場合 | トラッカーがダウンしているか、ピアが存在しない場合:クライアントは待機します。破損したファイルは拒否されます。 | ハッシュの入力ミスまたは到達可能なピアがない: 「メタデータの取得」で停止しています。 |
| ウェブシード救出 | ウェブシード付きの.torrentファイルは、ピアがなくても動作します。マグネットリンクにはこれに相当するものはありません。なぜなら、BEP 9もHTTPシードBEPも、HTTPシードからメタデータを取得する方法を提供していないからです。 | |
| ダウンロード後 | 同じファイルからシードを続ける | |

まとめ
Torrentファイル(.torrent)は、アーカイブ、プライベートトラッカー、ファイルリストの事前確認、オフラインメタデータに最適です。一方、マグネットリンクは、迅速な共有、QRコード、トラッカーに依存しない配布、最小限のホスティングに優れています。
どちらの形式も本質的に安全というわけではありません。どちらも暗号化によってデータの整合性を検証しますが、コンテンツの公開者やその内容自体を認証するものではありません。真のセキュリティおよび法的リスクはコンテンツと情報源に由来するため、ファイルリストに不審な拡張子がないか確認し、リンクの入手元にも注意が必要です。
よくある質問
BitTorrentはIETFまたはISOの標準規格ですか?また、.torrentファイルとマグネットリンクの法的地位はどの程度正式なものですか?
いいえ。プロトコルは、PythonのPEPをモデルにしたプロセスであるBitTorrent拡張提案(BEP)によって規定されています。BEP 3はメタインフォ形式を定義し、BEP 52はv2を定義しています。メタデータ交換とBitTorrentマグネット形式を扱うBEP 9は、「最終」ではなく「承認済み」の状態です。magnet:スキーム自体は、Magnet-URIプロジェクトが作成した暫定的なIANA登録にすぎません。実際には、相互運用性は主要なクライアントライブラリによって定義されるため、複数の実装でテストしてください。
情報ハッシュは、トレントとそのコンテンツを暗号学的に結び付けるものですか?
推移的には、そうです。v1 の情報ハッシュは、エンコードされた情報辞書の SHA-1 であり、その辞書には各ピースの SHA-1 ハッシュが含まれているため、ハッシュはデータにコミットします。ただし、SHA-1 の衝突耐性が弱いという注意点があります。実際的な衝突は存在するため、トレントの 2 つのバリアントを作成するパブリッシャーは、 1 つのハッシュで 2 つのペイロードを作成できます。既存のトレントに対する第 2 原像攻撃は依然として実行不可能です。v2 では SHA-256 に移行し、この懸念を解消しています。
どの編集がトレントの識別情報を変更し、どの編集が変更しないのか?
info辞書内の内容はすべてinfo-hashを変更します。具体的には、名前、ファイルリスト、ピース長、プライベートフラグ、およびmktorrentの-sオプションなどのソースタグです。announceやannounce-list(BEP 12)などのinfo辞書外のフィールドは、新しいトレントを作成することなく自由に編集できます。マグネットリンクでは、dn、tr、x.peはIDに影響を与えません。影響を与えるのはxtのみです。info辞書を変更すると、スウォームがサイレントにフォークされるため、新しいトレントを公開するのと同様に扱ってください。
クライアントはマグネットリンク経由で受信したメタデータをどのように認証するのですか?
ピアは情報辞書を16 KiBブロック単位でBEP 9のut_metadata拡張機能経由で送信し、クライアントは組み立てられた結果をハッシュ化して、リンクからの情報ハッシュと比較します。攻撃者がハッシュを解読できない限り、偽造されたメタデータは拒否されます。これはリンクに対する整合性を証明するものであり、真実性を証明するものではありません。dn値は検証されていないラベルであり、ハッシュは誰がコンテンツを公開したか、あるいはコンテンツに実際に何が含まれているかについては何も示していません。
v1、v2、ハイブリッドトレントの実際的な違いは何ですか?
v1 では、情報辞書に SHA-1 ピースハッシュのフラットリストを使用します。v2 (BEP 52) では、ファイルごとのマークルツリーと階層型ファイルツリーを使用して SHA-256 を使用します。ピースレイヤーは情報辞書の外に配置され、実装では情報辞書内のピースルートフィールドと照合する必要があります。ハイブリッド トレントは両方の構造を持ち、情報ハッシュが 2 つになります。また、マグネットリンクには btih と btmh の両方のトピックが含まれる場合があります。v2 専用のトレントを公開する前に、クライアントとツールが v2 をサポートしていることを確認してください。
マグネットリンクは、ピアが存在しない場合でもHTTPウェブシードが存在する場合にダウンロードを開始できますか?
いいえ。BEP 9 はピアからのみメタデータを取得します。BEP 9 も HTTP シード BEP (17、19) も、HTTP シードからメタデータを取得する方法を規定していません。Web シード付きの .torrent ファイルは、メタデータが既にファイルに含まれているため、ピアがゼロの場合でも動作します。可用性を Web シードに依存する場合は、マグネット リンクだけでなく .torrent ファイルも配布してください。
それぞれのフォーマットは、私のプライバシーやネットワーク上のアイデンティティに関して、どのような情報を開示するのでしょうか?
どちらの方式も、ピアや通知先のトラッカーにIPアドレスを公開します。マグネットリンクは通常、公開DHTに依存しており、IPアドレスと情報ハッシュが表示される別のルックアップパスが追加されます。プロトコル暗号化はトラフィックを難読化しますが、匿名化はできません。プライベートトレント(BEP 27)では、クライアントはプライベートトラッカーのみを使用する必要があるため、DHTとPEXは使用されません。匿名性を確保するには、フォーマットの選択ではなく、適切なネットワークレベルの緩和策を備えた脅威モデルを使用してください。
トレント経由で入手したデータの完全性だけでなく、真正性も確認するにはどうすればよいですか?
ピース検証では、データがトレントと一致することしか証明できません。真正性を確認するには、独立した信頼できるチャネルを通じてチェックサムまたは署名(例えば、署名付きSHA-256マニフェスト)を取得し、完成したファイルをそれと照合してください。BEP 35では、オプションでX.509証明書と複数の署名者を含む、.torrentファイルに埋め込まれたRSA署名が定義されていますが、実際に使用されることは稀で、これを実装したライブラリは、検証では証明書自体を検証しないことを指摘しています。マグネットリンクには署名メカニズムが全くありません。
トレントを作成する際に、ファイルの長さはどのように選択すればよいですか?
これはメタデータのサイズと転送の粒度のトレードオフです。BEP 3 では、ピースの長さはほぼ常に 2 のべき乗であり、一般的には 256 KiB であると規定されています。これは mktorrent のデフォルトでもあります。v1 では、256 KiB の 100 GiB のペイロードには 409,600 個のピースがあり、ピース文字列だけでも約 8 MB になります。マグネット クライアントは開始前に約 500 ブロックで辞書全体を取得する必要があるため、メタデータが大きすぎるとマグネットの開始が遅くなります。ピースが大きいとメタデータは小さくなりますが、ピースが失敗した後の修復が粗くなります。
なぜ同一のデータを含む2つのトレントが別々のスウォームに分かれてしまうのか、そしてそれを回避するにはどうすればよいのか?
info-hash は情報辞書全体をカバーするため、異なる名前、ファイル順序、ピース長、プライベートフラグ、ソースタグによって、バイト単位で同一のペイロードであっても異なるハッシュが生成されます。単一のスウォームを維持するには、リリースプロセスでピース長、名前、ファイル順序、フラグを標準化し、成果物とともに info-hash を公開してください。ソースタグは意図的にスウォームを分離する方法であり、mktorrent の -s オプションはハッシュを意図的に変更します。
これらのフォーマットに対応したクライアントやパーサーを作成する際に、主なセキュリティ上の懸念事項は何ですか?
すべての入力を信頼できないものとして扱います。bencodeを厳密に検証し、メタデータのサイズを制限し(あるオープンソースクライアントは32MBの制限を設けています)、メタデータからファイルパスをサニタイズしてディレクトリトラバーサルを防止します。トラッカーとDHTから返されるプライベートアドレスとループバックアドレスをフィルタリングしてSSRFスタイルの悪用を制限し、接続前にトラッカーのURLが許容範囲内であることを確認します。dnを信頼できないテキストとして扱い、最終ストレージに書き込む前にすべてのピースハッシュを検証します。
.torrentファイルから情報ハッシュを正しく計算するにはどうすればよいですか?
ファイル内に表示される情報値の正確なバイト範囲を特定し、そのバイトをハッシュ化します。v1 の場合は SHA-1、v2 の場合は SHA-256 を使用します。BEP 3 では、ハッシュはファイル内のエンコーディングに基づいて計算されることが強調されています。辞書のデコードと再エンコードは、デコーダが入力を完全に検証した場合にのみ安全ですが、寛容なデコーダはデータを暗黙的に正規化して異なるハッシュを生成する可能性があります。ハイブリッド トレントの場合は、同じ範囲から両方のハッシュを計算します。
プライベートトラッカーのトレントにマグネットリンクを使用しても構いませんか?
実際にはそうでない場合が多いです。BEP 27では、クライアントはプライベートトラッカーにのみ通知し、返されるピアにのみ接続することが求められています。ベアマグネットリンクにはプライベートフラグは含まれません。プライベートフラグはメタデータに存在するため、使用可能なトラッカーURLが含まれていない可能性があります。認証情報を含むトラッカーURLが埋め込まれている場合は、リンクをシークレットとして扱います。これは仕様からの私の推測です。BEP 27はマグネットリンクを直接扱っていないため、トラッカーのルールでテストしてください。
パイプラインでソフトウェア、データセット、またはアーカイブを配布する場合、.torrentファイルとマグネットリンクのどちらを公開すべきでしょうか?
.torrent ファイルを正規の成果物として、両方を公開します。これにより、完全なメタデータが保持され、ユーザーはオフラインでファイルリストを検査でき、可用性を確保するためにウェブシード (BEP 19) をサポートします。利便性のために、同じ情報ハッシュからマグネットリンクを生成し、情報ハッシュと署名付きチェックサムを信頼できるチャネルに公開します。これにより、メタデータの取得がピアに依存することなく、アーカイブの耐久性と共有が容易になります。
トレントファイルがどれくらいの期間取得可能な状態を維持するかは何によって決まるのか、また、その期間を延ばすにはどうすればよいのか?
データ取得には、データを保持している到達可能なピアが少なくとも1つ必要であり、マグネットリンクの場合はメタデータを保持しているピアも必要です。シードを常に稼働させ、バックアップとして複数のトラッカーを階層化(BEP 12)し、HTTPウェブシードを追加し、取得したメタデータをキャッシュするクライアントから.torrentファイルをアーカイブまたはエクスポートできるようにすることで、データ取得の安定性を向上させます。マグネットリンクだけでは何も保存されないため、スウォームが停止するとマグネットリンクは役に立たなくなります。
関連する読書資料とトピックの拡張リスト
- エンコード: .torrent ファイルで使用されるシリアル化フォーマット。辞書キーはソート済み。
- 情報ハッシュ: トレントの識別子である、エンコードされた情報辞書のSHA-1(v1)またはSHA-256(v2)ダイジェスト
- コンテンツアドレス指定可能なストレージ: データの場所ではなくハッシュ値によってデータを識別する
- マークルツリー: BitTorrent v2 (BEP 52) におけるファイルごとのハッシュツリーによるピースレベル検証
- ハイブリッドトレント: v1とv2の両方の構造と2つの情報ハッシュを含む単一のトレント
- ピースの長さとピースの層数: メタデータのサイズと検証の粒度との間のトレードオフ
- SHA-1衝突耐性: v1ハッシュが理論的に弱体化し、v2がSHA-256に移行する理由
- 拡張プロトコル(BEP 10): ut_metadata、PEX、その他の拡張機能を有効にするハンドシェイクメカニズム
- メタデータ交換(BEP 9、ut_metadata): ピアから情報辞書を16 KiBブロック単位で取得しています
- マグネットURIスキーム: プロジェクトに依存しないハッシュベースの識別子スキーム(暫定的なIANA登録済み)
- マグマ(磁石の顕示): マグネットスキームのマルチネットワーク起源に由来するマニフェストトピックの概念
- マグネットファイル選択(BEP 53): リンク自体からトレント内の特定のファイルを選択する
- マルチトラッカーメタデータ(BEP 12): シャッフルとフェイルオーバー機能を備えたアナウンスリスト階層
- UDP トラッカープロトコル(BEP 15): 軽量トラッカーがUDP経由でアナウンスします
- コンパクトピアリスト(BEP 23): トラッカー応答におけるピアのコンパクトなバイナリエンコーディング
- IPv6トラッカー拡張(BEP 7): peers6がIPv6のサポートを発表
- トラッカー外部IPレポート(BEP 24): トラッカーがクライアントに観測された住所を伝える
- メインラインDHT(BEP 5): トラッカーレスピア検出のためのKademliaベースの分散ハッシュテーブル
- DHTセキュリティ拡張機能(BEP 42): シビル攻撃やルーティングテーブル攻撃に対抗するため、ノードIDを制限する。
- DHTのput/getとinfohashインデックス作成(BEP 44、BEP 51): DHTにデータを保存し、情報ハッシュをサンプリングする
- ピア交換、PEX(BEP 11): スウォームメンバーがピアリストを直接共有
- ローカルサービスディスカバリ(BEP 14): 同じネットワークセグメント上のピアを見つける
- 高速拡張(BEP 6): プロトコルショートカット(have-all、have-none、rejectなど)
- uTP(BEP 29): 遅延ベースの輻輳制御を備えたUDPベースのトランスポート
- 穴あけパンチ延長部(BEP 55): NATトラバーサルはリレーピアを介して調整される
- メッセージストリーム暗号化(MSE/PE): プロトコルの難読化であって、匿名性ではない
- プライベートトレント(BEP 27): トラッカーへのピア検出を制限するプライベートフラグ
- ウェブシード(BEP 17、BEP 19): 永続的なシードとして機能するHTTPまたはFTPサーバー
- パディングファイル(BEP 47): 重複排除とハイブリッドサポートのためにファイルをピース境界に整列させる
- ローカルデータヒント(BEP 38): 関連するトレントのデータを再利用して再ダウンロードを回避する
- トレント署名(BEP 35): オプションのX.509証明書を備えた組み込みRSA署名
- トレント更新フィード(BEP 39): 署名済みの自動後継トレントの更新URL
- 部品検証パイプライン: コミット前のハッシュチェックと、失敗した部分からの復旧
- パーサーとクライアントのセキュリティ強化: 厳密なベンコード 検証サイズ制限、パスのサニタイズ、SSRFフィルタリング
- WebTorrentとWebRTC: ws/wssトラッカーとICEまたはTURNを使用するブラウザベースのピア
- 種まき箱と長期的な種まき: 可用性とアーカイブ永続性のためのインフラストラクチャ
- BEPプロセスとガバナンス: 仕様がどのように提案され、索引付けされ、承認から最終承認へと昇格されるか
- 代替コンテンツアドレス指定システム: 比較モデルとしてのIPFSスタイルのコンテンツ識別子
- 出所と信頼性: ハッシュがデータを検証するのに、発行者を認証しない理由
Torrentの外部リンク
(リンクにカーソルを合わせると、コンテンツの説明が表示されます)

















