チェックサムエラーとは?暗号検出ガイド
チェックサムエラーとは、データが数学的テストに失敗したことを意味します。暗号通貨の世界では、このテストはほとんどのユーザーが想像するよりもはるかに脆弱です。イーサリアムのEIP-55は、約4000回に1回程度のタイプミスを検出します。ビットコインのBase58Checkは、その約1000倍強力です。Bech32はさらに強力です。しかし、これらのチェックサムはいずれも、2025年に個人ウォレットから7億1300万ドルを実際に流出させた攻撃からウォレットを保護することはできません。なぜなら、クリップボードやトランザクション履歴にある悪意のあるアドレス自体が、有効なチェックサム通過文字列だからです。これがチェックサムエラーとは何か、暗号通貨ウォレットがエラーを表示する理由、そしてチェックサム通過が安全性の証明にならない理由です。
暗号化におけるチェックサムエラーに関する簡潔な回答
チェックサムエラーは、アドレス、ファイル、またはシードフレーズが組み込みの整合性テストに一致しなかったことをユーザーに通知します。ウォレット、取引所、またはインストーラーは、ビットが反転した、文字が間違って入力された、またはデータが改ざんされたなどの理由で動作を拒否します。暗号通貨では、このエラーはタイプミスや偶発的な破損を検出します。攻撃者が制御する完全に入力されたアドレスは検出されません。2025年に記録された最大のウォレット損失は、12月に発生した5,000万USDTでしたが、これは被害者が完全に有効なチェックサムを持つアドレスをコピーした際に、そのアドレスが単に詐欺師のものであったことが原因でした。
チェックサムとは実際には何なのか(そして何ではないのか)
チェックサムは、はるかに大きなパッケージ、つまり既知の計算によって数バイトにハッシュ化されたデータブロックに対する小さな領収書のようなものだと考えてください。送信者は元のチェックサムを添付します。受信者は同じ計算を実行して新しいチェックサムを取得し、比較します。一致すればデータの整合性が保たれます。不一致は、どこかでデータが破損していることを意味します。RAM のビットが反転したり、ダウンロードが途中で中断されたり、文字が間違って入力されたりする可能性があります。ウォレットやインストーラーは、この不一致をチェックサムエラーとして検出します。計算されたチェックサムの値が、元のデータに添付された期待値 (送信者が公開した保存値) と一致しませんでした。基本的なエラー検出と整合性チェックが実行されたため、データエラーは通過しませんでした。
機械的には、古典的なチェックサムは暗号ではなく算術です。最も単純な方式では、データをワードに分割し、1の補数加算を実行します(1988年の由緒あるインターネットTCP/IPチェックサムで使用されている「1の補数」トリック)。もう少し高度なものとしては、縦方向パリティ、フレッチャーのアルゴリズム、CRC(巡回冗長検査)があり、これらはすべて互いに近縁関係にあります。巡回冗長検査は高速で、伝送エラーの検出に適しています。現代のファイル整合性においては、Adler-32(高速、暗号なし)またはMD5やSHA(低速、はるかに強力)が主流です。ほとんどのユーザーは、`sha256sum`、`md5sum`、HashCheckなどのソフトウェアツールを使用して実際に検証を実行します。
境界線はここにあります。チェックサムは、データがバイトレベルで誤って破損または改ざんされていないことを証明できます。それ以上のことはできません。誰がデータを作成したかを証明することはできません。暗号ハッシュであるSHA-256はCRCよりもはるかに強力です。それでも作成者を証明することはできません。作成者を証明するには、発行者が秘密鍵でハッシュに署名する必要があります。暗号通貨ユーザーは、この2つを常に混同しています。「アドレスがチェックサム検証に合格した」ことは、「アドレスが正しい人物のものである」こととは異なります。誰でも有効なイーサリアムまたはビットコインアドレスを生成できます。資金を制御できるのは秘密鍵の所有者だけです。チェックサム検証は、アドレスが正しく構成されていることを確認します。誰のウォレットを指しているか?それは別の質問であり、答えも異なります。

暗号チェックサムアルゴリズムの仕組み:EIP-55、Base58Check、Bech32
個人向け仮想通貨市場には、主に3つのスキームが存在し、それぞれ異なる優先事項に基づいて設計されている。
EIP-55は、イーサリアムの大文字小文字を区別しないチェックサムです。Vitalik Buterin と Alex Van de Sande が 2016 年 1 月 14 日に提案しました。これは、アドレスを小文字に変換し、小文字に変換した文字列を Keccak-256 でハッシュ化し、そのハッシュのビットに従って 16 進数 (A~F) を大文字に戻すことで機能します。通常のアドレスでは 15 個の 16 進数文字のみが大文字小文字を反転できるため、このスキームはおよそ 15 ビットの有効なチェックビットを提供します。2018 年 3 月に提案された EIP-1191 は、チェーン ID を追加することで EIP-55 を拡張し、イーサリアムと Rootstock のようなフォーク チェーン上のアドレス チェックサムが衝突しないようにします。
Base58Check は、Bitcoin のレガシー スキームです。エンコードされたアドレスの末尾に 4 バイトのチェックサムを追加します。このチェックサムは、バージョン バイトとペイロードの 2 倍 SHA-256 の最初の 4 バイトとして計算されます。P2PKH アドレスの「1」プレフィックスは 0x00 バージョン バイトに対応し、P2SH アドレスの「3」プレフィックスは 0x05 に対応します。Base58 アルファベット自体では、視覚的に紛らわしい 0、O、I、l が削除されます。Base58Check のチェックサム ロジックの実装は、単一の SHA-256 呼び出しとそれに続く 4 バイトの比較です。
Bech32 (BIP-173)は、Pieter Wuille と Greg Maxwell によって 2017 年に考案された SegWit アドレス方式です。その 6 文字の BCH コードは、最大 4 文字に影響するすべてのエラーを検出することを保証し、より長い破損の場合でも検出されないエラー率を 10 億分の 1 未満に抑えます。2020 年に発見された微妙な事実 (最後の「p」の前に「q」を挿入または削除することでチェックサムを維持できること) が、BIP-350 Bech32m の開発を促し、現在 Taproot (witness バージョン 1) はこの Bech32m を使用しています。
| スキーム | 年 | 住所例 | サイズを確認してください | 典型的なタイプミス検出 |
|---|---|---|---|---|
| EIP-55 / EIP-1191 | 2016年/2018年 | `0xAbCd...EfGh` | 約15ビット | 約99.97%(4000回に1回失敗) |
| Base58Check (P2PKH) | 2009 | `1A1zP1...` | 32ビット | 約99.99999998% |
| Base58Check (P2SH) | 2012 | `3J98t1...` | 32ビット | 約99.99999998% |
| Bech32 (SegWit v0) | 2017 | `bc1q...` | 約30ビット | 4文字エラーで99.999999999%以上 |
| Bech32m(主根) | 2020 | `bc1p...` | 約30ビット | 同じ、qp挿入を修正 |
この表は、記事の中で最も重要な数字のペアです。これらは設計予算として捉え、セキュリティ保証として扱わないでください。
EIP-55が4,000件に1件しかタイプミスを検出しない理由
EIP-55仕様では、失敗率が明示的に記載されています。イーサリアムアドレスのランダムなタイプミスがチェックサムを通過する確率は0.0247パーセント、つまり約4,049分の1です。これはバグではありません。15ビットの有効なチェックビットによって得られるものです。この方式は2016年に改修され、既存の40文字の16進アドレス形式との後方互換性を保つように設計されています。互換性のコストは検出力に代わるものです。
実際のウォレットフローでは、通常はそれで問題ありません。アドレスを一度入力または貼り付けたユーザーは、うっかりミスをしてもほぼ確実に検出されます。一方、同じ不正なアドレスを10回連続で貼り付けたユーザーは、アドレスが有効であるため、毎回チェックサムを通過してしまいます。ビットコインのBase58Checkとの1000倍もの差、そしてさらにBech32へのステップアップこそが、本格的なウォレットUXにおいて、イーサリアムのアドレス検証をプロトコルの責任ではなくユーザーの責任としている理由です。
暗号化以外のチェックサムエラー:WinRAR、BIOS、ファームウェア、ハードドライブ
Googleで「チェックサムエラー」と検索する人のほとんどは、暗号通貨のユーザーではない。彼らはWinRARを見つめていたり、起動画面でフリーズしたPCや、不安そうなNASを見つめていたりする。同じ言葉を使っていても、その状況は全く異なる。
WinRARは典型的な例です。.rarファイルをダウンロードして解凍すると、CRC不一致のポップアップが表示されます。アーカイブが破損しているのです。原因は通常、ダウンロードの中断、不安定なWi-Fiハンドオーバー、ディスクの不良セクタ、あるいは転送中にマルウェアがファイルに影響を与えたなど、ありふれたものです。ソースから再ダウンロードしてください。CHKDSKを実行してください。どうしても復元する必要がある場合は、WinRARの「破損したファイルを保持する」オプションを使用すると、コンテンツの部分的なコピーを抽出できます。
PC起動時のBIOSまたはCMOSチェックサムエラーは、ほぼ間違いなくマザーボード上のCR2032コイン型電池の消耗が原因です。ファームウェアのアップデート失敗によりNVRAMが破損した場合もあります。また、ユーザーがRAMモジュールを抜き取ったために、保存されているハードウェアの指紋情報が一致しなくなった場合もあります。電池を交換し、デフォルト設定をロードしてください。これでマシンが起動します。
ZFSとBtrfsは、ハードディスクが保存されているハッシュ値と一致しないブロックを返すと、チェックサムエラーを発生させます。これらのエラーはまさに設計意図どおりであり、潜伏していたビット腐敗が最終的に表面化することを意味します。
仮想通貨ユーザーにとって最も不安になるのは、ハードウェアウォレットのファームウェアチェックサムエラーです。Trezorのブートローダーは起動のたびにファームウェアの署名を再検証します。Ledgerのセキュアエレメントも同様です。インストール時に「無効な署名」またはLedgerの「不明なエラー(0x6984)」が表示されるのは、デバイスが認識しているファームウェアがルートキーが期待するものと一致しないことを大声で警告しているのです。すぐに停止し、プラグを抜き、ベンダーのURLから再ダウンロードしてください。この警告を無視してクリックした人は、サプライチェーン攻撃の入り口をくぐり抜けたことになります。
チェックサムエラーが改ざんを意味する場合と、そうでない場合
この記事の重要な洞察は、チェックサムはランダムなデータ破損をうまく検出できるものの、攻撃者が意図的に有効なアドレスを選択した場合には何の効果もないという点だ。
Chainalysisの2026暗号通貨犯罪レポートによると、2025年の暗号通貨盗難総額は34億ドルで、そのうち15億ドルはBybitへのハッキングによるものです。個人ウォレットでは、約8万人の被害者が約15万8000件の事件で7億1300万ドルを失いました。これらの損失のほとんどは、入力ミスによる無効なチェックサムが原因ではありません。なぜなら、取引所やウォレットは入力フィールドでそのようなチェックサムを拒否するからです。損失は、有効なチェックサムでは防げない2つの攻撃によるものです。
1つ目はアドレスポイズニングです。攻撃者は、被害者の頻繁な取引相手のアドレスの最初と最後の数文字を共有するように設計された、新しく生成されたアドレスから、ごくわずかなダストトランザクションを送信します。次に被害者がトランザクション履歴からアドレスをコピーすると、偽装されたアドレスがリストの一番上に表示されます。アドレスのチェックサムは完全に有効です。ウォレットは緑色で表示されます。資金は攻撃者に送金されます。カーネギーメロン大学が引用したChainalysisのデータによると、2025年にはアドレスポイズニングの試みが2億7000万件発生し、1700万人が潜在的な被害者になると予測されています。2025年12月20日にトレーダーが5000万ドル相当のUSDTを失った事件は、被害者が少額のテストトランザクションを送信してから約26分後に発生しました。テストは被害者を救うことはできませんでした。なぜなら、ポイズニングされたアドレスはすでに履歴に埋め込まれていたからです。
2つ目はクリップボードハイジャッカーです。カスペルスキーが報告したGitVenomキャンペーンのようなマルウェアは、クリップボードにコピーされた暗号通貨アドレスを攻撃者が制御するアドレスに密かに置き換えます。GitVenomだけでも、2024年末までにブラジル、トルコ、ロシアの被害者全体で約48万5000ドルの損失が見込まれています。ここでも、置き換えられたアドレスは有効なチェックサムを持っています。ウォレットにはフラグを立てる要素は何もありません。重要なデータ、つまり高額送金の宛先は、改ざんや破損が一切なく、同等に有効なものに置き換えられたため、整合性レイヤーをすり抜けてしまいます。
| 2025年の攻撃 | 機構 | チェックサムがそれを阻止したのでしょうか? |
|---|---|---|
| 住所毒殺事件(5,000万USDT、2025年12月20日) | 取引履歴に偽装された類似アドレスが存在する | いいえ、偽装されたアドレスは有効なEIP-55チェックサムを持っています |
| クリップボードハイジャッカー(GitVenom、約48万5千ドル) | マルウェアはコピーしたアドレスを代替します | いいえ、代替住所は有効です |
| ChatGPTを悪用したMEVボット詐欺(30ETH以上、被害者100人以上) | AIが推奨する契約で財布が空っぽになる | いいえ、チェックサムには契約の意図を検証する手段は何もありません。 |
| AIを利用した詐欺行為全般 | 従来のスキームよりも4.5倍収益性が高い | いいえ、ソーシャルエンジニアリングに依存しており、タイプミスに対処するものではありません。 |
緑色のチェックサムは、アドレスが正しく構成されていることを意味します。しかし、それは必ずしもあなたのアドレスであることを意味するものではありません。この違いこそ、仮想通貨ユーザーがこの記事から学ぶべき最も重要な点です。
BIP-39シードフレーズ:有効な単語でもチェックサムに失敗する理由
BIP-39 シードフレーズにもチェックサムがあり、復元時に人々を驚かせます。この方式では、ウォレットのエントロピーに対する SHA-256 の最後の数ビットをフレーズの最後の単語にエンコードします。12 単語のシードには 4 ビットのチェックサムしかありません。24 単語のシードには 8 ビットあります。12 単語の場合、最後の単語をランダムに選択しても、検証に合格するのは 16 分の 1 回程度です。「シードは正しいはずなのにウォレットが拒否する」という状況は、圧倒的にフレーズの前の部分にタイプミスがあるか、2,048 単語の BIP-39 リストから間違った単語を選択していることが原因です。
ハードウェア側のセキュリティはより厳格です。TrezorとLedgerは、ホスト側ではなくセキュアエレメントコードを介して、起動のたびにファームウェアの署名を再検証します。署名の不一致は改ざんとみなされ、ファームウェアの実行は拒否されます。これは正しい動作です。ハードウェアウォレットでファームウェアのチェックサムまたは署名エラーが発生した場合は、不具合ではなく警告として対処する必要があります。

チェックサムエラーの検証と修正方法:ベストプラクティス
チェックリストは短い。ほとんどのウォレットや取引所で共通している。
イーサリアム アドレス。相手の検証済みチャンネル (Telegram DM ではなく、公開されているプロフィール) からコピーします。貼り付けます。ウォレットが検証するまで待ちます。テスト トランザクションとして $1 を送信します。確認を待ちます。その後、全額を送信します。Kraken は、デフォルトで保存されたすべての ETH アドレスを EIP-55 形式で保存します。Binance と Coinbase は、ブロードキャストがチェーンに到達する前に、送信ステップで無効なチェックサム入力をバウンスします。MetaMask はデフォルトで EIP-55 を使用し、手動で編集されたアドレスに対して警告を表示します。以前はすべて小文字も受け入れていましたが、GitHub の複数のオープン イシューで何年も苦情が寄せられていました。
ビットコインアドレス。相手方が対応している場合は、従来の「1...」や「3...」形式よりもBech32形式(「bc1...」)を推奨します。エラー検出の強度が大幅に向上し、アドレス形式の誤読も起こりにくくなります。
ファイルのダウンロード。ウォレットバイナリ、ハードウェアウォレットファームウェアイメージ、Linux ISO。SHA-256ハッシュをローカルで計算してください。ダウンロードリンクの横に印刷されている値ではなく、発行元が署名した値と比較してください。ダウンロードページを制御する中間者攻撃者は、両方の値をすり替えることができます。実際に使用する検証済みのファイルは必ずバックアップしておきましょう。USBメモリや印刷物に正常なコピーがあれば、後でエラーを検出するのがはるかに簡単になります。
ハードウェアウォレットのファームウェアのチェックサムまたは署名エラーです。バイパスしないでください。ベンダーのドキュメントに記載されているURLから再ダウンロードしてください。別のケーブルを試してください。別のUSBポートを試してください。Ledger LiveまたはTrezor Suiteを再起動してください。エラーが続く場合は、ベンダーのサポートにメールでお問い合わせください。サードパーティのフォーラムで「fix Ledger 0x6984」を検索すると、攻撃者が待ち構えています。
覚えておくべき重要な点が一つあります。チェックサムが合格したということは、データが誤って破損していないことを証明するものであり、送信しようとしたデータが正しいことを証明するものではありません。