Điểm:3

Làm cách nào để tạo các giá trị băm có thể tạo lại?

lá cờ lk

Gần đây, tôi tình cờ xem được một video trên YouTube giải thích về một trò chơi đánh bạc. Nói một cách đơn giản, chúng tạo ngẫu nhiên một hệ số nhân cho khoản đầu tư ban đầu của bạn. Hệ số nhân này được cho là được hỗ trợ bởi một giá trị băm. Sòng bạc cũng cung cấp cho khách hàng giá trị băm ban đầu của trò chơi đầu tiên và giá trị băm của mỗi lần quay số nhân tiếp theo. Khách hàng phải xác thực hàm băm được tạo ngẫu nhiên bằng cách áp dụng nó cho hàm Python sau:

def get_prev_game(hash_code):
    m = hashlib.sha256()
    m.update(hash_code.encode("utf-8"))
    trả về m.hexdigest()

Tất nhiên, việc đưa hàm băm kết quả vào chức năng này lặp đi lặp lại sẽ dẫn đến hàm băm trò chơi ban đầu được đưa ra.

Bây giờ câu hỏi của tôi: Vì điều này get_prev_game về cơ bản là băm giá trị băm lặp đi lặp lại cho đến khi đạt đến giá trị băm đầu tiên, tôi thực sự tự hỏi giá trị băm tiếp theo ở phía sòng bạc được tạo ra như thế nào? Điều này không có nghĩa là họ sẽ phải tạo một hàm băm mới khớp với hàm băm trước đó sao? Tôi nghĩ rằng điều này được cho là thực sự khó giải quyết vấn đề. Có lẽ tôi đang thiếu một cái gì đó. Cảm ơn cho bất kỳ lời giải thích trước!

Tái bút: Tôi không biết mình có được phép đăng video YouTube hay không nhưng đó là /watch?v=F1HA7e3acSI

Chỉnh sửa: Tôi đang thêm chức năng tính hệ số nhân. Rõ ràng về mặt thống kê rằng trò chơi này không thể thắng được. Tôi quan tâm nhiều hơn đến cách họ tạo ra các giá trị băm mới và cách hoạt động của quá trình quay lui các giá trị băm trước đó.

def get_result(game_hash):
    hm = hmac.new(str.encode(game_hash), b'', hashlib.sha256)
    hm.update(salt.encode("utf-8"))
    h = hm.hexdigest()
    nếu (int(h, 16) % 33 == 0):
        trả lại 1
    h = int(h[:13], 16)
    e = 2**52
    trả về (((100 * e - h) / (e-h)) // 1) / 100.0
Zac67 avatar
lá cờ vu
Kế hoạch băm đó phải chứng minh điều gì?
FabZbi avatar
lá cờ lk
Hệ số nhân được tính từ hàm băm. Vì vậy, nó đang cố gắng chứng minh tính toàn vẹn của việc chọn các hệ số đó sao cho chúng không được lựa chọn thuận lợi bởi và cho sòng bạc.
Zac67 avatar
lá cờ vu
Nếu sòng bạc có thể "ngẫu nhiên" chọn một giá trị bắt đầu thì nó có thể làm như vậy để chuỗi băm phù hợp với nhu cầu của họ một cách thuận tiện.
FabZbi avatar
lá cờ lk
@Zac67 Mình thêm chức năng tính hệ số rồi. Không còn nghi ngờ gì nữa, trò chơi này sẽ không bao giờ có lợi cho khách hàng bằng cách tính toán giá trị kỳ vọng như được giải thích trong video nhưng tôi quan tâm hơn đến việc tạo hàm băm và quay lui.
Điểm:4
lá cờ in

Đây chỉ đơn giản là một cam kết băm của Sòng bạc và đây không phải là vấn đề về hình ảnh trước.

Trước khi tất cả các trò chơi bắt đầu, sòng bạc chọn một $hạt giống$ và băm nó $2M$ lần. để cho $H^{s}(m)$ đại diện cho băm $m$ $s$-thời gian xếp tầng

$$H^{s}(m) = \underbrace{H(H(\ldots (H(m) ))}_{s-times}$$

Trò chơi đầu tiên bắt đầu với $H^{2000000}(hạt giống)$

Khi trò chơi thứ 2 bắt đầu với $H^{1999999}(hạt giống)$ và họ nói điều này;

  • Hãy nhìn xem, chúng tôi không sử dụng một trò chơi gieo hạt ngẫu nhiên, chúng tôi đang thực hiện cam kết của mình. Kiểm tra điều này bằng cách băm trò chơi này và thấy rằng kết quả là hàm băm của trò chơi trước.

$$H^{2000000}(hạt) = H(H^{1999999}(hạt))$$ hoặc chung chung cho $i$trò chơi thứ (bỏ qua $2000000-i+1$ cho rõ ràng);

$$H^{i}(hạt) = H(H^{i-1}(hạt))$$

Do đó, họ có thể thuyết phục một số người chơi cờ bạc chứ không phải những người viết mật mã thực sự vì việc lựa chọn hạt giống ban đầu không dựa trên tính ngẫu nhiên thực sự theo Công chứng viên.

Họ có thể chỉ cần tìm kiếm một hạt giống luôn có lợi cho sòng bạc, thay vì dựa vào tính ngẫu nhiên thống nhất dự kiến ​​của các hàm băm mật mã. Tính ngẫu nhiên đồng nhất chỉ đơn giản cho chúng ta biết rằng có 2 triệu giá trị băm xếp tầng mà sòng bạc sẽ luôn thua. Đơn giản là họ sẽ loại bỏ những trường hợp đó.

Người dùng không thể tìm thấy giá trị băm của các trò chơi chưa chơi vì SHA-256 có mức kháng chi phí hình ảnh trước khoảng $2^{256}$. Họ chỉ có thể xác minh rằng cam kết đang diễn ra.

Lý do chính khiến các sòng bạc sử dụng các cam kết băm này là để đảm bảo với người chơi rằng khi họ chơi, hành động của họ không ảnh hưởng đến xác suất chiến thắng của họ. Đặc biệt là sự thay đổi của cổ phần. Họ đảm bảo với bạn rằng khi bạn mở trò chơi, bạn được chỉ định một chuỗi 2 triệu số nhân và máy tính của bạn sẽ kiểm tra sau mỗi lần quay để đảm bảo rằng chúng vẫn tuân theo cam kết của mình.

Bằng cách này, nếu sau 100 lần đặt cược ở mức 5 đô la, bạn quyết định giảm mức đặt cược xuống 25 xu và trong lần thử đầu tiên, bạn nhận được một hệ số nhân khổng lồ, thì ít nhất bạn cũng biết rằng họ không cố ý làm điều đó!

FabZbi avatar
lá cờ lk
Đây là hoàn hảo! Tôi hiểu rồi.. mục đích duy nhất của cơ chế này là cho khách hàng thấy rằng họ không chọn hệ số nhân một cách ngẫu nhiên mà tuân theo cam kết của hạt giống đầu tiên của họ, điều này có thể kiểm chứng được. Nhưng hạt giống ban đầu vẫn có thể có lợi cho sòng bạc.Nhưng với chức năng `get_result` của họ, mọi người có thể tính toán giá trị kỳ vọng là thua lỗ bất kể câu hỏi về tính ngẫu nhiên thực sự của hạt giống đầu tiên. Nhưng điều này trả lời câu hỏi của tôi, cảm ơn bạn!
kodlu avatar
lá cờ sa
Vâng. và về cơ bản đây không phải là *âm mưu của Lamport* sao?
kelalaka avatar
lá cờ in
@kodlu Lamport còn hơn cả [cái này](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmedia.geeksforgeeks.org%2Fwp-content%2Fuploads%2F20200602205839%2FLamport1.png&f =1&nofb=1), ở đó, chúng tôi có nhiều cam kết bit. Tui bỏ lỡ điều gì vậy?
kodlu avatar
lá cờ sa
không, bạn không phải, bạn nói đúng, tôi đã bỏ lỡ một cái gì đó.

Đă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.