Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Nguyên hàm của Hàm giả ngẫu nhiên (PRF) cho phép bạn tạo đầu ra ổn định, có độ dài tuỳ ý và giả ngẫu nhiên cho một đầu vào nhất định.
Vì Tink hoạt động trên tập hợp khoá, nên dữ liệu gốc này hiển thị một tập hợp PRF tương ứng thay vì một PRF duy nhất. Các PRF được lập chỉ mục theo mã khoá 32 bit. Bạn có thể dùng tính năng này để xoay vòng khoá dùng để loại bỏ một phần thông tin mà không làm mất mối liên kết trước đó.
PRF có các thuộc tính sau:
Xác định: Việc tính toán PRF cho một đầu vào nhất định sẽ luôn cho ra cùng một đầu ra.
Tính ngẫu nhiên: Không thể phân biệt được kết quả của PRF với các byte ngẫu nhiên.
Chọn loại khoá
Bạn nên dùng HMAC_SHA256_PRF cho hầu hết các trường hợp sử dụng, nhưng bạn cũng có thể dùng các tuỳ chọn khác.
Nhìn chung, những điều sau đây đúng:
HMAC_SHA512_PRF có thể nhanh hoặc không nhanh tuỳ thuộc vào kích thước đầu vào và thông số cụ thể của phần cứng mà bạn sử dụng.
HMAC_SHA512_PRF là chế độ thận trọng nhất có thể được sử dụng cho số lượng tin nhắn trên thực tế không giới hạn.
AES_CMAC_PRF hoạt động nhanh nhất trên các hệ thống hỗ trợ tính năng tăng tốc phần cứng AES-NI.
Đảm bảo bảo mật ở mức tối thiểu
Nếu không biết về khoá thì PRF sẽ không thể phân biệt được với hàm ngẫu nhiên
Bảo mật tối thiểu là 128 bit, cũng trong trường hợp có nhiều người dùng (khi kẻ tấn công không nhắm đến một khoá cụ thể mà nhắm đến bất kỳ khoá nào từ một tập hợp tối đa 232 khoá)
Có ít nhất 16 byte đầu ra
Các trường hợp sử dụng mẫu
Các trường hợp sử dụng cho PRF bao gồm loại bỏ xác định thông tin nhận dạng cá nhân (PII), hàm băm khoá và tạo các mã nhận dạng phụ không cho phép kết hợp với tập dữ liệu gốc mà không biết khoá.
Mặc dù có thể sử dụng PRF để chứng minh tính xác thực của thông báo, nhưng bạn nên sử dụng dữ liệu gốc MAC cho trường hợp sử dụng đó vì PRF hỗ trợ xác minh, tránh các sự cố bảo mật thường xảy ra trong quá trình xác minh và có tính năng tự động hỗ trợ việc xoay khoá. Phương pháp này cũng cho phép các thuật toán không xác định.
[null,null,["Cập nhật lần gần đây nhất: 2025-07-25 UTC."],[[["\u003cp\u003eTink's PRF primitive provides stable, pseudo-random outputs for given inputs, enabling deterministic redaction and keyed hashing functionalities.\u003c/p\u003e\n"],["\u003cp\u003ePRFs in Tink are indexed by key IDs within keysets, allowing for key rotation without association loss.\u003c/p\u003e\n"],["\u003cp\u003eWhile offering strong security, PRFs are deterministic and do not guarantee anonymity, only pseudonymity, requiring careful application in privacy-sensitive systems.\u003c/p\u003e\n"],["\u003cp\u003eTink supports various PRF key types, with HMAC_SHA256_PRF recommended for most use cases and AES_CMAC_PRF potentially offering the best performance on hardware with AES-NI acceleration.\u003c/p\u003e\n"],["\u003cp\u003ePRFs provide a minimum of 128-bit security, even in multi-user environments with large key sets, and can generate at least 16 bytes of output.\u003c/p\u003e\n"]]],["Pseudo-Random Function (PRF) produces stable, pseudo-random outputs for a given input, managed via keysets indexed by a 32-bit key ID for rotation. Key properties include deterministic output and randomness. `HMAC_SHA256_PRF` is recommended, with alternatives like `HMAC_SHA512_PRF` and `AES_CMAC_PRF`. PRF provides pseudonymity, not anonymity, and is secure with at least 128-bit security. Use cases include deterministic PII redaction and creating non-joinable sub-IDs. MAC is recommended for proving authenticity.\n"],null,["# Pseudo-Random Function (PRF)\n\nThe Pseudo-Random Function (PRF) primitive lets you produce stable, arbitrary\nlength, pseudo-random outputs for a given input.\n\nSince Tink operates on [keysets](/tink/design/keysets), this primitive exposes a\ncorresponding set of PRFs instead of a single PRF. The PRFs are indexed by a 32\nbit key ID. This can be used to rotate the key used to redact a piece of\ninformation, without losing the previous association.\n\nPRF has the following properties:\n\n- **Deterministic**: Computing a PRF for a given input will always produce the same output.\n- **Randomness**: The output of a PRF is indistinguishable from random bytes.\n\n| **Caution:** Since PRFs operate deterministically on their input, using a PRF to redact will *not* provide anonymity, but only provide pseudonymity. It can be an important tool to build privacy-aware systems, but has to be used carefully.\n\nChoose a key type\n-----------------\n\nWe recommend using **`HMAC_SHA256_PRF`** for most uses, but there are other\noptions as well.\n\nIn general, the following holds true:\n\n- `HMAC_SHA512_PRF` may or may not be faster depending on your input size and the specifics of the hardware you use.\n- `HMAC_SHA512_PRF` is the most conservative mode that can be used for practically unlimited number of messages.\n- `AES_CMAC_PRF` is fastest on systems that support the [AES-NI](https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-encryption-standard-instructions-aes-ni.html) hardware acceleration.\n\n| **Caution:** While `HMAC_SHA256_PRF`, `HMAC_SHA512_PRF`, and `HKDF_SHA256` behave like a cryptographically secure hash function if the key is revealed, and still provide some protection against revealing the input, `AES_CMAC_PRF` is only secure as long as the key is secure.\n\nMinimal security guarantees\n---------------------------\n\n- Without knowledge of the key, the PRF is indistinguishable from a random function\n- At least 128-bit security, also in multi-user scenarios (when an attacker is not targeting a specific key, but any key from a set of up to 2^32^ keys)\n- At least 16 bytes of output available\n\nExample use cases\n-----------------\n\nUse cases for PRF include deterministic redaction of personally identifiable\ninformation (PII), keyed hash functions, and creating sub-IDs that don't allow\njoining with the original dataset without knowing the key.\n\nWhile PRFs can be used in order to prove authenticity of a message, using the\n[MAC primitive](/tink/mac) is recommended for that use case, as it has support for\nverification, avoiding the security problems that often happen during\nverification, and having automatic support for key rotation. It also allows for\nnon-deterministic algorithms."]]