Score:1

ความซับซ้อนของการขุด/ลงนามแฮช

ธง bd

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

คำถามของฉัน สมมติว่าฉันมีฟังก์ชันแฮชในอุดมคติที่ให้เอาต์พุต 128 บิต และฉันต้องการให้ 4 บิตนำหน้าเป็น 0 ฉันต้องรันมัน (ด้วยข้อความที่สุ่มเลือก) เป็นจำนวนเท่าใดเพื่อให้ได้ผลลัพธ์ที่ต้องการ

โดยเฉพาะอย่างยิ่ง ฉันกำลังมองหาฟังก์ชั่นที่จะให้ความซับซ้อนในการตั้งค่า $m$ บิตของฟังก์ชันแฮชในอุดมคติที่ส่งกลับ $n$ บิตเป็นเอาต์พุต

kelalaka avatar
in flag
สิ่งนี้ตอบคำถามของคุณหรือไม่ [SHA-512 - การค้นหาการสรุปแฮชที่เริ่มต้นด้วยศูนย์อย่างน้อยสิบสองตัวนั้นยากเพียงใด](https://crypto.stackexchange.com/questions/89690/sha-512-how-difficult-is-it-to -find-a-hash-digest-เริ่มต้นด้วยอย่างน้อยสิบสอง)
hola avatar
bd flag
@kelalaka ขอบคุณสำหรับการเชื่อมโยง อันนั้นเป็นเชิงประจักษ์มากกว่า แต่ฉันต้องการการคำนวณเชิงทฤษฎี
kelalaka avatar
in flag
เราแพ้แล้ว เมื่อเราจำลองเป็นแบบสุ่มเหมือนกัน นอกเหนือจากนั้น คำตอบก็เป็นไปตามทฤษฎีแล้ว หากคุณกำลังมองหามูลค่าที่คาดหวัง นั่นเป็นเรื่องง่าย มันคือ Bernoulli Trials และค่าที่คาดหวังคือ $p$ และผลลัพธ์คือ 1/16 ค่าที่คาดไว้สำหรับจำนวนการทดลองอิสระที่จะประสบความสำเร็จครั้งแรกคือ $1/p = 16$
kelalaka avatar
in flag
นอกจากนี้ โปรดทราบว่า เมื่อเราพูดถึงความซับซ้อน มันควรจะขึ้นอยู่กับอินพุตอื่นที่ไม่ใช่เพียงการวัดปริมาณ เช่น ฟังก์ชันแฮชการเข้ารหัสที่คาดว่าจะมี $\mathcal{O}(2^n)$ การรักษาความปลอดภัยภาพล่วงหน้าและ SHA-256 มีการรักษาความปลอดภัยพรีอิมเมจ 256 บิต ไม่ใช่ $\mathcal{O}(2^{256})$ เนื่องจากมีค่าคงที่!.
Score:3
ธง cn

สำหรับอินพุตแบบสุ่ม แต่ละบิตมีความน่าจะเป็น $\frac{1}{2}$ ให้เป็นศูนย์ เนื่องจากเราคิดว่าความเป็นอิสระ (ฟังก์ชันแฮชในอุดมคติแสดงถึงสมมติฐานนี้) สำหรับแต่ละอินพุตความน่าจะเป็น $4$ ศูนย์ในบิตนำหน้าคือ $\frac{1}{2^4}=\frac{1}{16}$.

หลังจากนั้น $k$ การคำนวณ เนื่องจากเราพิจารณาว่าแต่ละเอาต์พุตเป็นอิสระต่อกัน (เนื่องจากเป็นฟังก์ชันแฮชในอุดมคติ) ความน่าจะเป็นที่จะรออย่างแน่นอน $i$ ขั้นตอนที่เป็นผลลัพธ์ที่ดีคือ $\frac{1}{16}\left(15/16\right)^{i-1}$. (เนื่องจากคุณมีผลลัพธ์ที่ไม่ถูกต้องสำหรับ $(i-1)$ แฮชแล้วก็คนโง่)

และความคาดหวังของเวลาในการคำนวณคือ $\sum^{\infty}_{i=1} i\frac{1}{16}\left(15/16\right)^{i-1}= \frac{1}{16}\sum^{\infty}_{j=1} \sum^{\infty}_{i=j}\left(15/16\right)^{i-1}= \frac{1}{16}\sum^{\infty}_{j=1} \sum^{\infty}_{i=0}\left(15/16\right)^{j+i-1 }$

$$=\frac{1}{16}\sum^{\infty}_{j=1} \left(15/16\right)^{j-1}\sum^{\infty}_{i= 0}\left(15/16\right)^{i} $$ $$= \frac{1}{16}\sum^{\infty}_{j=1} \left(15/16\right)^{j-1}\frac{1}{1/16}$ $ $$=\sum^{\infty}_{j=0} \left(15/16\right)^{j} =16$$.

จากนั้นคุณต้องคำนวณโดยเฉลี่ย $16$ แฮชเพื่อค้นหาสิ่งที่ดี

คุณสามารถสรุปการพิสูจน์นี้ได้โดยง่ายโดยการแทนที่ $16$ โดย $2^m$และคุณจะอนุมานได้ว่าคุณต้องคำนวณโดยเฉลี่ย $2^m$ กัญชา

โปรดสังเกตว่าเนื่องจากเราเลือกพิกัดที่เราต้องการให้มีศูนย์ล่วงหน้า ผลลัพธ์ทั้งหมดของฟังก์ชันแฮชจึงไม่สำคัญถ้าเราดูจำนวนแฮชที่เราควรคำนวณ (แต่สามารถทำได้ถ้าเราดูเวลาของการคำนวณ ของ $H$).

hola avatar
bd flag
อืม. ดังนั้นคุณต้องมีการทดลองสุ่ม $2^m$ เพื่อคาดหวังเอาต์พุตแฮชที่ตำแหน่ง $m$ ได้รับการแก้ไข
Ievgeni avatar
cn flag
ใช่ แต่มันเป็นค่าเฉลี่ย

โพสต์คำตอบ

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