擬似ランダム関数(PRF)

擬似ランダム関数(PRF)プリミティブを使用すると、特定の入力に対して安定した任意の長さの擬似ランダム出力を生成できます。

Tink は鍵セットで動作するため、このプリミティブは単一の PRF ではなく、対応する PRF のセットを公開します。PRF は、32 ビットの鍵 ID でインデックス化されます。これを使用すると、以前の関連付けを失わずに、情報を秘匿化するために使用される鍵をローテーションできます。

PRF には次の特性があります。

  • 確定的: 特定の入力に対して PRF を計算すると、常に同じ出力が生成されます。
  • ランダム性: PRF の出力は、ランダムバイトと区別できません。

鍵の種類を選択する

通常は HMAC_SHA256_PRF を使用することをおすすめしますが、他の方法を使用することもできます。

一般に、次のことが当てはまります。

  • HMAC_SHA512_PRF は、入力サイズと使用するハードウェアの仕様によって、高速の場合とそうでない場合があります。
  • HMAC_SHA512_PRF は最も控えめなモードであり、メッセージの数を実質的に無制限に使用できます。
  • AES_CMAC_PRF は、AES-NI ハードウェア アクセラレーションをサポートするシステムで最速になります。

最小限のセキュリティ保証

  • 鍵がわからなければ、PRF はランダム関数と区別がつかない
  • マルチユーザー シナリオでも 128 ビット以上のセキュリティ(攻撃者が特定の鍵をターゲットにしておらず、最大 232 の鍵のセットから任意の鍵をターゲットにしている場合)
  • 16 バイト以上の出力が利用可能

サンプル ユースケース

PRF のユースケースには、個人を特定できる情報(PII)の決定論的秘匿化、キー付きハッシュ関数、鍵がわからないときに元のデータセットとの結合を許可しないサブ ID の作成などがあります。

PRF はメッセージの信頼性を証明するのに使用できますが、そのようなユースケースには MAC プリミティブを使用することをおすすめします。検証のサポート、検証中に頻繁に発生するセキュリティ問題の回避、鍵のローテーションの自動サポートがあるためです。また、非確定的アルゴリズムも使用できます。