Funkcja pseudolosowa (PRF)

Podstawowy element funkcji Pseudolosowy (PRF) umożliwia generowanie stabilnych, dowolnej długości i pseudolosowych danych wyjściowych dla danego wejścia.

Ponieważ Tink działa na zestawach kluczy, ten element podstawowy ujawnia odpowiedni zestaw PRF zamiast pojedynczego PRF. PRF są indeksowane według 32-bitowego identyfikatora klucza. Tej opcji można używać do rotacji klucza używanego do usuwania informacji bez utraty poprzedniego powiązania.

PRF ma te właściwości:

  • Deterministyczny: obliczenie PRF dla danych wejściowych zawsze daje te same dane wyjściowe.
  • Losowość: danych wyjściowych PRF nie można odróżnić od losowych bajtów.

Wybierz typ klucza

W większości przypadków zalecamy korzystanie z HMAC_SHA256_PRF, ale są też inne opcje.

Ogólnie rzecz biorąc, następujące stwierdzenia są prawdziwe:

  • Działanie HMAC_SHA512_PRF może być szybsze lub nie, w zależności od rozmiaru wejściowego i specyfikacji używanego sprzętu.
  • HMAC_SHA512_PRF to najbardziej zachowawczy tryb, którego można używać w przypadku praktycznie nieograniczonej liczby wiadomości.
  • AES_CMAC_PRF działa najszybciej w systemach obsługujących akcelerację sprzętową AES-NI.

Minimalne gwarancje bezpieczeństwa

  • Bez znajomości klucza nie można odróżnić PRF od funkcji losowej
  • Co najmniej 128-bitowe zabezpieczenia, także w przypadku wielu użytkowników (gdy atakujący nie kieruje reklamy na konkretny klucz, ale dowolny klucz z zestawu maksymalnie 232 kluczy).
  • Co najmniej 16 bajtów danych wyjściowych

Przykłady użycia

Przypadki użycia PRF obejmują deterministyczne usuwanie informacji umożliwiających identyfikację osoby, kluczowane funkcje haszujące oraz tworzenie identyfikatorów podrzędnych, które nie pozwalają na łączenie się z pierwotnym zbiorem danych bez poznania klucza.

Chociaż PRF mogą być używane do potwierdzania autentyczności wiadomości, w tym przypadku zalecamy użycie elementu podstawowego MAC, ponieważ zapewnia on obsługę weryfikacji, pozwala uniknąć problemów z zabezpieczeniami często występujących podczas weryfikacji i oferuje automatyczną obsługę rotacji kluczy. Umożliwia też korzystanie z algorytmów niedeterministycznych.