ソフトウェア

BitTorrentバージョン2はSHA256対応でよりセキュアに、ハッシュツリーによる効率化も行われている


P2Pを用いたファイル転送用プロトコル「BitTorrent」は2017年にバージョン2に到達し、SHA-256への対応やハッシュツリーの導入など、さまざまな改良が加えられました。オープンソースのBitTorrent実装であるlibtorrentは、BitTorrentバージョン2対応の完了報告とともに、ブログ上でBitTorrentバージョン2の新機能を説明しています。

BitTorrent v2
https://blog.libtorrent.org/2020/09/bittorrent-v2/

BitTorrentバージョン1ではピースのハッシュ化にSHA-1を用いていましたが、SHA-1はGoogleによって衝突が確認されたため、ピースの改ざんを検知できない可能性がありました。BitTorrentバージョン2ではハッシュ関数にSHA-256を採用することで、より安全性が高まっています。また、ハッシュ関数の変更に伴い、いくつかの新機能も搭載されたとのこと。


大きな変更点はハッシュツリーの導入です。BitTorrentではファイルをピースと呼ばれる単位に断片化し、全ピースのハッシュ値をTorrentファイルに記録して、ダウンロードしたピースのハッシュ値をひとつずつチェックすることでデータの整合性を確認していました。この方式では、巨大なピースがハッシュ化に失敗していると、再ダウンロードを必要とするデータ量が増加するという問題がありました。

BitTorrentバージョン2ではハッシュツリーを導入することで、Torrentファイルのメタデータ部分を圧縮。magnetリンク使用時における待ち時間の短縮や、ピース再ダウンロード時のデータ容量圧縮に成功しているとのこと。BitTorrentバージョン2のハッシュツリーは図のような構造で、「ブロック」と呼ばれるデータの断片をハッシュ化し、さらにそのハッシュ値をハッシュ化した値をピースハッシュとしてTorrentファイルに格納していると説明されています。


また、BitTorrentバージョン2ではTorrentファイルに含まれるすべてのファイルをハッシュツリーとして構築することで、重複したファイルの識別やファイルの複数ソースを検索を容易にしているとのこと。。

Torrentに含まれるファイルはリスト化されてTorrentファイルに記述されていますが、BitTorrentバージョン1のファイルリストは単一のリストとして表現されていました。しかし、この方法では同じディレクトリが重複して表れるため、長いディレクトリ名が使われている場合は問題となっていました。

'files': [
    { 'attr': 'x', 'length': 12323346, 'path': [ 'F' ] },
    { 'attr': 'p', 'length': 62958, 'path': [ '.pad', '62958' ] },
    { 'attr': 'x', 'length': 2567, 'path': [ '長いディレクトリ名', 'A' ] },
    { 'attr': 'p', 'length': 62969, 'path': [ '.pad', '62969' ] },
    { 'attr': 'x', 'length': 14515845, 'path': [ '長いディレクトリ名', 'B' ] },
    { 'attr': 'p', 'length': 33147, 'path': [ '.pad', '33147' ] },
    { 'attr': 'x', 'length': 912052, 'path': [ '長いディレクトリ名', 'C' ] },
    { 'attr': 'p', 'length': 5452, 'path': [ '.pad', '5452' ] },
    { 'attr': 'x', 'length': 1330332, 'path': [ '長いディレクトリ名', 'D' ] },
    { 'attr': 'p', 'length': 45924, 'path': [ '.pad', '45924' ] },
    { 'attr': 'x', 'length': 2529209, 'path': [ '長いディレクトリ名', 'E' ] }
    ],


BitTorrentバージョン2からはリストにディレクトリ構造を取り入れることで、効率的にリストを作成しています。

'file tree': {
    'F': { '': { 'attr': 'x', 'length': 12323346, 'pieces root': 'd1dca3b4a65568b6d62ef2f62d21fcdb676099797c8aa3e092aa0adcb9a9f6a5' } },
    '長いディレクトリ名': {
      'A': { '': { 'attr': 'x', 'length': 2567, 'pieces root': 'f6e5b48ebc00d7c6351aafdec9a0fa40ab9c8effe8ac6cfb565df070d9532f70' } },
      'B': { '': { 'attr': 'x', 'length': 14515845, 'pieces root': '271d61e521401cfb332110aa472dae5f0d49209036eb394e5cf8a108f2d3fb03' } },
      'C': { '': { 'attr': 'x', 'length': 912052, 'pieces root': 'd66919d15e1d90ead86302c9a1ee9ef73b446be261d65b8d8d78c589ae04cdc0' } },
      'D': { '': { 'attr': 'x', 'length': 1330332, 'pieces root': '202e6b10310d5aae83261d8ee4459939715186cd9f43336f37ca5571ab4b9628' } },
      'E': { '': { 'attr': 'x', 'length': 2529209, 'pieces root': '9cc7c9c9319a80c807eeefb885dff5f49fe7bf5fba6a6fc3ffee5d5898eb5fdb' } }
      }
    },


なお、BitTorrentバージョン2の実装は、以下のtorrentファイルで確認することができます。

(Torrent)https://libtorrent.org/bittorrent-v2-test.torrent

この記事のタイトルとURLをコピーする

・関連記事
27TB以上の研究用データセットをBitTorrentで共有する「Academic Torrents」 - GIGAZINE

1億人以上のアクティブユーザーを抱えるP2Pファイル共有のBitTorrentが仮想通貨の「TRON」に買収される、世界最大の分散型エコシステムが誕生 - GIGAZINE

BitTorrentでのダウンロードはなぜ特定されにくいのか? - GIGAZINE

P2P技術で知られるBitTorrentを仮想通貨「TRON」の創業者ジャスティン・サンが買収 - GIGAZINE

アニメーションで感覚的にハッシュ関数「SHA-256」の算出過程を理解できる「SHA-256 Animation」 - GIGAZINE

in ソフトウェア,   ネットサービス, Posted by log1n_yi

You can read the machine translated English article here.