18 Goldwasser and Bellare
However, the above mentioned necessary condition (e.g., P 6= NP) is not a sufficient one. P 6= NP only
implies that the encryption scheme is hard to break in the worst case. It does not rule-out the possibility
that the encryption scheme is easy to break in almost all cases. In fact, one can easily construct “encryption
schemes” for which the breaking problem is NP-complete and yet there exist an efficient breaking algorithm
that succeeds on 99% of the cases. Hence, worst-case hardness is a poor measure of security. Security requires
hardness on most cases or at least average-case hardness. Hence, a necessary condition for the existence of
secure encryption schemes is the existence of languages in NP which are hard on the average. Furthermore,
P 6= NP is not known to imply the existence of languages in NP which are hard on the average.
The mere existence of problems (in NP) which are hard on the average does not suffice. In order to be able to
use such problems we must be able to generate such hard instances together with auxiliary information which
enable to solve these instances fast. Otherwise, the hard instances will be hard also for the legitimate users
and they gain no computational advantage over the adversary. Hence, the existence of secure encryption
schemes implies the existence of an efficient way (i.e. probabilistic polynomial-time algorithm) of generating
instances with corresponding auxiliary input so that
(1) it is easy to solve these instances given the auxiliary input; and
(2) it is hard on the average to solve these instances (when not given the auxiliary input).
We avoid formulating the above “definition”. We only remark that the coin tosses used in order to generate
the instance provide sufficient information to allow to efficiently solve the instance (as in item (1) above).
Hence, without loss of generality one can replace condition (2) by requiring that these coin tosses are hard to
retrieve from the instance. The last simplification of the above conditions essentially leads to the definition
of a one-way function.
2.2 One-Way Functions: Definitions
In this section, we present several definitions of one-way functions. The first version, hereafter referred to
as strong one-way function (or just one-way function), is the most convenient one. We also present weak
one-way functions which may be easier to find and yet can be used to construct strong one way functios,
and non-uniform one-way functions.
2.2.1 (Strong) One Way Functions
The most basic primitive for cryptographic applications is a one-way function. Informally, this is a function
which is “easy” to compute but “hard” to invert. Namely, any probabilistic polynomial time (PPT) algo-
rithm attempting to invert the one-way function on a element in its range, will succeed with no more than
“negligible” probability, where the probability is taken over the elements in the domain of the function and
the coin tosses of the PPT attempting the inversion.
This informal definition introduces a couple of measures that are prevalent in complexity theoretic cryptog-
raphy. An easy computation is one which can be carried out by a PPT algorithm; and a function ν: N → R
is negligible if it vanishes faster than the inverse of any polynomial. More formally,
Definition 2.1 ν is negligible if for every constant c ≥ 0 there exists an integer k
c
such that ν(k) < k
−c
for
all k ≥ k
c
.
Another way to think of it is ν(k) = k
−ω(1)
.
A few words, concerning the notion of negligible probability, are in place. The above definition and discussion
considers the success probability of an algorithm to be negligible if as a function of the input length the suc-
cess probability is bounded by any polynomial fraction. It follows that repeating the algorithm polynomially
(in the input length) many times yields a new algorithm that also has a negligible success probability. In
other words, events which occur with negligible (in n) probability remain negligible even if the experiment