Điểm:15

Bộ bài công bằng có thể chứng minh được sử dụng bởi máy khách và máy chủ

lá cờ cn

Giả sử một máy chủ chơi trò chơi xì dách với một khách hàng, và các lá bài được máy chủ xáo trộn và xử lý. Bản thân việc xáo bài có thể công bằng hoặc không, nhưng điều cần thể hiện là các quân bài được chia không bị thay đổi trong suốt quá trình chơi, tức là: sau khi bắt đầu ván bài, các quân bài trong bộ bài không bí mật có thứ tự thay đổi bởi máy chủ.

Tôi đã nghĩ đến giải pháp sau bằng cách sử dụng mật mã và muốn nhận được một số phản hồi xem giải pháp đó có được chấp nhận đối với hệ thống sản xuất hay không và nếu không thì tại sao không:

Bước 1) Máy chủ sẽ bí mật xáo trộn một bộ bài theo thứ tự nào đó, chẳng hạn như sau (chúng tôi bỏ qua bộ bài cho đơn giản): [3, 9, 2, ..., A]

Sau đó, nó sẽ tạo thông báo sau M:
M = "Xáo bài: [3, 9, 2, ..., A]. Số ngẫu nhiên: A96A...QT3"

Số ngẫu nhiên là một số ngẫu nhiên mà máy chủ tạo ra trong nội bộ và giữ bí mật cho đến khi trò chơi kết thúc. Độ dài của nó sẽ đủ dài để ngăn khách hàng bẻ khóa hàm băm thông qua vũ lực (giả sử nó có độ dài 512 ký tự).

Bây giờ, máy chủ sẽ băm M bằng cách sử dụng sha-256 hoặc một số thuật toán băm đáng tin cậy khác, ví dụ: hash(M)

Bước 2) Trước khi trò chơi bắt đầu, máy chủ sẽ gửi mã băm (M) này cho máy khách, mà máy khách sẽ lưu trữ. Khách hàng không có cách nào biết M từ những gì tôi có thể thu thập được.

Bước 3) Trò chơi bắt đầu, các lá bài được chia theo thứ tự xáo trộn, người chơi đưa ra quyết định và trò chơi cuối cùng kết thúc.

Bước 4) Bây giờ khách hàng muốn biết rằng trò chơi công bằng, nghĩa là: máy chủ không gian lận bằng cách thay đổi các quân bài trong ván bài. Hiện tại, máy chủ sẽ gửi thông báo "M" tới máy khách ở dạng văn bản gốc để hiển thị điều này.

Bước 5) Máy khách chạy hash(M) và thấy nó khớp với hash(M) của nó nhận được ở bước 1.

Đây có phải là một cách hợp lý để chứng minh trò chơi là công bằng, không có máy khách hoặc máy chủ nào có thể gian lận, loại trừ khả năng bản thân việc trộn bài không phải là ngẫu nhiên? Nếu máy chủ thay đổi các quân bài từ lần xáo ban đầu trong quá trình chơi bài, thì khách hàng sẽ thấy điều này ở Bước 5 (thứ tự sẽ khác rõ ràng đối với khách hàng hoặc hàm băm của tin nhắn được gửi ở Bước 4 sẽ khác với cái được gửi ở bước 2). Ngoài ra, chỉ một hàm băm duy nhất được gửi cho mỗi ván bài, vì vậy máy chủ không thể tạo ra một số lượng lớn các hàm băm và gửi chúng một cách riêng biệt, sau đó chọn hàm băm tốt nhất trong suốt quá trình của ván bài.

marstato avatar
lá cờ sa
Bạn sẽ làm gì nếu khách hàng phát hiện ra rằng hàm băm ban đầu và hàm băm Máy khách-Máy tính không bằng nhau?
lá cờ in
@marstato: Sau đó, bạn biết máy chủ đã lừa gạt bạn và (hy vọng) bạn có thể gửi yêu cầu bồi hoàn hoặc điều gì đó tương tự. Nhưng nếu bạn đã sử dụng Bitcoin để thanh toán, bạn có thể không gặp may.
marstato avatar
lá cờ sa
@Kevin ý bạn là gửi lại khoản phí cho những kẻ điều hành máy chủ lừa đảo?
user4779 avatar
lá cờ cn
@marstato Tôi chỉ đơn giản là ngừng chơi trò chơi. Máy chủ bị mang tiếng xấu và khó thu hút khách hàng mới.
lá cờ in
@marstato: Không, với công ty phát hành thẻ tín dụng của bạn, giống như bạn làm với bất kỳ giao dịch gian lận nào khác. Tôi chưa bao giờ nghe nói về việc gửi khoản bồi hoàn với nhà cung cấp. Theo như tôi biết, đó đơn giản không phải là một điều.
Hagen von Eitzen avatar
lá cờ rw
Nếu kích thước hàm băm quá nhỏ, máy chủ có thể bắt đầu với hai lần xáo trộn chỉ khác nhau ở hai thẻ cuối cùng và tìm kiếm sự xung đột giữa các hàm băm của chúng khi thay đổi các bit bổ sung ngẫu nhiên (nghịch lý sinh nhật).Với hai bộ bài như vậy được chuẩn bị sẵn, máy chủ có thể gian lận bằng cách đặt cược ăn cả ngã về thứ tự của hai lá bài cuối cùng ... Do đó, khách hàng nên gửi một số đóng góp ngẫu nhiên để bộ bài ít nhất được đảm bảo không bị cẩu thả chuẩn bị
user4779 avatar
lá cờ cn
@Hagen von Eitzen Hả? Tôi nghĩ rằng sha-256 không có va chạm nào được biết đến. Ngoài ra những gì bạn đang nói sẽ vi phạm hiệu ứng tuyết lở
Toby Speight avatar
lá cờ in
Có bao nhiêu thẻ trong bộ bài? Chỉ một gói 52 lá bài, hay hơn thế nữa?
Điểm:22
lá cờ es

Bạn đã tạo một cam kết băm với một yếu tố mù ngẫu nhiên. Điều này sẽ hiệu quả và yếu tố làm mù là cần thiết để khi các lá bài được tiết lộ dần dần cho người chơi, người chơi không thể tìm hiểu thông tin hữu ích về thông điệp băm để có thể sử dụng vũ phu phần còn lại của bộ bài đã xáo trộn . Hệ số làm mù 128-bit ngẫu nhiên thống nhất là đủ.

Bạn có thể rút gọn điều này hơn nữa bằng cách khai báo 'hạt giống' 128 bit thay vì liệt kê tất cả các vị trí thẻ riêng lẻ, sau đó sử dụng một xáo trộn xác định dựa trên hạt giống này để xáo trộn các thẻ.

Nếu bạn làm điều này bằng cách sử dụng phương pháp xáo trộn được liên kết ở trên, bạn sẽ không cần sử dụng hệ số che khuất. Điều này là do, theo định nghĩa, một CSPRNG có thể chịu được "bài kiểm tra bit tiếp theo". Kiến thức về một số đầu ra của CSPRNG sẽ không giúp việc bắt hạt giống trở nên dễ dàng hơn hoặc mang lại bất kỳ lợi thế nào trong việc đoán các quân bài tiếp theo trong bộ bài.

Vì vậy, $commitment = hash(\texttt{128-bit seed})$.

Lưu ý rằng một sự xáo trộn thực sự ngẫu nhiên sẽ có $log_2(52!)\approxeq225$ các bit entropy, lớn hơn entropy của hạt giống. Tuy nhiên, thậm chí sẽ không thể xác định được một kết quả xáo trộn duy nhất không thể đạt được (trong số khoảng. $2^{225}$ có thể xáo trộn), và do đó, sẽ không phải là một cải tiến nếu có một hạt giống lớn hơn 128 bit.

lá cờ us
Việc xáo trộn xác định dựa trên hạt giống 128 bit có khiến cho phần lớn các lần xáo trộn có thể (~ 225 bit) không thể tiếp cận được không? Dù sao đi nữa, hầu hết các lần xáo trộn có thể sẽ không thành công dù có bao nhiêu lần, nhưng đó có vẻ như là điều sẽ khiến ai đó lo lắng về tính công bằng của việc xáo trộn.
knaccc avatar
lá cờ es
@JacobRaihle Với hạt giống 128 bit, thậm chí sẽ không thể xác định được một kết quả xáo trộn duy nhất không thể đạt được (trong số khoảng $2^{225}$ các lần xáo trộn có thể có). Do đó, nó sẽ gây lỗi cho mọi người giống như cách nó làm phiền mọi người rằng có khả năng ai đó có thể sử dụng vũ lực cùng một hạt giống 128-bit.
lá cờ ma
Tôi nghĩ rằng yếu tố làm mù là một ý tưởng tốt. Nếu bộ bài thô đã được băm, thì nếu tại một thời điểm nào đó, hầu hết các quân bài được tiết lộ cho người chơi, anh ta có thể cưỡng bức các quân bài còn lại.
knaccc avatar
lá cờ es
@Nayuki đó là một điểm tuyệt vời. Tôi đã sửa đổi câu trả lời để chỉ ra rằng hạt giống là cần thiết cho sơ đồ được đề xuất trong câu hỏi. Tuy nhiên, sẽ không cần thiết khi sử dụng hạt ngẫu nhiên xác định, vì điều đó tương đương với việc có thể xác định một số kiến ​​thức về hạt CSPRNG dựa trên đầu ra của CSPRNG.
Jack Aidley avatar
lá cờ cn
Giả sử rằng phần lớn, áp đảo, phần lớn các lần xáo trộn có thể xảy ra không thành vấn đề nghe có vẻ giống như một loại sai lầm sẽ khiến một sòng bạc trực tuyến tốn rất nhiều tiền. Ngay cả những tín hiệu nhỏ nhất cũng có thể làm thay đổi cán cân xác suất.
knaccc avatar
lá cờ es
@JackAidley bạn đang sử dụng cùng một logic khiến mọi người lo lắng rằng khóa ví bitcoin được chọn ngẫu nhiên của họ có thể bị ép buộc. Không có tín hiệu nhỏ nào để nhận biết, vì cùng một lý do toán học là kiến ​​thức về cam kết băm không tạo thành một tín hiệu nhỏ về hạt giống. Về mặt kỹ thuật, đúng là bạn có thể thành công bằng vũ lực, nhưng bạn phải tin rằng điều đó khó xảy ra về mặt thiên văn như thế nào.
Jack Aidley avatar
lá cờ cn
@knacc Bạn không cần phải ép buộc bất cứ điều gì, bạn chỉ cần xác suất của thẻ X theo sau thẻ Y không chính xác là 1/52. Mặc dù 128-bit sẽ khiến mọi thứ khó bị phát hiện hơn nhiều, nhưng với tiền trên đường dây, bất kỳ lỗi nào cũng sẽ bị khai thác. Điều này đã thực sự xảy ra với các sòng bạc trực tuyến đã không sử dụng các thuật toán xáo trộn thích hợp trong quá khứ, mặc dù phải thừa nhận rằng không phải ở cấp độ 128 bit.
knaccc avatar
lá cờ es
@JackAidley với kiến ​​thức về cam kết băm, về mặt kỹ thuật cũng đúng là sau khi một số quân bài đã được xử lý (để tính đến các vấn đề xung đột băm), bạn có thể biết chắc chắn 100% tất cả các quân bài còn lại trong xáo bài sẽ là gì.Tuy nhiên, một khi bạn bắt đầu thực sự định lượng bản chất thiên văn của hành vi cưỡng bức vũ phu có liên quan, bức tranh sẽ hoàn toàn khác.
Điểm:21
lá cờ ar

Để mở rộng câu trả lời của knaccc, thậm chí có thể sử dụng các lược đồ cam kết để chứng minh (đến một điểm) rằng máy chủ không gian lận trong quá trình xáo trộn, ví dụ: như thế này:

  1. Máy chủ chọn một số 128 bit ngẫu nhiên $x$ và một yếu tố mù 128-bit $r_x$, và gửi cam kết $c_x = H(x \,||\, r_x)$ cho khách hàng.
  2. Khách hàng chọn một số 128-bit ngẫu nhiên $y$ và gửi nó đến máy chủ. (Không cần cam kết ở đây.)
  3. Máy chủ băm $x$$y$ với nhau để thu được hạt giống 128 bit $s = H(x \,||\, y)$.
  4. Máy chủ sử dụng $s$ làm hạt giống cho PRNG xác định và sử dụng đầu ra PRNG để xáo trộn bộ bài một cách xác định.
  5. Trò chơi được chơi với bộ bài xáo trộn.
  6. Vào cuối trò chơi, máy chủ tiết lộ $x$$r_x$, cho phép khách hàng xác minh rằng bộ bài đã được xáo chính xác (và không bị sửa đổi sau khi được xáo).

Lưu ý rằng máy chủ có thể vẫn gian lận, theo mốt, bằng cách kiểm tra bộ bài đã xáo trộn sau bước 4 và hủy bỏ trò chơi (ví dụ: giả vờ rằng kết nối đã bị ngắt) nếu nó không thích bộ bài. Do đó, khách hàng nên nghi ngờ về các máy chủ thường xuyên ngắt kết nối giữa bước 2 và 5, hoặc thậm chí trong trò chơi ở bước 5. Lý tưởng nhất là nên có cách để khách hàng yêu cầu máy chủ tiếp tục trò chơi bị gián đoạn tại bất kỳ thời điểm nào, và một khách hàng nên được rất nghi ngờ các máy chủ từ chối làm như vậy.

(Việc triển khai một cách an toàn cơ chế tiếp tục như vậy theo cách hoạt động ngay cả khi máy chủ gặp sự cố và quên trạng thái trò chơi có vẻ khả thi, nhưng có thể nằm ngoài phạm vi của câu trả lời này. Hãy hỏi một câu hỏi mới nếu bạn quan tâm.)

Cũng lưu ý rằng giá trị mù $r_x$ không thực sự cần thiết ở đây, vì $x$ bản thân nó đã có đủ entropy để khiến cam kết không thể thực hiện được. Trên thực tế, có thể an toàn hơn một chút nếu bỏ qua $r_x$ và chỉ làm $x$ chính nó dài 256 thay vì dài 128 bit.

Độ dài bit của $y$$s$ cũng có thể được tăng lên nếu muốn; 128 bit chỉ là mức tối thiểu an toàn và thiết thực. Không có điểm nào trong việc thực hiện $s$ dài hơn tổng chiều dài của $x$$y$ cùng nhau, mặc dù.

Toby Speight avatar
lá cờ in
Điều này tốt - nó giúp giải quyết vấn đề trong câu hỏi (được giải quyết gọn gàng bằng cách giả sử thuật toán băm _trusted_) về khả năng máy chủ có thể tạo xung đột băm nếu nó được tự do chọn hạt giống của chính mình.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.