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