Hãy xem xét tình huống sau:
Chúng tôi có hai đại lý, Một và b.
b cần phải chứng minh rằng họ biết một bí mật để Một, mà không chia sẻ bí mật thực sự.
ví dụ.: Một cần một cách để loại bỏ trùng lặp những bí mật mà họ nhận được từ b, nhưng họ không cần biết những bí mật thực sự. (và b không muốn họ biết)
Hãy nghĩ về nó giống như chia sẻ một hàm băm của bí mật đó, ngoại trừ: đó là một nguồn entropy rất nhỏ, thấp (có khoảng 1 tỷ giá trị có thể). Điều này có nghĩa là một hàm băm đơn giản sẽ dễ bị tấn công từ điển.
Hiện nay, b có thể thêm một "muối" ẩn vào mỗi bí mật mà họ chia sẻ và sau đó băm bí mật đó, và điều đó sẽ gây khó khăn hơn cho Một để thực hiện một cuộc tấn công từ điển. Theo như tôi có thể nói, điều này sẽ "giải quyết" vấn đề cho trường hợp 1-1.
Tuy nhiên, bây giờ hãy giới thiệu tác nhân thứ ba, C. C đang gửi cùng một loại bí mật tới Một. b và C không thể chia sẻ bí mật của họ với nhau.
C cuối cùng có thể gửi "bản sao" bí mật mà b có, mặc dù họ không biết những gì b có trên cuối của họ.
Một, tất nhiên, bây giờ cần loại bỏ trùng lặp không chỉ các bí mật từ b, mà còn từ C.
Muối ẩn sẽ không hoạt động nữa vì bây giờ C sẽ cần biết muối để có thể tạo ra các giá trị băm giống nhau. Nếu không thì Một sẽ không thể khử trùng lặp giữa các khóa từ b và C. Tuy nhiên, có một muối chung có nghĩa là C có thể thực hiện một cuộc tấn công từ điển vào b hoặc ngược lại.
Có thể Một, b và C đạt được một thỏa thuận nơi b và C có thể chia sẻ "bằng chứng" của họ với Một, theo cách mà Một có thể khử trùng lặp chúng, nhưng không ai có thể tiết lộ bí mật của nhau?
Nếu vậy, điều này có thể được khái quát hóa cho bất kỳ số lượng người tiêu dùng/nhà sản xuất nào không?
Không phải là một chuyên gia về mật mã (tôi thực sự chỉ biết những điều cơ bản nhất), tôi không chắc liệu mình có đang sử dụng các thuật ngữ thích hợp ở đây hay không. Hãy cho tôi biết nếu tôi có thể làm rõ bất kỳ của nó. Ngoài ra, đây không phải là bài tập về nhà hay bất cứ thứ gì tương tự - mặc dù nó được thúc đẩy bởi một vấn đề cụ thể mà tôi đã đọc gần đây, nhưng đây chủ yếu chỉ là sự tò mò. Một lời giải thích sơ bộ về lý do tại sao điều đó là không thể (trong trường hợp không thể) chắc chắn là đủ đối với tôi. Tương tự đối với mô tả ngắn gọn về một thuật toán đã biết, ngay cả khi chỉ là tên - với hướng thích hợp, tôi có thể tự mình thực hiện một số nghiên cứu.
(Chỉ cần rõ ràng nếu nó chưa phải là: Một, b và C không tin nhau)
(Giả tạo) ví dụ
Alice và Bob muốn bán tem cho một nhà sưu tập tem. Hãy nghĩ về một con tem giống như một chuỗi 7 ký tự chỉ có các ký tự viết thường và người sưu tập tem không thể tự chế tạo chúng.
Người sưu tập tem sẽ mua bất kỳ con tem nào mà họ hiện không có. Tuy nhiên, nó sẽ không mua con tem ngay lập tức: nó sẽ đợi xem có bao nhiêu người bán có nó để có thể mua con tem với giá thấp nhất.
Vì vậy, trước khi gửi con tem thực, Alice (hoặc Bob) phải gửi "giá thầu" cho người sưu tập để họ có thể kiểm tra xem họ đã có con tem chưa hay đã có người khác cung cấp con tem đó. Họ không thể gửi con tem thực với giá thầu đó, nếu không người sưu tập sẽ có nó miễn phí, điều này chẳng vui vẻ gì với bất kỳ ai. Người sưu tập cần biết giá thầu được đóng dấu "nào", ngay cả khi họ không biết chuỗi 7 ký tự thực tế - nếu không sẽ không thể so sánh giá thầu.