ハッシュ
読み: はっしゅ
ハッシュ (ハッシュ関数) は、任意の長さの入力データを固定長の出力値 (ハッシュ値、ダイジェスト) に変換する関数です。同じ入力からは常に同じハッシュ値が得られますが、ハッシュ値から元のデータを逆算することは計算上不可能です (一方向性)。また、入力が 1 ビットでも変わるとハッシュ値が大きく変化します (雪崩効果)。代表的なアルゴリズムに SHA-256、SHA-3 があります。
QR コードの周辺技術でハッシュが活躍する場面は複数あります。QR コード決済では、取引データのハッシュ値を電子署名と組み合わせることで、決済情報の改ざんを検知します。EU のデジタル COVID 証明書でも、ワクチン接種データのハッシュに対して電子署名を施し、QR コードに格納していました。
TOTP (ワンタイムパスワード) の生成にもハッシュが使われています。秘密鍵と現在時刻を HMAC-SHA1 (ハッシュベースのメッセージ認証コード) で処理し、6 桁の認証コードを導出します。QR コードで秘密鍵を受け渡し、ハッシュ関数で認証コードを生成する、という連携です。
チェックサムもハッシュの一種と捉えられます。QR コードのフォーマット情報やバージョン情報は BCH 符号で保護されていますが、これもデータの整合性を検証するという点でハッシュと同じ目的を持っています。「データが正しいことを短い値で検証する」という原理は、QR コードの内部構造からアプリケーション層まで一貫して使われている基盤技術です。