Pseudorandom Function (PRF): Difference between revisions

From Cryptology City
Jump to navigation Jump to search
No edit summary
No edit summary
Line 10: Line 10:


=== Syntax ===
=== Syntax ===
A Pseudorandom Function (PRF) is a tuple of functions <math>(\mathsf{Gen},\mathsf{Eval})</math>, with respect to a keyspace <math>\mathcal{K}</math>, domain <math>\mathcal{D}</math>, and range <math>\mathcal{D}</math>, such that:
A Pseudorandom Function (PRF) is a tuple of functions <math>(\mathsf{Gen}, F)</math>, with respect to a keyspace <math>\mathcal{K}</math>, domain <math>\mathcal{D}</math>, and range <math>\mathcal{R}</math>, such that:
* <math>\mathsf{Gen}(1^{\lambda}) \to k</math>, takes a security parameter, and outputs a key <math>k\in \mathcal{K}</math>,
* <math>\mathsf{Gen}(1^{\lambda}) \to k</math>, takes a security parameter, and outputs a key <math>k\in \mathcal{K}</math>,
* <math>\mathsf{Eval}(k,x) \to y</math>, takes a key <math>k\in \mathcal{K}</math> and input <math>x\in \mathcal{D}</math>, and outputs an element <math>y\in \mathcal{R}</math>.
* <math>F_k(x) \to y</math>, takes a key <math>k\in \mathcal{K}</math> and input <math>x\in \mathcal{D}</math>, and outputs an element <math>y\in \mathcal{R}</math>.


Generally, we assume that \$|\mathcal{D}|\$ is "large," in the sense that it grows exponentially with the security parameter. If instead <math>|\mathcal{D}|</math> bounded by some polynomial in the security parameter, then the primitive is a "small-domain" PRF.


=== Security ===
=== Security ===
A PRF is ''secure'' if for all efficient <math>D</math>, there exists a negligible function <math>\nu</math>, such that
<math>
\big| \Pr [D^{F_k}(1^{\lambda}) = 1: k\gets \mathsf{Gen}(1^{\lambda})] -
\Pr [D^{R}(1^{\lambda}) = 1 : R \gets \mathcal{F}[\mathcal{D},\mathcal{R}]] \big| \le \nu(\lambda).
</math>




=== Weak Security ===
=== Weak Security ===
A PRF is ''weakly secure'' if for all efficient <math>D</math>, and all polynomials <math>s(\lambda)</math>, there exists a negligible function <math>\nu</math>, such that
<math>
\big| \Pr_{x_i \gets \mathcal{D}} [D((x_i,F_k(x_i))_{i\in [s(\lambda)]}) = 1] -
\Pr_{x_i \gets \mathcal{D}} [D((x_i,R(x_i))_{i\in [s(\lambda)]}) = 1] \big| \le \nu(\lambda).
</math>
The only different in this definition is that we sample $s(\lambda)$ inputs ''at random'' instead of allowing a distinguisher to choose them. This is strictly weaker as a distinguisher could always query their oracle at random locations.
== Relationship to other primitives ==
* [[PRG]]s imply the existence of [[PRF]]s, due to [[ccref#ggm84|[GGM84]]] (this means that [[OWF]]s imply the existence of [[PRF]]s, in combination with [[ccref#hill99|[HILL99]]])
* [[PRF]]s imply the existence of [[PRP]]s, due to [[ccref#lr88|[LR88]]]
There are also many folklore results surrounding pseudorandom functions:
* [[PRP]]s over are [[PRF]]s, due to the switching lemma [[folklore]]


== Sufficient assumptions ==
* [[DDH]] implies [[PRF]]s
* [[LWE]] implies [[PRF]]s




== Relation to other primitives ==
== Variations ==

Revision as of 22:48, 27 June 2024


A Pseudorandom Function (PRF) is a primitive originally defined in [cite].

TOOD: information definition


Formal Definition

Syntax

A Pseudorandom Function (PRF) is a tuple of functions , with respect to a keyspace , domain , and range , such that:

  • , takes a security parameter, and outputs a key ,
  • , takes a key and input , and outputs an element .

Generally, we assume that \$|\mathcal{D}|\$ is "large," in the sense that it grows exponentially with the security parameter. If instead bounded by some polynomial in the security parameter, then the primitive is a "small-domain" PRF.

Security

A PRF is secure if for all efficient , there exists a negligible function , such that


Weak Security

A PRF is weakly secure if for all efficient , and all polynomials , there exists a negligible function , such that

The only different in this definition is that we sample $s(\lambda)$ inputs at random instead of allowing a distinguisher to choose them. This is strictly weaker as a distinguisher could always query their oracle at random locations.


Relationship to other primitives

There are also many folklore results surrounding pseudorandom functions:


Sufficient assumptions


Variations