Общий вход: $ f$ - однонаправленная и гомоморфная функция над группой $ Z_n$, $ X=f(z)$ - для некоторого $ z\in Z_n$.

1) Первый шаг доказывающего. $ P$ выбирает случайным образом $ k \in_U Z_n$ и вычисляет число $ c=f(k)$. $ P$ отправляет $ c$ проверяющему.

2) Первый шаг проверяющего. $ V$ выбирает наугад $ b\in \{0,1\}$ и отправляет его доказывающему.

3) Второй шаг доказывающего. $ P$ получает $ b$. $ P$ вычисляет $ r = k+zb\pmod n$ и отправляет его проверяющему.

4) Второй шаг проверяющего. $ V$ проверяет выполнение условия $ f(r)=c$, если $ b=0$, или $ f(r)=c-X$, если $ b=1$. Если оно не выполняется, $ V$ останавливает проверку и отвергает доказательство.

5) $ P$ и $ V$ повторяют шаги 1) - 4) $ m$ раз.

Проверяющий принимает доказательство, если он завершит $ m$ итераций шагов 1) - 4). В противном случае, отвергает.