高速・堅牢な整合性確認!Linuxのb2sumコマンド徹底解説

はじめに

b2sum は、最新の暗号学的ハッシュアルゴリズム「BLAKE2b」を採用した Linux 標準のハッシュ計算・整合性検証ツールです。従来の md5sum や sha256sum と比較して極めて高速に動作し、かつ同等以上の強固な耐タンパー性を誇るため、テラバイト級の大容量アーカイブやシステムバックアップの改ざん検知に真価を発揮します。本記事では Ubuntu 環境を対象に、コマンドの基本操作からチェックサムファイルによる自動検証、ダイジェスト長の調整テクニックまで実践形式で分かりやすくまとめました。

基本操作:単一ファイルのハッシュ値算出

動作検証用のサンプルテキストを用意するため、まずは echo 'Hello Linux b2sum verification' > sample.txt を実行してファイルを作成します。

検証用テキストファイルの生成

引数に対象ファイルを渡して b2sum を呼び出すと、デフォルトで 512 ビット長の BLAKE2b チェックサム値と対象パスが標準出力に出力されます。
⚙️ [頻出コマンドラインオプション]

-c : チェックサム一覧ファイルを読み込み、各対象ファイルの完全性を一括照合します。
-l : 出力するハッシュダイジェストのビット長を指定します(最大 512 ビット、8 の倍数に対応)。
--tag : BSD 互換フォーマットでハッシュ値を出力します。
--quiet : 検証成功(OK)のメッセージを隠蔽し、不一致や破損が発生した異常ファイルのみを表示します。
--status : 画面出力を一切行わず、終了ステータスコード(0 または 1)のみで検証結果を返します。

b2sumコマンドによるハッシュ値の出力

チェックサムの保存と自動照合(-c オプション)

後からの照合作業に備えてハッシュ値をファイル化する場合、リダイレクトを活用して b2sum sample.txt > sample.b2 を実行します。
標準出力が sample.b2 側へ渡るため端末上にはログが流れませんが、内部に対象パスとハッシュがセットで記録された定義ファイルが正常に生成されます。

ハッシュ値をチェックサムファイルへ保存

作成したハッシュ定義ファイルを用いて対象データが破損・改ざんされていないか確認するには、-c フラグを添えて b2sum -c sample.b2 を実行します。
コンソールに sample.txt: OK と表示されれば、記録時と全く同一の状態であることが保証されます。

チェックサムファイルを用いた整合性検証

ダイジェスト長(出力ビット数)のカスタマイズ(-l オプション)

ビット長調整の挙動を確かめるため、テスト用データを echo 'Digest length test file' > length_test.txt で新しく作成してみましょう。

テスト用データの新規作成

出力ハッシュを一般的な SHA-256 と同じ 256 ビットサイズへ制限したい場合は、-l 256 を付与して b2sum -l 256 length_test.txt を実行します。
標準の 128 桁(512 ビット)から半分となる 64 桁の 16 進数文字列が計算される挙動を確認できます。

256ビット長でのチェックサム生成

さらに短縮して 128 ビット長で取得したいケースでは、-l 128 を指定して b2sum -l 128 length_test.txt を呼び出します。
出力は 32 桁の 16 進数へと圧縮されるため、ストレージ節約や既存データベースのフィールド設計に応じて柔軟なハンドリングが可能です。

128ビット長でのチェックサム生成

複数ファイルの一括ハッシュ計算と標準入力パイプライン連携

複数ファイルをまとめて処理するシナリオを想定し、作業ディレクトリと検証データを mkdir -p hash_test_dir && echo 'Data 1' > hash_test_dir/f1.txt && echo 'Data 2' > hash_test_dir/f2.txt で一括準備します。

検証用ディレクトリと複数ファイルの作成

ディレクトリ内の対象ファイルをまとめて走査するには、ワイルドカードを用いて b2sum hash_test_dir/*.txt を実行します。
パターンに該当するすべてのファイルに対して個別のハッシュが順次算出され、ファイルパスと並んで一覧表示されます。

複数ファイルに対する一括ハッシュ計算

ディスク上に中間ファイルを作らず、パイプ経由で渡されたデータストリームを直に検証したいときは、echo -n 'Streamed text verification' | b2sum のようにパイプライン連携を行います。
対象ファイル名の箇所に -(標準入力を示す記号)が割り当てられ、メモリ上のストリームデータであってもリアルタイムに正確なダイジェストを取得できます。

標準入力パイプライン経由でのハッシュ計算

Linux 環境下でパフォーマンスと堅牢性を兼ね備えたファイルチェックを行うなら、BLAKE2b ベースの b2sum は最善の選択肢となります。日々のデータバックアップやセキュアなファイル配布パイプラインの構築にぜひ導入してみてください。