03 / ガイド
チェックサムでダウンロードとファイルの完全性を検証する
暗号ハッシュが実際に証明するもの、MD5 と SHA-1 が今日では完全性専用である理由、インストーラーの段階的検証、そして機密テキストをアップロードせずにハッシュする方法。
真正性ではなく完全性
暗号ハッシュは任意の入力を固定長の指紋に変えます。1 GB のファイルのどこかで 1 ビット反転させるだけでダイジェストは完全に変わるため、ダイジェストの比較は二つのコピーがバイト単位で同一かを調べる精密な検査になります。
- 完全性は証明される完全性は証明されます。自分のダイジェストが公開されたものと一致すれば、そのコピーは発行者がハッシュしたファイルそのものであり、転送中もディスク上でも破損していません。
- 真正性は別問題真正性は証明されません。ダウンロードの横に印刷されたチェックサムは、そのファイルを誰が書いたかについて何も語りません。ダウンロードを差し替えられる攻撃者は、印刷されたチェックサムも差し替えられます。
- 署名は別の道具真正性には別の仕組みが必要です。すでに信頼している鍵で検証する署名か、ダウンロード自体より信頼できる経路で届けられるチェックサムです。
MD5 と SHA-1 は今や完全性専用
MD5 は 128 ビットのダイジェストを 32 桁の十六進文字として出力し、SHA-1 は 160 ビットを 40 桁で出力します。どちらも高速で、偶発的な破損の発見には問題なく使えますが、どちらも公的に実演された衝突があるため、一致するダイジェストを持つ悪意のファイルを意図的に作る攻撃者には抵抗できません。
実務ルール:MD5 や SHA-1 の一致は、切断されたダウンロードや故障しつつあるディスクを今でも捕らえます。事故は衝突を計算しないからです。これらのアルゴリズムにもはやできないのは、疑う理由のあるファイルを清白とすることです。その判断は今や SHA-256 以上のものです。
- MD5 は破られているMD5 衝突は長年実用的です。同じ MD5 ダイジェストを持つ二つの異なるファイルを故意に作れるため、MD5 は事故と攻撃をもはや区別できません。
- SHA-1 は破られているSHA-1 も同じ道をたどりました。実演された衝突がセキュリティプリミティブとしての寿命を終わらせ、ブラウザー、認証局、コードホストはすべて離脱しています。
- SHA-2 が基線SHA-2 ファミリーが現在の基線です。SHA-256(64 桁の十六進)が公開ダウンロードチェックサムのデフォルトで、SHA-224、SHA-384、SHA-512(56、96、128 桁)が制約の異なる兄弟です。
インストーラーを段階的に検証する
検査全体は 1 分もかからず、マシンにすでにあるツールを使います。順序が大事です。発行者の公式ページから期待値のダイジェストを取得し、ローカルのコピーをハッシュし、全文字を比較します。
不一致が常に悪意とは限りません。切断されたダウンロードやキャッシュプロキシは日常的にファイルを壊します。ただし対応は同じです。そのファイルは検証に失敗したのであり、唯一正しい次の一手はソースからの新しいコピーです。
- 期待値を取得公開されたチェックサムはベンダーの公式ダウンロードまたはリリースページで探します。できれば自分でたどり着いたドメイン上の HTTPS で、ミラーや検索結果のスニペットではなく。
- ローカルでハッシュダウンロードしたファイルをローカルでハッシュします。macOS や Linux では shasum -a 256、Windows では PowerShell の Get-FileHash。どちらもディスク上で動き、アップロードはありません。
- 厳密に比較ダイジェスト全体を大文字小文字を無視して一字ずつ比較します。一文字でも違えばファイルを破棄し、ソースから新しいコピーを取得します。インストールして祈るのはやめましょう。
機密テキストをアップロードせずにハッシュする
実際の検査対象の多くはファイルではなくテキストです。設定の断片、ライセンスキー、トークンの断片、同僚が電話で読み上げた値。それらを適当なウェブサイトに貼り付けることは、他人のログに渡すことを意味するので、ハッシュはローカルで起きる必要があります。
SHA-256 ハッシュ生成・検証は、公開チェックサムの現在標準である 64 桁をカバーします。そこでの検証は復号ではなく比較です。あなたのテキストがハッシュされ、二つの値がブラウザー内で比較されます。
- ローカル設計入力はデバイス上に留まります。作業領域は WebAssembly エンジンでタブ内の最大 1,048,576 バイトの UTF-8 テキストをハッシュし、後に何も保持しません。
- 明示的な比較検証モードは明示的な比較です。期待値のダイジェストを貼ると、作業領域は一致・不一致を報告し、不正な値を事前に拒否します。MD5 はちょうど 32 桁、SHA-256 はちょうど 64 桁の十六進文字です。
- 一方向の構造ダイジェストは一方向です。これらのツールは指紋を作って比較するだけで、逆算を試みることはありません。まともなツールにはそれができないからです。
比較をルーティンに組み込む
チェックサムは、比較が後付けではなく習慣になって初めて機能します。いくつかの小さな規律が、毎回の検査を確実にします。
ファイル全体には、OS 組み込みのコマンドが適切なツールであり、ブラウザーと同じくらいローカルです。ブラウザーの作業領域が輝くのはテキストペイロードと素早いダイジェスト確認です。MD5 ハッシュ生成・検証は、古いダウンロードページが今も公開している 32 桁のレガシー参照値に対応します。
- 全体を比較先頭と末尾の数文字ではなく、ダイジェスト全体を比較します。部分的な目視は、巧妙に作られた衝突が狙う近道そのものです。
- アルゴリズムを明記アルゴリズム名をダイジェストと一緒に保管します。64 桁の十六進文字は複数のアルゴリズムから来得るもので、ラベルのないチェックサムは推測を誘います。
- ホップごとに再計算USB ドライブ、同期クライアント、メールを経てファイルを移すたびにハッシュし直します。各ホップは新しい破損の機会であり、ダイジェストの同行は無料です。
自分のファイルにチェックサムを公開する
ファイルを配布しているなら——リリースバイナリ、データセット、社内ツール——チェックサムを一緒に公開しましょう。成果物ごとに 1 コマンドのコストで、受け取る全員があなたに連絡せず完全性を検証できるようになります。
より長い形式が必要なとき、SHA-512 ハッシュ生成・検証は 128 桁のダイジェストをローカルで生成し、SHA-224 と SHA-384 の兄弟が SHA-2 ファミリーの残りをカバーします。同じエンジン、同じタブ、同じ境界です。
- SHA-256 は最低限最低限 SHA-256 を公開します。利用者が SHA-512 の方が速いプラットフォームで検証する場合はそれも併記し、各ダイジェストにアルゴリズムを明記します。
- 同じ信頼レベルチェックサムはダウンロード自体と同じ信頼レベルから配信します。理想的には、ユーザーがすでに権威と認めているページやリポジトリから。
- MD5 はレガシーラベルMD5 の行はレガシー互換ラベルとしてのみ残し、偶発的破損に対する完全性チェックであると明記します。セキュリティ検証としては決して使いません。
検証はツールを信頼するための一部です。
ファイルを渡す前に、あらゆるオンラインツールのデータ経路を確かめる方法を学びましょう。チェックサムが報いるのは、そうした健全な懐疑心です。