Hãy bắt đầu với những gì tôi muốn nói về đèn hiệu ngẫu nhiên mật mã (RB).
RB là một giao thức giữa một số bên cùng nhau tạo ra một giá trị ngẫu nhiên sao cho:
- các bên này không tin tưởng lẫn nhau
- kết quả có thể kiểm chứng công khai (bất kỳ ai cũng có thể xác minh kết quả được tạo chính xác bởi giao thức)
- Đầu ra không thiên vị: Không bên nào có thể tạo ra sự thiên vị trong kết quả.
- kết quả là không thể đoán trước: không ai có thể dự đoán đầu ra tiếp theo từ đầu ra hiện tại.
Giải pháp trực quan đầu tiên là cam kết và tiết lộ, không hoạt động!
mọi người chọn một giá trị ngẫu nhiên bí mật $s_i$ và cam kết với nó, sau đó trong vòng thứ hai, họ tiết lộ bí mật của mình.
Đầu ra là ngẫu nhiên, không thể đoán trước và có thể kiểm chứng công khai, nhưng không phải là không thiên vị.
Bên độc hại có thể chỉ cần đợi cho đến khi mọi người tiết lộ bí mật của mình, sau đó cô ấy quyết định xem điều này có tốt cho cô ấy tiết lộ hay không và cô ấy có thể rút lại việc tiết lộ bí mật của mình.
Sau đó, có một số giải pháp dựa trên chức năng trì hoãn ngẫu nhiên hoặc mật mã ngưỡng (đối với tôi giải pháp dễ hiểu nhất là giải pháp dựa trên chữ ký BSL ngưỡng, từ công ty Dfinity).
Bây giờ nơi nào trong mật mã này có thể được sử dụng? tại sao Oracle ngẫu nhiên (+ Fiat-Shamir) là không đủ?
Tôi hiểu rằng điều này có thể hữu ích trong các ứng dụng mà thử thách không được biết đến trong các dấu thời gian đặc biệt.
Ví dụ: nếu bộ lưu trữ dữ liệu muốn chứng minh rằng tại dấu thời gian $t$ nó vẫn có dữ liệu, nó nên sử dụng thử thách do RB tạo ra ở dấu thời gian $t$ và đưa ra một bằng chứng dựa trên thử thách này. Mặt khác, nó có thể tự tạo thử thách (ví dụ: bằng RO), xóa dữ liệu và đánh dấu thời gian $t$ tuyên bố rằng nó có dữ liệu vì nó có thể tạo ra bằng chứng dựa trên dữ liệu và thách thức.
Nhưng nếu không có dấu thời gian, tôi thực sự không thấy bất kỳ điểm nào để sử dụng RB thay vì RO. Tôi nghĩ đối với các ứng dụng không có dấu thời gian, RO thực tế hơn.
Vì vậy, là sự hiểu biết của tôi chính xác? Tôi vẫn thấy một số bài báo đang sử dụng đầu ra của RB làm thử thách (hoặc chỉ để tạo ngẫu nhiên) thay vì sử dụng RO (trong khi không có khái niệm về thời gian) và tôi không biết tại sao!