Score:3

จะสร้างแฮชที่สร้างใหม่ได้อย่างไร?

ธง lk

ฉันเพิ่งสะดุดกับวิดีโอ YouTube ที่อธิบายเกมคาสิโน พูดง่ายๆ ก็คือ พวกมันสุ่มสร้างตัวคูณสำหรับการลงทุนครั้งแรกของคุณ ตัวคูณนี้ควรได้รับการสนับสนุนจากค่าแฮช คาสิโนยังให้ค่าแฮชเริ่มต้นของเกมแรกแก่ลูกค้าและค่าแฮชของการหมุนตัวคูณที่ตามมาทุกครั้ง ลูกค้าควรตรวจสอบแฮชที่สร้างขึ้นแบบสุ่มโดยนำไปใช้กับฟังก์ชัน Python ต่อไปนี้:

def get_prev_game (hash_code):
    ม = hashlib.sha256()
    m.update (hash_code.encode ("utf-8"))
    ส่งคืน m.hexdigest()

การใส่แฮชที่เป็นผลลัพธ์ลงในฟังก์ชันนี้ซ้ำแล้วซ้ำอีกควรส่งผลให้แฮชของเกมเริ่มต้นที่กำหนด

ตอนนี้คำถามของฉัน: ตั้งแต่นี้ get_prev_game ฟังก์ชั่นโดยทั่วไปคือการแฮชค่าแฮชซ้ำแล้วซ้ำอีกจนกว่าจะถึงค่าแฮชแรก ฉันสงสัยจริง ๆ ว่าค่าแฮชถัดไปที่ด้านข้างของคาสิโนสร้างขึ้นได้อย่างไร นี่ไม่ได้หมายความว่าพวกเขาจะต้องสร้างแฮชใหม่ที่ตรงกับแฮชก่อนหน้าใช่ไหม ฉันคิดว่านี่น่าจะเป็นเรื่องยากที่จะแก้ปัญหา บางทีฉันอาจจะพลาดอะไรไป ขอบคุณสำหรับคำอธิบายล่วงหน้า!

PS: ฉันไม่รู้ว่าฉันได้รับอนุญาตให้โพสต์วิดีโอ YouTube หรือไม่ แต่ /watch?v=F1HA7e3acSI

แก้ไข: ฉันกำลังเพิ่มฟังก์ชันสำหรับคำนวณตัวคูณ เห็นได้ชัดว่าเกมนี้ไม่สามารถชนะได้ ฉันสนใจวิธีที่พวกเขาสร้างแฮชใหม่และการย้อนกลับของแฮชก่อนหน้าทำงานอย่างไร

def get_result (game_hash):
    hm = hmac.new(str.encode(game_hash), b'', hashlib.sha256)
    hm.update (salt.encode ("utf-8"))
    ชั่วโมง = hm.hexdigest()
    ถ้า (int(h, 16) % 33 == 0):
        กลับ 1
    ชั่วโมง = int(ชม[:13], 16)
    e = 2**52
    กลับ (((100 * e - h) / (e-h)) // 1) / 100.0
Zac67 avatar
vu flag
โครงการแฮชนั้นควรพิสูจน์อะไร
FabZbi avatar
lk flag
ตัวคูณได้รับการคำนวณจากแฮช ดังนั้น จึงพยายามพิสูจน์ความสมบูรณ์ของการเลือกตัวคูณเหล่านั้น เพื่อไม่ให้ถูกเลือกโดยและสำหรับคาสิโน
Zac67 avatar
vu flag
หากคาสิโนสามารถ "สุ่ม" เลือกค่าเริ่มต้นได้ ก็สามารถทำได้เพื่อให้แฮชเชนเหมาะสมกับความต้องการของพวกเขา
FabZbi avatar
lk flag
@ Zac67 ฉันได้เพิ่มฟังก์ชันการคำนวณตัวคูณ ไม่ต้องสงสัยเลยว่าเกมนี้จะไม่เป็นที่ชื่นชอบของลูกค้าด้วยการคำนวณมูลค่าที่คาดหวังตามที่อธิบายไว้ในวิดีโอ แต่ฉันสนใจในการสร้างแฮชและการย้อนรอยมากกว่า
Score:4
ธง in

นี่เป็นเพียงข้อผูกพันในการแฮชโดยคาสิโน และนี่ไม่ใช่ปัญหาภาพล่วงหน้า

ก่อนที่เกมทั้งหมดจะเริ่มขึ้น คาสิโนจะเลือก ก $เมล็ดพันธุ์$ และแฮชมัน $2M$ ครั้ง. อนุญาต $H^{s}(ม)$ แสดงถึงการแฮช $m$ $s$- เวลาในการเรียงซ้อน

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

เกมที่ 1 เริ่มต้นด้วย $H^{2000000}(เมล็ดพันธุ์)$

เมื่อเกมที่ 2 เริ่มขึ้น $H^{1999999}(เมล็ดพันธุ์)$ และพวกเขาพูดแบบนี้

  • ดูสิเราไม่ได้ใช้เกมสุ่ม เรามีความมุ่งมั่น ตรวจสอบสิ่งนี้โดยแฮชเกมนี้และดูว่าผลลัพธ์คือแฮชของเกมก่อนหน้า

$$H^{2000000}(เมล็ดพันธุ์) = H(H^{1999999}(เมล็ดพันธุ์))$$ หรือทั่วไปสำหรับ $i$เกมที่ ( ละเว้น $2000000-i+1$ เพื่อความชัดเจน);

$$H^{i}(เมล็ด) = H(H^{i-1}(เมล็ด))$$

ดังนั้นพวกเขาอาจโน้มน้าวใจนักพนันบางคน แต่ไม่ใช่นักเข้ารหัสที่แท้จริง เนื่องจากการเลือกเมล็ดพันธุ์เริ่มต้นไม่ได้ขึ้นอยู่กับการสุ่มที่แท้จริงภายใต้ทนายความ

พวกเขาสามารถค้นหาเมล็ดที่สนับสนุนคาสิโนเสมอ แทนที่จะพึ่งพาการสุ่มแบบเดียวกันของแฮชการเข้ารหัส การสุ่มแบบเดียวกันนั้นบอกเราว่ามีแฮชเรียงซ้อน 2M ที่คาสิโนจะแพ้เสมอ พวกเขาจะกำจัดกรณีเหล่านั้น

ผู้ใช้ไม่สามารถค้นหาแฮชของเกมที่ไม่ได้เล่น เนื่องจาก SHA-256 มีค่าความต้านทานภาพล่วงหน้าประมาณ $2^{256}$. พวกเขาสามารถยืนยันได้ว่าความมุ่งมั่นนั้นดำเนินต่อไป

เหตุผลหลักที่คาสิโนใช้ข้อผูกมัดในการแฮชเหล่านี้คือเพื่อให้ผู้เล่นมั่นใจว่าเมื่อพวกเขาเล่น การกระทำของพวกเขาจะไม่ส่งผลกระทบต่อโอกาสในการชนะ โดยเฉพาะอย่างยิ่งการเปลี่ยนแปลงของเงินเดิมพัน พวกเขารับประกันว่าเมื่อคุณเปิดเกม คุณจะได้รับลำดับตัวคูณ 2M และคอมพิวเตอร์ของคุณจะตรวจสอบหลังจากการหมุนแต่ละครั้งเพื่อให้แน่ใจว่ายังคงเป็นไปตามคำมั่นสัญญา

ด้วยวิธีนี้ หากหลังจากเดิมพัน 100 ครั้งที่ 5 ดอลลาร์ คุณตัดสินใจลดเงินเดิมพันลงเหลือ 25 เซนต์ และในการลองครั้งแรก คุณจะได้รับตัวคูณจำนวนมาก อย่างน้อยคุณก็รู้ว่าพวกเขาไม่ได้ตั้งใจ!

FabZbi avatar
lk flag
นี่มันสมบูรณ์แบบ! ฉันเห็น.. จุดประสงค์เดียวที่กลไกนี้มีคือการแสดงให้ลูกค้าเห็นว่าพวกเขาไม่ได้เลือกตัวคูณแบบสุ่ม แต่ทำตามความมุ่งมั่นของเมล็ดพันธุ์แรกซึ่งสามารถตรวจสอบได้ แต่เมล็ดพันธุ์เริ่มต้นยังคงเป็นที่โปรดปรานของคาสิโนแต่ด้วยฟังก์ชัน `get_result ` ทุกคนสามารถคำนวณค่าที่คาดไว้ว่าจะขาดทุน โดยไม่คำนึงถึงคำถามของการสุ่มที่แท้จริงของเมล็ดแรก แต่นี่ตอบคำถามของฉัน ขอบคุณ!
kodlu avatar
sa flag
ใช่. และนี่ไม่ใช่ *แผนการของแลมพอร์ต* ใช่ไหม
kelalaka avatar
in flag
@kodlu Lamport เป็นมากกว่า [มากกว่านี้](https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmedia.geeksforgeeks.org%2Fwp-content%2Fuploads%2F20200602205839%2FLamport1.png&f =1&nofb=1) ที่นั่น เรามีข้อผูกมัดหลายอย่าง ฉันพลาดอะไรไปรึเปล่า?
kodlu avatar
sa flag
ไม่ คุณไม่ใช่ คุณพูดถูก ฉันพลาดบางอย่างไป

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา