Score:1

รูหนอนการตรวจสอบดังกล่าวเป็นที่รู้จักหรือเป็นไปได้หรือไม่

ธง in

1. สถานการณ์

สมมติว่าเรามีแหล่งที่มาที่สร้างค่าสุ่มหนึ่งค่าต่อนาที ดังนั้นเราจึงมีค่าสุ่ม $x_1$ ใน $1$นาทีที่ $x_2$ ใน $2$นาทีที่ $\ldots$, $x_n$ ใน $n$นาทีที่ th เป็นต้น

การกระจายของค่า $x_1, x_2, \ldots$ ไม่ใช่การสุ่มที่เหมือนกันทั้งหมด แต่เป็นไปตามกฎต่อไปนี้: สำหรับใดๆ $i \ge 1$, $x_i = (y_i, y_{i+1})$, ที่ไหน, $y_i$ เป็นตัวระบุเฉพาะของ $x_i$, และ $y_{i+1}$ เป็นตัวระบุที่ไม่ซ้ำใครที่กำลังจะมาถึง $x_{i+1}$ ที่จะมาถึงในนาทีถัดไป

กล่าวอีกนัยหนึ่งใดก็ตาม $i$นาทีที่ปัจจุบัน $x_i$และต่อไป $x_{i+}$ เป็นที่รู้กันแต่หนหลัง $x_{i+2}$ ไม่เป็นที่รู้จักอย่างแน่นอนหรือสุ่ม ด้านล่างนี้คือตัวอย่าง:

นาทีที่ 1: x_1 = (334234 , 234829129 )
นาทีที่ 2: x_2 = (234829129, 983220 )
นาทีที่ 3: x_3 = (983220 , 831231236347)
...
นาทีที่ n: x_n = (643532754, 3534611 )

วิธีหนึ่งในการแฮชเหล่านั้น $n$ ค่า ตามลำดับ คือการแฮชแต่ละค่าเมื่อมาถึง เช่น $h_1 = ฉ(x_1)$แล้วโยงเข้ากับตัวที่เพิ่งมาถึงตัวถัดไป เช่น $h_2 = f(x_2 \ขนาน h_1)$.

กล่าวอีกนัยหนึ่งคือแฮชของรายการอินพุตที่เรียงลำดับใน $n$นาทีที่ถูกกำหนดซ้ำเป็น $h_n = f(x_n \ขนาน h_{n-1})$โดยมีกรณีฐานเป็น $h_1 = ฉ(x_1)$.

ข้อดีของแนวทางนี้คือ ไม่ว่าใครก็ตามที่เรียกใช้กระบวนการนี้ตั้งแต่เริ่มต้น ในทุก ๆ นาที ทั้งรันไทม์และสเปซไทม์จะอยู่ใน $O(1)$เนื่องจากเขาสามารถแคชแฮชจากนาทีก่อนหน้าได้

ข้อเสียของวิธีนี้คือ สำหรับคนที่ไม่ได้ทำตามขั้นตอนและต้องการตรวจสอบว่า $h_n$ เป็นแฮชของลำดับทั้งหมด เขาจะต้องเริ่มต้นใหม่ตั้งแต่ต้น $h_1$และทำซ้ำทั้งห่วงโซ่จนสุด $h_n$. กระบวนการตรวจสอบนี้จะใช้อย่างมีประสิทธิภาพ $O(n)$ พื้นที่และ $O(n)$ เวลา.

2. รูหนอน

มันคงจะดีถ้าเป็นไปได้ว่าทุกๆ $n$ hashed chain จำนวนมาก เราสามารถค้นพบ รูหนอน $w_n$ ที่มีคุณสมบัติดังนี้

  • เมื่อ $n$แฮช, $h_n$ถูกคำนวณออกอย่างถูกต้องตามกฎหมาย $h_1$ โดยทำตามการเรียกซ้ำทั้งหมดก่อนหน้านี้เท่านั้น จากนั้นรูหนอน $w_n$ กลายเป็นการค้นพบ มิฉะนั้นการค้นหา $w_n$ เป็นไปไม่ได้ในทางปฏิบัติ
  • สำหรับที่กำหนด $h'_n$ แฮชที่อ้างว่าเป็น $h_n$, รูหนอนสามารถลัดการตรวจสอบได้ดังนี้:

$$ w_n(h_1, h'_n) = \begin{กรณี} 1 & \text{if $h'_n = h_n$}\ 0 & \text{else}\ \end{กรณี} $$

  • รันไทม์ที่แย่ที่สุดแบบซีมโทติคและพื้นที่ที่แย่ที่สุดแบบซีมโทติคสำหรับการประมวลผล $w_n(h_1, h'_n)$ ไม่เลวร้ายไปกว่า $O(\logn)$. ถ้าเข้าได้ $O(1)$ที่จะดีกว่าแน่นอน

บันทึก. ซึ่งแตกต่างจาก ภาพก่อน การโจมตีของฟังก์ชันแฮช ข้อแตกต่างดังนี้

  • การโจมตีด้วยภาพล่วงหน้าทำให้ผู้โจมตีสามารถปลอมแปลง ตามอำเภอใจ อินพุตที่ให้แฮชเป้าหมายที่ต้องการ

  • รูหนอนนี้ $w_n$ ไม่อนุญาตให้ปลอมแปลงอินพุตใด ๆ โดยพลการ แต่จะเปิดเผยเส้นทางลัดที่ซ่อนอยู่ซึ่งใช้งานได้สำหรับการเชื่อมโยงอินพุตเฉพาะที่อนุญาตให้เชื่อมโยงเท่านั้น $h_n$ กลับไป $h_1$และวิธีเดียวที่จะค้นพบรูหนอนดังกล่าวคือการคำนวณอย่างถูกกฎหมาย $h_n$ แรก.

  • บางทีเราอาจเรียกรูหนอนดังกล่าวว่าเป็นการโจมตีแบบพรีอิมเมจแบบมีเงื่อนไขซึ่งไม่เกิดประโยชน์ต่อฝ่ายตรงข้าม

3. คำถาม

รูหนอนการตรวจสอบดังกล่าวเป็นที่รู้จักหรือเป็นไปได้หรือไม่

fgrieu avatar
ng flag
ฉันคิดว่าจะต้องมีอินพุตเพิ่มเติมนอกเหนือจาก $n$, $h_1$ และ $h'_n$ สำหรับการคำนวณอัลกอริทึม $w_n(h_1, h'_n)$ โดยเฉพาะอย่างยิ่ง สิ่งที่ควรขึ้นอยู่กับ $x_1$ ถึง $x_n$ ใช่ไหม ดังนั้น เหตุใดจึงแยก $h_1$ ออก และสิ่งใดที่ _ ในคำสั่งปัญหา_ ป้องกันไม่ให้สร้าง $h_n$ อินพุตพิเศษนั้น ซึ่งอนุญาตให้มีการใช้งานเล็กน้อยของ $w_n(h_1, h'_n)$ สันนิษฐานว่า $x_1$ ถึง $x_n$ เป็นอินพุตโดยปริยายของอัลกอริทึมดังกล่าวหรือไม่
knaccc avatar
es flag
ค่าสุ่มต้องเป็นค่าสุ่มอย่างแท้จริงและอยู่นอกเหนือการควบคุมของแหล่งที่มา หรือค่านั้นจำเป็นต้องแยกไม่ออกจากค่าสุ่มไปยังผู้สังเกตหรือไม่
caveman avatar
in flag
@fgrieu - ใช่ มันขึ้นอยู่กับ $x_1, x_2, \ldots$ อย่างไรก็ตาม ฉันสงสัยว่าเราสามารถส่งข้อมูลเกี่ยวกับการพึ่งพาดังกล่าวในเอาต์พุตแฮช $h_1, h_2, \ldots$ ได้หรือไม่ กล่าวอีกนัยหนึ่ง เป็นไปได้ไหมที่ $h_2 = f(x_2, h_1)$ ส่งข้อมูลที่เกี่ยวข้องใน $x_1$ ไปยัง $h_2$ อย่างมีประสิทธิภาพ ต่อจากนั้น เมื่อเครือข่ายดำเนินต่อไป $h_n$ สามารถมีข้อมูลที่เกี่ยวข้องจาก $x_n, x_{n-1}, \ldots, x_1$ ได้อย่างมีประสิทธิภาพ ซึ่งเพียงพอที่จะสร้างรูหนอนการตรวจสอบ $w_n(h_1, h'_n)$ ?
caveman avatar
in flag
@fgrieu - สำหรับคำถามของคุณเกี่ยวกับคำชี้แจงปัญหาที่ป้องกันวิธีแก้ปัญหาเล็กน้อย หากฉันเข้าใจคุณถูกต้อง มันเป็นข้อกำหนดที่จะต้องจำกัดความซับซ้อนของพื้นที่สำหรับ "ผู้ใช้รูหนอน" ใน $O(\log n)$ แต่ "ผู้ค้นพบรูหนอน" ต้องทำกระบวนการ $O(n)$
caveman avatar
in flag
@knaccc - ครับ ค่าเป็นแบบสุ่ม เช่น. ผู้ที่คำนวณ $h_i = f(x_i, h_{i-1})$ นั้นไม่มีความคิดอย่างแน่นอนเกี่ยวกับค่าต่อไป $x_{i+1}$
knaccc avatar
es flag
ใช่ คนที่คำนวณแฮชที่ฉันถือว่าทำเพียงเพื่อให้สามารถละทิ้งค่า $x_i$ ก่อนหน้านี้ แต่ยังสามารถตรวจสอบได้ว่ามีคนส่งสำเนาที่ถูกต้องของค่าเหล่านั้นในอนาคตหรือไม่ . แต่คำถามของฉันคือ: ทำค่าสุ่ม (เช่น$x_i$) จะต้องเป็นการสุ่มอย่างแท้จริงและอยู่นอกเหนือการควบคุมของแหล่งที่มา หรือค่าจำเป็นต้องแยกไม่ออกจากการสุ่มไปยังผู้สังเกตการณ์เท่านั้น?
caveman avatar
in flag
@knaccc - ใช่ สุ่มจริงๆ แม้แต่แหล่งที่มาก็ไม่รู้ว่าค่าต่อไปจะเป็นอย่างไร ข้อมูลเกี่ยวกับค่าสุ่มก่อนหน้าจะถูกส่งไปยังค่าถัดไปในแฮช เช่น. $h_{i}$ รับข้อมูลเกี่ยวกับค่าก่อนหน้า $x_{i-1}$ เนื่องจากได้รับแฮช $h_{i-1}$
knaccc avatar
es flag
ฉันคิดว่าแหล่งที่มาไม่สามารถเชื่อถือได้ในการยืนยันอะไรเกี่ยวกับค่า? เนื่องจากหากแหล่งที่มาเชื่อถือได้ แหล่งที่มาสามารถปล่อย "จุดตรวจสอบ" ทุกๆ $n$th ทุกครั้งที่มีการประกาศข้อความที่ลงนามซึ่งมีแฮชล่าสุด หากไม่สามารถเชื่อถือแหล่งที่มาเพื่อยืนยันสิ่งใดๆ ได้ แหล่งที่มาจะเชื่อถือได้อย่างไรในการแนะนำรูหนอนที่ยืนยันค่าที่ถูกต้องของแฮช
fgrieu avatar
ng flag
กล่าวอีกนัยหนึ่ง: คำถามตามที่ระบุไว้จะได้รับคำตอบโดยใช้แฮชมาตรฐานสำหรับ $f$; ทำให้ "ผู้ค้นพบรูหนอน" คำนวณ $h_n$ (ต้องใช้เวลา $O(n)$ ซึ่งเหมาะสมที่สุด); จากนั้นสร้างรูหนอนให้ส่งออก $1$ หากอาร์กิวเมนต์ที่สองตรงกับ $h_n$ ฉันสรุปได้ว่าคำถามต้องการการปรับแต่งเพื่อป้องกันวิธีแก้ปัญหาที่น่าเบื่อในทำนองเดียวกัน เช่นเดียวกับ: เราต้องการให้ "ผู้ค้นพบรูหนอน" เร็วเท่ากับแฮชมาตรฐาน นอกจากนี้ เราต้องการจุดประสงค์สำหรับพารามิเตอร์ตัวแรกของรูหนอน และฉันไม่เห็นสิ่งนั้นในคำถาม
caveman avatar
in flag
@fgrieu - ถูกต้อง ฉันตอบผิด 1 ข้อเกี่ยวกับการแจกแจงของ $x_1, x_2, \ldots$ มันไม่ได้สุ่มทั้งหมด มันทำงานดังนี้: $x_i = (y_i, y_{i+1})$ โดยที่ $y_i$ เป็นตัวระบุเฉพาะของ $x_i$ และ $y_{i+1}$ เป็นตัวระบุเฉพาะของตัวถัดไปที่จะเกิดขึ้น มูลค่า $x_{i+1}$ ดังนั้น เมื่อสร้าง $x_1$ ในนาทีที่ 1 ต้นทางจะรู้ว่าอันถัดไปคือ $y_2$ แต่ไม่รู้ว่า $y_3$ ดังนั้นจึงมีความสุ่มอยู่ในนั้น แต่ไม่ใช่ทั้งหมด สำหรับความไว้วางใจ: เราเชื่อมั่นว่า $h_1$ ถูกต้องเท่านั้น - อัปเดตโพสต์พร้อมคำชี้แจงนั้น
Hhan avatar
jp flag
ฉันคิดว่าแนวคิดเรื่องรูหนอนที่คุณกังวลนั้นเกี่ยวข้องอย่างใกล้ชิดกับวัตถุล่าสุดที่เรียกว่าฟังก์ชันการหน่วงเวลาตรวจสอบได้ ดูเช่น https://eprint.iacr.org/2018/712
Score:0
ธง pl

แก้ไข: ชี้แจงคำตอบโดยใช้ Merkle tree เป็นตัวอย่าง

สำหรับรายการค่า $x_1,\ldots,x_n$คุณสามารถคำนวณต้นไม้ Merkle ด้วยรากได้ $h_n$. สำหรับที่กำหนด $h_n'$ อ้างว่าเป็น $h_n$คุณสามารถย่อการตรวจสอบให้สั้นลงได้โดยการเปิดเผย เส้นทางการรับรองความถูกต้อง ความยาว $log_2(n)-1$ ระหว่างแฮชลีฟที่รู้จัก $ฉ(x_i)$ และที่กล่าวอ้าง $h_n'$.

โดยการกำหนดรูหนอน $w_{i,n}$ เป็นเส้นทางการตรวจสอบระหว่าง $ฉ(x_i)$ และ $h_n$คุณสามารถตรวจสอบได้ว่า $h_n' = h_n$ ใน $log_2(n)$ โทร $f$. เป็นรหัสหลอก:

def ตรวจสอบ (f_x_i, w, h_n):
    h_i = f_x_i
    สำหรับ h_j ใน w:
        h_i = ฉ(h_i + h_j)
    กลับ h_i == h_n

จากนั้นคุณสามารถโทร ตรวจสอบ(f(x_i), w_i_n, h_n'). โดยเฉพาะเพื่อตรวจสอบ $h_n'$ ไม่ต้องการการแฮชก่อนหน้านี้ทั้งหมด มีเพียงส่วนย่อยของขนาดลอการิทึมที่เรียกว่าเส้นทางการตรวจสอบสิทธิ์


ข้อเสียของการใช้ Merkle tree ในที่นี้คือเราต้องคิดว่ามันมีความสมดุลอย่างสมบูรณ์ กล่าวคือ $n = 2^k$ สำหรับบางคน $k$และการต่อท้ายจำเป็นต้องสร้างต้นไม้ใหม่ ดังนั้นจึงไม่ได้รับประโยชน์ ต่อท้ายของคุณ $h_i$ ถึง ก เทือกเขา Merkle แต่มีบางสิ่งที่คล้ายกับเส้นทางการตรวจสอบสิทธิ์เพื่อแสดงว่าเส้นทางนั้นอยู่ภายใต้ชุดของ ยอดเขา แทนที่จะอยู่ใต้รากเดียว

caveman avatar
in flag
ไดเจสต์แฮชสูงสุดเหล่านั้นจะเชื่อมโยงกับ $h_1$ อย่างไร

โพสต์คำตอบ

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