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
・関連記事
27TB以上の研究用データセットをBitTorrentで共有する「Academic Torrents」 - GIGAZINE
1億人以上のアクティブユーザーを抱えるP2Pファイル共有のBitTorrentが仮想通貨の「TRON」に買収される、世界最大の分散型エコシステムが誕生 - GIGAZINE
BitTorrentでのダウンロードはなぜ特定されにくいのか? - GIGAZINE
P2P技術で知られるBitTorrentを仮想通貨「TRON」の創業者ジャスティン・サンが買収 - GIGAZINE
アニメーションで感覚的にハッシュ関数「SHA-256」の算出過程を理解できる「SHA-256 Animation」 - GIGAZINE
・関連コンテンツ