algebraic_cipher_types
Algebraic cipher types
Resources & Distribution
Algebraic Cipher Types
Before we can define the cipher functor, we need to define the algebraic structures that we will be working with. The cipher functor defines a way to lift a monoid into a cipher monoid.
Groups and Monoids
A group is a set, , together with an operation that combines any two elements and to form another element . To qualify as a group, the set and operation, , must satisfy four requirements known as the group axioms:
Closure: For all , the result of the operation, , is also in .
Associativity: For all , $(ab)c = a(bc)$.
Identity element: There exists an element such that, for every element , the equation $ea = ae = a$ holds. Such an element is unique, and thus one speaks of the identity element.
Inverse element: For each , there exists an element such that $ab=ba=ee$ is the identity element.
A monoid relaxes the requirement of a group by removing the requirements of an inverse element.
Cipher Functor
In the cipher functor, we lift a monoid $(S,)c_A(S,)$, which is defined in the following way:
is a subset of .
maps to representations of , i.e., maps element to the -th representation of .
satisfies and for any and .
Typically, is generated by some other function parameterized by a secret and a fixed bit length for each representation.
has an operation that is given by the following axioms:
- Associativity: For all , $s’((c_A xc_A y)c_A z) = s’(c_A x(c_A yc_A z))$.