Общий вход: натуральные числа и
в двоичном представлении,
,
.
1) Первый шаг доказывающего. Используя случайные биты, генерирует
, случайный квадратичный вычет по модулю
, и отправляет его проверяющему.
2) Первый шаг проверяющего. получает
.
проверяет выполняется ли
, если нет, то он останавливается.
генерирует случайный бит
и отправляет его доказывающему.
3) Второй шаг доказывающего. получает
. Если
, то
использует случайные биты и генерирует
, случайный квадратный корень из
по модулю
, если
, то
использует случайные биты и генерирует
, случайный квадратный корень из
по модулю
.
отравляет
проверяющему.
4) Второй шаг проверяющего. получает
.
проверяет выполняется ли
и или
и
, или
и
, если нет, то он останавливается.
5) и
повторяют шаги 1) - 4)
раз.
Проверяющий принимает доказательство, если он завершит итераций шагов 1) - 4). В противном случае, отвергает.