cipher_maps
Resources & Distribution
Source Code
Package Registries
Universal function Bernoulli approximators
Oblivious maps
A set is an unordered collection of distinct elements, typically from
some implicitly understood universe. A countable set is a finite set
or a countably infinite set. A finite set has a finite number of
elements, such as
,
and a countably infinite set can be put in one-to-one correspondence
with the set of natural numbers,
.
The cardinality of a set
,
denoted by
,
is a measure on the number of elements in the set, e.g.,
.
A map represents a many-to-one relationship. A map that associates
elements in
to elements in
has a type denoted by
.
For a map of type
,
we denote
the input and
the output. Typically, it is relatively easy to find which output is
associated with a given input, but the inverse operation, determining
which inputs are associated with a given output is computationally
harder. Of course, this is not necessarily the case, and mathematically
the map is just a one-to-many relation over
.
For instance, Table depicts a function over a finite domain of
elements, where each input
is associated with a single output
,
i.e.,
.
The input does not need to be a simple set like natural numbers, but rather can be any type of set, such as a set of pairs as given in .
Since we are interested in constructing maps in computer memory, we must have some way to represent them. One technique may be given by the following table.
The oblivious map is given by the following definition.
\begin{definition} The oblivious Bernoulli map is a specialization of
the Bernoulli map. We denote an oblivious map of
by
where
is the subset of the computational basis of
which
provides. An oblivious Bernoulli map satisifes the following conditions:
The function
is a Bernoulli map of
.
If an element of
is not in the domain of definition,
is a random oracle over
A particular mapping
may only be learned by applying
to
.
In an oblivious map, a mapping (row in the table) is only learned upon request.
Observe that
is an oblivious value. Typically, we are also interested in functions in
which the domain and codomain also represent oblivious values, i.e.,
where
,
,
and
.
It may be the case that
is a set of oblivious integers that, say, only supports testing equality
and addition. Of course, once we have addition, we may also implement
multiplication, powers, and many other operations.
By , the space complexity of the Bernoulli map with an error rate
is given by the following theorem.
Abstract data type
A type is a set and the elements of the set are called the values of the type. An abstract data type is a type and a set of operations on values of the type. For example, the integer abstract data type is the set of all integers and a set of standard operations (computational basis) such as addition, subtraction, and multiplication.
A data structure is a particular way of organizing data and may
implement one or more abstract data types. An immutable data structure
has static state; once constructed, its state does not change until it
is destroyed. Let
model the concept of a Bernoulli approximation of
.
Then,
Returns a value in
.
.
Returns the error rate of
applied to
, i.e.,
for every
.