用語集 · 更新日
SHA-256(ハッシュ関数)
SHA-256 は SHA-2 ファミリーの暗号学的ハッシュ関数で、あらゆるファイルを改ざん検知に使える固有の256ビットの指紋に変換します。
「SHA-256(ハッシュ関数)」とは?
SHA-256 は、短いパスワードでも200ページの PDF でも、あらゆる入力を256ビットの値(通常は16進数64文字で表記)に変換する暗号学的ハッシュ関数です。米国国立標準技術研究所(NIST)が公表した SHA-2 ファミリーに属し、ソフトウェア、セキュリティ、電子署名の分野で最も広く使われているハッシュアルゴリズムの一つです。
この関数には、役に立ついくつかの性質があります。決定的であり、同じ入力からは必ず同じ出力が得られます。一方向であり、出力から入力を復元することは現実的にできません。そして衝突耐性があり、同じ SHA-256 ハッシュ値を持つ2つの異なるファイルを見つけることは、現在の技術では計算上不可能とされています。入力をほんの少し変えるだけで、まったく無関係に見える出力になります。
小さな会社の経営者を例に考えましょう。彼女は仕入先との契約に署名し、最終 PDF とその SHA-256 値を受け取ります。数か月後、同僚が共有ドライブからコピーを転送してきます。彼女はそのファイルをハッシュ計算ツールや検証ページにかけ、結果を比べます。文字列が同じならファイルも同じです。少しでも違えば、たとえ画面上では見えない変更でも、コピーは改変されています。
最大の誤解は、SHA-256 が暗号化だというものです。そうではありません。暗号化は鍵があれば元に戻せ、データを秘密にするためのものです。ハッシュ化は元に戻せず、何も隠しません。元の文書は読めるままです。また、SHA-256 自体には本人を示す情報は含まれません。証明できるのはファイルが変わっていないことであって、誰が署名したかではありません。
署名の流れの中で、SHA-256 は最終ファイルの文書ハッシュを作るために使われます。そのハッシュ値は監査証跡に記録されたり、完了証明書に印字されたり、PKI に基づくデジタル署名では秘密鍵で署名されて改ざん検知シールになったりします。MD5 や SHA-1 といった古い関数は、実用的な衝突攻撃が示されたため、この用途にはもう安全とはみなされていません。SHA-256 が文書の完全性確認の標準になったのはそのためです。macOS、Windows、Linux の標準コマンドで、自分で計算することもできます。
私たちの見解:SHA-256 は、いい意味で退屈な技術です。よく研究され、無料で使え、ほぼすべての OS が対応しています。ベンダーが SHA-256 に触れたときに聞くべきなのは、使っているかどうかではなく、ハッシュ値を自分で確認させてくれるかどうかです。
eSignSimple は、完了した PDF ごとに SHA-256 ハッシュ値を計算して完了証明書に表示し、誰でもファイルが署名済みの原本と一致するかを確認できる公開の /verify ページを用意しています。
「SHA-256(ハッシュ関数)」の具体例
eSignSimple で購入契約書の最後の署名者が署名を終えると、私たちは最終 PDF の SHA-256 ハッシュ値(3a7bd3e2... のような64文字の文字列)を計算し、完了証明書に印字します。1年後、買い手の弁護士がそのファイルを /verify にかけると一致が表示され、1バイトも変わっていないことが証明されます。
関連する用語
- デジタル署名: 公開鍵暗号と電子証明書を使って、文書と署名者を技術的に結びつけ、署名後の改変を検知できるようにする仕組みのこと。
- ハッシュ値(デジタル指紋): 文書の内容から計算される固定長の値。1バイトでも変わると値がまったく変わるため、改ざんの検知に使われる。
- 改ざん検知シール: 改ざん検知シールとは、PDF に付ける暗号技術によるシールで、署名後に文書が少しでも変更されたかどうかを示すものです。
- 公開鍵基盤(PKI): PKI(公開鍵基盤)とは、認証局、電子証明書、鍵ペアからなり、公開鍵を実在の本人と結び付ける仕組みです。
よくある質問
SHA-256 は暗号化ですか?
いいえ。SHA-256 はハッシュ関数であり、暗号化ではありません。暗号化は正しい鍵があれば元に戻せますが、ハッシュ化は一方向です。SHA-256 は固定長256ビットの指紋を作り、入力が1ビットでも変われば指紋はまったく別物になります。文書が変わっていないことの証明には最適ですが、内容を隠す役には立ちません。
SHA-256 はいまも安全ですか?
はい。SHA-256 は NIST の FIPS 180-4 で標準化されており、デジタル署名、証明書、ソフトウェアの完全性確認で広く使われ続けています。実用的な衝突攻撃や原像攻撃は知られていません。MD5 や SHA-1 などの古い関数は衝突耐性が破られているため、現代のシステムは SHA-256 かそれ以上の強度の関数を使っています。
SHA-256 ハッシュ値は自分で計算できますか?
macOS や Linux ではターミナルで shasum -a 256 file.pdf を、Windows ではコマンドプロンプトで certutil -hashfile file.pdf SHA256 を実行します。結果を eSignSimple の完了証明書にあるハッシュ値と比べるか、/verify ページにファイルをアップロードするだけでも確認できます。