ドメイン分離
暗号プリミティブの用途ごとに固有のラベルを付け、ある文脈の出力が別の文脈の出力として通用しないようにする手法。
プロトコルは、暗号鍵、MAC鍵、署名、トランスクリプトのハッシュなど、多くの用途で同じハッシュ関数やKDFを使うのが普通だ。ラベルがないと、ある目的で計算した値が別の目的でも有効になってしまうことがあり、攻撃者はそうした偶然を見つけるのがうまい。対策は、ハッシュや導出を行う前に、用途を表す固定文字列を混ぜることである。
HKDFにはまさにこのためのinfoパラメータがあり、TLS 1.3はすべてのラベルの先頭に"tls13 "を付け、SHA-3のcSHAKEはカスタマイズ文字列を取り、BLAKE3のderive_keyは、ドキュメントがグローバルに一意にするよう求めるコンテキスト文字列を要求する。数バイトのコストで、後から見つけるのがほぼ不可能なバグの一群を排除できる。