Score:0

วิธีตรวจสอบผลรวม WOTS

ธง us

เท่าที่ฉันเข้าใจ ลายเซ็นแบบใช้ครั้งเดียวของ Winternitz ทำโดย:

  1. การสร้างอาร์เรย์ของคีย์ส่วนตัว
  2. การสร้างอาร์เรย์ของคีย์สาธารณะโดยการแฮชคีย์ส่วนตัวแต่ละคีย์ X ครั้ง โดย X คือจำนวนของอักขระที่เป็นไปได้ต่างๆ ที่สามารถปรากฏในแต่ละตำแหน่งของข้อความ (หรือแฮชของข้อความ) เพื่อยืนยัน
  3. สร้างอาร์เรย์ของแฮชเป็นลายเซ็นโดยแฮชคีย์ส่วนตัว X ลบด้วย "จำนวนลำดับของอักขระ" ครั้ง
  4. การตรวจสอบลายเซ็นโดยการนับจำนวนครั้งที่แต่ละแฮชลายเซ็นจำเป็นต้องถูกแฮชเพื่อเข้าถึงคีย์สาธารณะและแปลความหมายว่าเป็นหมายเลขลำดับของอักขระ ด้วยตัวเลขเหล่านี้ เราสามารถสร้างข้อความ (หรือแฮชของข้อความ) ซึ่งจะแสดงว่าข้อความนั้นถูกต้อง

ดังนั้น ตัวอย่างเช่น หากเราเซ็นชื่อด้วยเลขฐานสิบหก X จะเป็น 15 เนื่องจากอักขระจะเปลี่ยนจาก 0 (อักขระตัวที่ 1 ซึ่งแสดงถึงการวนซ้ำ 0 ครั้ง) ถึง F (อักขระที่ 16 ซึ่งแสดงถึงการวนซ้ำ 15 ครั้ง) ดังนั้น ไม่ว่าเวลาใดที่เราจำเป็นต้องแฮชลายเซ็นเพื่อเข้าถึงคีย์สาธารณะ มันจะแทนค่าที่แน่นอน ตั้งแต่ 0 เท่าถึง 15 เท่า (ให้ความเป็นไปได้ 16 อย่างที่มีประสิทธิภาพ) และถ้ามันไม่ถึงมันก็ใช้ไม่ได้

จะว่าไปแล้ว ผมอ่านเจอว่าจุดอ่อนคือลายเซ็นสามารถเปลี่ยนแปลงได้ เพราะเช่น ถ้าอักขระหนึ่งตัวที่เซ็นเป็น A ก็จะมีข้อมูลมากพอที่จะแฮช B, C, D, E และ F ได้ ดังนั้น ตามที่หลายคนรวมถึง เว็บไซต์นี้วิธีแก้ไขคือทำเช็คซัม

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

โปรดอธิบายให้ฉันทราบวิธีการตรวจสอบในภาษาง่ายๆ ที่ใครๆ ก็เข้าใจได้

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

Score:1
ธง my

โปรดอธิบายให้ฉันทราบวิธีการตรวจสอบในภาษาง่ายๆ ที่ใครๆ ก็เข้าใจได้

อันที่จริงแล้ว มันคือ 'การตรวจสอบผลรวมผกผัน'; เมื่อคุณเซ็นชื่ออักขระ X คุณจะเพิ่มค่า 15-X ลงในผลรวมตรวจสอบด้วย ตัวอย่างเช่น หากคุณลงชื่อ A ให้บวก 5 ลงในผลรวมตรวจสอบ (เนื่องจาก A+5=F อย่างน้อยเป็นเลขฐานสิบหก) จากนั้นคุณก็รับเงินจำนวนนั้นและเซ็นชื่อด้วยเช่นกัน

ตัวอย่างเช่น หากค่าที่คุณกำลังลงนามประกอบด้วยอักขระ 4 ตัว A, 4, F, 0 คุณก็จะรวมค่าผกผัน (F-A)+(F-4)+(F-F)+(F-0)=1F และรวมอักขระสองตัว 1, F ในลายเซ็น

ควรจะเห็นได้ง่ายว่า หากผู้โจมตีพยายามเพิ่มอักขระในข้อความแฮช เขาจะลดค่าของการตรวจสอบผลรวมผกผัน ซึ่งหมายความว่าอักขระบางตัวในผลรวมจะลดลง (และผู้โจมตีไม่สามารถสร้างลายเซ็นสำหรับ ตัวที่ลดลงนั้น)

ตัวอย่างเช่น หากผู้โจมตีพยายามปลอมแปลงด้วยอักขระ 4 ตัว B, 4, F, 0 ค่าเช็คซัมผกผันที่ผู้ตรวจสอบจะได้รับคือ 1E ผู้โจมตีไม่สามารถสร้าง WOTS ที่ถูกต้องสำหรับ 'E' (เนื่องจากเขารู้เท่านั้น ค่าสำหรับ 'F')

algo avatar
us flag
ขอบคุณมาก. ความคิดแรกของฉันคือทำไมพวกเขาไม่สามารถแก้ไขอักขระอื่นได้เช่นกันเพื่อชดเชยการสูญเสียในเช็คซัมกลับ ดังนั้นแทนที่จะไปจาก A4F0 ถึง B4F0 ให้ไปที่ B3F0 เพื่อปรับสมดุล แต่แล้วฉันก็เข้าใจว่ามัน เป็นไปไม่ได้ที่จะ 'ลดระดับลง' เนื่องจากไม่มีคีย์ส่วนตัว สามารถเพิ่มได้เท่านั้น
algo avatar
us flag
ดังนั้น ดูเหมือนว่าเมื่อใดก็ตามที่อักขระเพิ่มขึ้น ค่าของการตรวจสอบจะลดลง และอักขระจะไม่สามารถลดลงได้
algo avatar
us flag
คำถามเดียวของฉันคือ ทำไมพวกเขาถึงไม่ยุ่งกับเช็คซัมด้วย ตัวอย่างเช่น เช็คซัมในตัวอย่างของคุณเป็นดังนี้: A4F0 1F หากผู้โจมตีเปลี่ยนอักขระของข้อความ แต่ยังเปลี่ยนอักขระบางตัวในเช็คซัม... B4F0 1E อย่างไรก็ตาม ดูเหมือนว่าเช็คซัม 1F ไม่สามารถเปลี่ยนเป็น 1E ได้ เนื่องจากไม่สามารถลดจำนวนตัวอักษรได้ ดังนั้นนั่นจึงเป็นเหตุผลว่าทำไมเช็คซัมจึงต้องกลับด้าน... ถูกต้องหรือไม่ เพราะฉันยังมีความรู้สึกสงสัยเล็กน้อยเกี่ยวกับความยุ่งเหยิงกับเช็คซัม
poncho avatar
my flag
@algo: ใช่ถูกต้อง; แนวคิดก็คือผู้โจมตีไม่สามารถยุ่งกับการตรวจสอบได้โดยตรง เขาสามารถยุ่งกับแฮชเท่านั้น (และเช็คซัมจะคำนวณตามนั้น) และถ้าเขาเพิ่มตัวละครบางตัวในที่ใดที่หนึ่ง เขาต้องลดตัวละครอื่นลง - และเพราะเขาไม่รู้องค์ประกอบเบื้องต้นขององค์ประกอบ WOTS นั้น เขาจึงทำไม่ได้

โพสต์คำตอบ

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