Product Design, Manufacturing & Innovation Resources
家 » 製品デザイン » デザインのヒント » .torrentファイルとマグネットリンクの違い

.torrentファイルとマグネットリンクの違い

.torrentファイルとマグネットリンクの違い
マグネットリンク
マグネットリンクは、メタデータなしでIDをエンコードし、拡張機能を利用して効率的なメタデータ取得を行うことで、ピアツーピアのファイル共有を効率化します。

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ファイル(.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の外部リンク

(リンクにカーソルを合わせると、コンテンツの説明が表示されます)

取り上げるトピック: トレントファイル、マグネットリンク、BitTorrentクライアント、メタデータ取得、SHA-1、SHA-256、マークルツリー、情報ハッシュ、DHT、PEX、BEP 3、BEP 9、BEP 52、メタデータの整合性、ピアツーピア、コンテンツハッシュ、URIスキーム。

歴史的背景

1965
1970
1970
1974-11-15
1980
1980
1980
1964
1968
1970
1970
1975
1980
1980
1980

(日付が不明または関連性がない場合、例えば「流体力学」などでは、その注目すべき出現時期の概算値が提示されます。)

10年目 周年

フルサイズの画像とダウンロードは、登録会員のみが100%無料で利用できます。