Score:2

ตรวจสอบการทำนายอนาคต

ธง us
svm

ฉันกำลังพยายามหาอัลกอริทึมเพื่อพิสูจน์ว่ามีคนรู้ข้อความลับสั้นๆ (เช่น การทำนายอนาคต) ก่อนที่จะเปิดเผยในที่สุด

ตัวอย่างเช่น:

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

ฉันได้ร่างโครงร่างที่มีลักษณะดังนี้:

  1. อลิซสร้าง ยาว สตริงสุ่ม $r_s, r_p$.

  2. อลิซมาส่ง $hash(r_s . r_p . T)$, และ $r_p$ ถึงบ๊อบ

    ที่นี่ $T$ คืออุณหภูมิที่คาดการณ์ไว้ (ตัวเลขสองหลัก)

  3. วันรุ่งขึ้นอลิซส่ง $r_s$, และ $T$ ให้กับบ็อบ เพื่อให้เขาสามารถตรวจสอบได้ว่าอลิซรู้จัก $T$ ในขั้นตอนที่ 2 การพิสูจน์ว่าอลิซได้ทำนายอนาคต

ไม่เป็นไรหรือคุณช่วยชี้ให้ฉันเห็นวิธีแก้ปัญหาที่ดีกว่านี้ได้ไหม ถ้าใช้ได้ควรมีคุณสมบัติพิเศษอย่างไร $แฮช$ ฟังก์ชันมีถ้ามี ยกเว้นการรักษาความปลอดภัยด้วยการเข้ารหัส?

Score:3
ธง es

รูปแบบของคุณใช้งานได้ แต่ไม่จำเป็นต้องมี $r_p$.

ถ้าคุณถอด $r_p$สิ่งสำคัญคือต้องตกลงล่วงหน้าว่าความยาวของบิตของปัจจัยที่ทำให้ไม่เห็นของคุณมีความยาวเท่าไร $r_s$ จะเป็นเพื่อให้ความมุ่งมั่นไม่อ่อนลงโดยการตัดสินใจลบหรือเพิ่มบิตที่จุดเริ่มต้นของ $T$ ในขณะที่เพิ่มหรือลบบิตให้กับสิ่งที่คุณอ้างในภายหลังว่าเป็นค่าของปัจจัยที่ทำให้ไม่เห็น $r_s$.

จากนั้นอลิซก็ส่ง $แฮช(r_s \mathbin\| T)$ (ที่ไหน $\mathbin\|$ หมายถึงการต่อข้อมูล) และเปิดเผยในภายหลัง $r_s$ และ $T$. เพียงใช้แฮชที่ปลอดภัยในการเข้ารหัสซึ่งมีระดับความปลอดภัยอย่างน้อย 128 บิต เช่น SHA256 ใช้อย่างน้อย 128 บิตสำหรับ $r_s$ และตรวจสอบให้แน่ใจว่าเป็นการสุ่มอย่างเท่าเทียมกัน เพื่อป้องกันไม่ให้ Bob บังคับค่าของ $r_s$ เพื่อค้นหาคำทำนายของคุณล่วงหน้า

คุณอาจกังวลเพิ่มเติมว่า Bob สามารถสร้างอนุพันธ์ของความมุ่งมั่นของ Alice ได้ ซึ่งเป็นไปได้หากแฮชมีความเสี่ยงต่อการโจมตีแบบขยายความยาว

สถานการณ์คือ: อลิซยอมรับคำทำนายและประกาศคำมั่นสัญญา จากนั้นบ็อบก็ประกาศคำมั่นสัญญาตามคำมั่นสัญญาที่อิงตามระยะการโจมตีโดยขยายระยะเวลาออกไปโดยทันที โดยมีบางสิ่งต่อท้ายคำทำนายของอลิซ บ็อบไม่สามารถเปิดเผยความมุ่งมั่นของเขาได้จนกว่าอลิซจะเปิดเผยเธอโดยเปิดเผยปัจจัยที่ทำให้ไม่เห็น การปรากฏตัวของปัจจัยที่ทำให้ไม่เห็นซ้ำกันจะน่าสงสัย แต่ถ้ามีคนให้ความสนใจ

คุณสามารถหลีกเลี่ยงทั้งภัยคุกคามนี้และหลีกเลี่ยงความจำเป็นในการยอมรับความยาวบิตของปัจจัยที่ทำให้ไม่เห็นได้ล่วงหน้าโดยใช้หนึ่งในวิธีต่อไปนี้:

  1. คำนวณความมุ่งมั่นเป็น hash(hash(blinding factor) $\mathbin\|$ แฮช (การทำนาย))

  2. ตามที่ @kelalaka ชี้ให้เห็น ให้ใช้ HMAC โดยมีปัจจัยที่ทำให้ไม่เห็นเป็นกุญแจสำคัญ ดังนั้น ความมุ่งมั่น = HMAC-SHA256(blinding factor, การคาดการณ์)

svm avatar
us flag
svm
ใช่ ฉันได้ตรวจสอบอีกครั้งแล้ว และตอนนี้ฉันเห็นว่า r_p นั้นไม่จำเป็นจริงๆ ฉันจะไปกับโครงการนั้น ขอขอบคุณ!
Score:1
ธง in
  • บน ควรสังเกตว่าการเชื่อมแบบธรรมดากับเท่านั้น $r_s$ จะไม่ทำงาน;

    ผู้กระทำสามารถหลอกผู้ตรวจสอบได้ นี่เป็นเพราะการต่อข้อมูลแบบง่ายๆ ตัวอย่างเช่น $H(\texttt{100110||11})$ เป็นความมุ่งมั่นที่มีการทำนายอุณหภูมิคือ $3^\circ$ ( $\texttt{11}$ ในเลขฐานสอง) หากอุณหภูมิออกมา $11^\circ$ ผู้กระทำจึงจะอ้างว่าเป็นความลับได้ $r_s = \texttt{1001}$ และคำทำนายก็คือ $\texttt{1011}$. สิ่งนี้ใช้ได้ผลเนื่องจากการอ้างสิทธิ์ใหม่ของพวกเขาสามารถตีความได้ว่าถูกต้องเช่นกัน $H(\texttt{1001||1011})$

    เพื่อบรรเทาสิ่งนี้ อย่างใดอย่างหนึ่งใช้

    • ตัวคั่นที่กำหนดไว้ล่วงหน้าสาธารณะ เช่น $\texttt{"<delimeter>}"$

      $$H(\texttt{100110<delimeter>11})$$

      หรือ

    • ปล่อยขนาดของ $r_s$ เป็นส่วนหนึ่งของความมุ่งมั่น

    ใช่ ใช้อย่างน้อย 128 บิตเพื่อให้แม้แต่นักขุด Bitcoin ก็ต้องการ $2^{34}$-ปีเพื่อค้นหาค่าคอมมิตที่เป็นไปได้ ตราบใดที่ฟังก์ชันแฮชที่ใช้มีความต้านทานพรีอิมเมจอย่างน้อย 128 บิต ใช้ SHA-256 เนื่องจากเรายังเชื่อว่า SHA-256 มีการรักษาความปลอดภัยภาพพรีอิมเมจประมาณ 256 บิต

    อีกทางหนึ่งจะดีกว่าที่จะใช้ $\operatorname{HMAC-SHA256}$ กับ $r_s$ เป็นคีย์หรือดีกว่าใช้ $\operatorname{KMAC}$ ของ $\operatorname{SHA-3}$ ที่ก่อสร้างง่ายกว่า $\operatorname{HMAC}$แม้ว่า HMAC ยังคงเป็นสัตว์ร้าย

รูปแบบในคำถามสามารถทำงานได้โดยไม่ต้องใช้ตัวคั่นหรือขนาดที่เปิดเผย

ทั้งนี้เนื่องจากการเผยแพร่ของ $r_p$ ซึ่งหมายถึงตัวคั่น ถึงกระนั้นก็ดีกว่าที่จะใช้ $\operatorname{HMAC,KMAC}$.

หากยังต้องการใช้ฟังก์ชันแฮชการเข้ารหัสและกลัวว่าจะถูกโจมตีด้วยส่วนขยายความยาวในฟังก์ชันแฮช ให้ใช้ SHA-3, BLAKE2 หรือ SHA-512/256 ที่จริงแล้วไม่มีความกลัวเนื่องจากการโจมตีแบบขยายความยาวจะเปลี่ยนผลลัพธ์การแฮช

แทนที่จะใช้ฟังก์ชันแฮชที่แตกต่างกันสำหรับแพลตฟอร์มต่างๆ ให้ใช้ การแยกโดเมน;

$$H(\texttt{fixedDomainSeperationTextForPlatfromA}||r_s||r_p||T)$$

Maarten Bodewes avatar
in flag
ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้[ย้ายไปแชท](https://chat.stackexchange.com/rooms/133039/discussion-on-answer-by-kelalaka-verifying-a-prediction-of-the-future)

โพสต์คำตอบ

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