La función primitiva de función seudoaleatoria (PRF) te permite producir salidas pseudoaleatorios estables, arbitrarias para una entrada determinada.
Dado que Tink opera en conjuntos de claves, esta primitiva expone un conjunto correspondiente de PRF en lugar de una única. Las PRF se indexan con un ID de clave de 32 bits. Esto se puede usar para rotar la clave que se usa para ocultar cierta información, sin perder la asociación anterior.
PRF tiene las siguientes propiedades:
- Determinista: El cálculo de una PRF para una entrada determinada siempre producirá el mismo resultado.
- Aleatorización: El resultado de una PRF no se puede distinguir de los bytes aleatorios.
Elige un tipo de clave
Recomendamos usar HMAC_SHA256_PRF
para la mayoría de los usos, pero también hay otras opciones.
En general, se cumple lo siguiente:
HMAC_SHA512_PRF
puede o no ser más rápido según el tamaño de entrada y los detalles del hardware que usas.HMAC_SHA512_PRF
es el modo más conservador que se puede usar para una cantidad prácticamente ilimitada de mensajes.AES_CMAC_PRF
es más rápido en sistemas que admiten la aceleración de hardware AES-NI.
Garantías de seguridad mínimas
- Sin conocimiento de la clave, la PRF no se puede distinguir de una función aleatoria
- Seguridad de al menos 128 bits, también en situaciones multiusuario (cuando un atacante no apunta a una clave específica, sino a cualquier clave de un conjunto de hasta 232 claves)
- Al menos 16 bytes de resultados disponibles
Casos de uso de ejemplo
Los casos de uso de PRF incluyen la ocultación determinista de la información de identificación personal (PII), funciones hash con clave y la creación de IDs secundarios que no permiten unirse con el conjunto de datos original sin conocer la clave.
Si bien las PRF se pueden usar para demostrar la autenticidad de un mensaje, para ese caso de uso se recomienda usar el tipo primitivo de MAC, ya que es compatible con la verificación, evita los problemas de seguridad que ocurren con frecuencia durante la verificación y cuenta con compatibilidad automática para la rotación de claves. También permite algoritmos no determinísticos.