Skip to content

Proof that GAK has perfect isomorphism

Lymm edited this page Dec 6, 2025 · 6 revisions

Given a GAK cipher with group $G$, hidden subgroup $H$, plaintext alphabet $P$, ciphertext alphabet $C$, plaintext mapping function $p: P \to G$, and ciphertext mapping function $c: G \to C$ which partitions $G$ into right cosets of $H$, the state update and ciphertext output for plaintext letter $a_i \in P$ and state $g_i \in G$ are given by (assuming a left multiplication action):

$g_{i+1} = p(a_i) \circ g_i$

$c_i = c( p(a_i) \circ g_i )$

Since the ciphertext mapping function $c$ partitions the group into right cosets of $H$, $c(g_1) = c(g_2)$ if and only if $g_1, g_2 \in G$ are in the same right coset, i.e. $H g_1 = H g_2$. (This coset notation is a shorthand, $H g$ = { $h g : h \in H$ }.) We say a cipher method has perfect isomorphs if encryption of the same plaintext sequence from every initial state will have all of those ciphertexts as simple substitutions of each other, which means that any repeated letters will repeat in the same pattern. To define this mathematically, for every context $g \in G$ (cumulative state change between two points in the ciphertext) and pair of initial states $a, b \in G$, $c(ga) = c(a)$ if and only if $c(gb) = c(b)$.

If $c(ga) = c(a)$, then $Hga = Ha$ because $c$ partitions the group into right cosets of $H$. Right multiplying by $a^{-1}$ gives $Hg = H$. Right multiplying by $b$ gives $Hgb = Hb$. So $gb$ and $b$ are in the same right coset, therefore $c(gb) = c(b)$. Starting from $c(gb) = c(b)$ implies $c(ga) = c(a)$ in the same way by symmetry.

(Proving the same thing for a right multiplication action with the ciphertext mapping partitioning the group into left cosets goes the same way.)

Therefore, when the ciphertext mapping partitions the group into cosets of some subgroup (with the coset direction being the opposite of the group multiplication action used in the cipher), the GAK cipher produces perfect isomorphs. This proof also applies to GCTAK and CTAK ciphers, since they are special cases of GAK.

Clone this wiki locally