Đây là một bên hai bên ($P$, người pha chế và $C$ bộ chọn) giao thức với $4$ các bước (và ba vòng giao tiếp, nếu ZKP không tương tác).
Hai bên có thông tin chung là khóa công khai $pk$ và các cặp $(a_i, b_i)$.
Người chuẩn bị cũng biết khóa bí mật $sk$.
Trong bước đầu tiên, người chuẩn bị $P$ áp dụng hoán vị ngẫu nhiên của các cặp và mã hóa (theo $pk$) mỗi cặp phối hợp và gửi kết quả cho người chọn và tạo ZKP rằng kết quả này đã được tính toán một cách trung thực.
Trong bước thứ hai, người chọn chọn một chỉ mục $\ell$, và làm mù bản mã $c_\ell$ (là mã hóa của một trong các $a$). Họ gửi bản mã mù này $e$và tạo một ZKP, nó đã được tạo một cách trung thực.
Trong bước thứ ba, trình chuẩn bị tính toán quá trình giải mã $a$ của $e$ và đầu ra (có nghĩa là, đó là kết quả cho anh ta). Sau đó, ông gửi chuỗi $b$ với sự ngẫu nhiên theo thứ tự hoán vị mà anh đã chọn trước đó.
Và cuối cùng ở bước cuối cùng, bộ chọn lấy phần tử đơn giản của cùng một chỉ mục của $c$ trước đó anh ta bị mù (anh ta có thể, vì anh ta biết chỉ số anh ta đã chọn), kiểm tra xem nó có phải là chỉ số tốt bằng cách mã hóa lại nó (vì anh ta cũng nhận được tính ngẫu nhiên), rồi xuất ra kết quả tương ứng. $b$.
Ở cuối giao thức $P$ biết một $a$, và $C$ một $b$ tương quan với nhau (chúng tương ứng với một cặp $(a_i, b_i)$), Và cũng không $P$, cũng không $V$ có thể buộc một cặp cụ thể được chọn (nếu chỉ một cặp trung thực, cặp đó sẽ được chọn ngẫu nhiên đồng nhất).