Score:3

หลักฐานว่าข้อความลงนามโดยสมาชิกของกลุ่ม

ธง ng

ฉันเป็นมือใหม่ในการเข้ารหัส นี่คือคำถามของฉัน:

  1. อลิซสร้างรายชื่อผู้คน: บ็อบ แครอล และแดน;
  2. อลิซมอบรหัสลับเฉพาะให้กับสมาชิกทุกคนในรายชื่อ ดังนั้นพวกเขาจึงสามารถเซ็นข้อความได้โดยไม่ซ้ำกัน
  3. สมาชิกแต่ละคนไม่มีสิทธิ์ลงนามมากกว่า 1 ข้อความ;
  4. เกรซซึ่งเป็นผู้สังเกตการณ์จำเป็นต้องตรวจสอบได้ว่าข้อความบางอย่างลงนามโดยสมาชิกในรายชื่อของอลิซหรือไม่ แต่เธอต้องไม่รู้ว่าใครเป็นผู้ลงนาม

นี่คือตัวอย่าง:

  1. อลิซเป็นเจ้าของฟอรัมวิจารณ์ภาพยนตร์ ซึ่งนักวิจารณ์ที่มีชื่อเสียง (ซึ่งเป็นคู่แข่งด้วย) สามารถโพสต์บทวิเคราะห์ภาพยนตร์ของพวกเขาได้
  2. ก่อนวันฉายภาพยนตร์โต้เถียงที่กำกับโดยสมาชิกยากูซ่าตัวจริง อลิซตัดสินใจปกปิดตัวตนของผู้ใช้ในฟอรัมของเธอ
  3. อย่างไรก็ตาม เกรซ ซึ่งเป็นแฟนเว็บไซต์ของอลิซ รู้สึกรำคาญกับการตัดสินใจดังกล่าว มีการโพสต์บทวิจารณ์ที่ไม่ระบุชื่อหลายสิบรายการบนฟอรัม โดยมีผู้เขียนที่อ้างว่าเป็นผู้ตรวจสอบที่เชื่อถือได้ที่ผ่านการรับรองของอลิซ เกรซเข้าใจดีว่าเหตุใดจึงไม่สามารถเปิดเผยตัวตนของผู้ดูแลที่แท้จริงได้ แต่เธอจะตรวจสอบได้อย่างไรว่าผู้เขียนโพสต์ใดโพสต์หนึ่งเป็นส่วนหนึ่งของรายชื่อผู้วิจารณ์ต้นฉบับที่เชื่อถือได้
fgrieu avatar
ng flag
มีเพียงสองวิธีที่ฉันรู้เพื่อป้องกันไม่ให้ Dan ลงนามมากกว่าหนึ่งข้อความอย่างมีประสิทธิภาพคือ (A) การคุกคามทางร่างกาย/กฎหมาย/เศรษฐกิจ (ซึ่งไม่เกี่ยวกับหัวข้อ) เขาควรทำอย่างอื่น และ (B) Alice ให้อุปกรณ์ทางกายภาพแก่ Dan (เช่น สมาร์ทการ์ด) ออกแบบมาเพื่อเซ็นชื่อเพียงครั้งเดียว เป็นไปได้หรือไม่ที่ข้อกำหนด 3 หมายถึงสมาชิกแต่ละคนจะไม่ลงนามมากกว่าหนึ่งข้อความ? อย่างอิสระใน 2: "Alice ให้รหัสส่วนตัว" นั้นผิดปกติ ขั้นตอนที่เป็นมาตรฐานมากขึ้นคือผู้เข้าร่วมสร้างคีย์ส่วนตัวของตนเอง และเผยแพร่คีย์สาธารณะที่ตรงกัน (อาจผ่านอลิซ) หรือ/และได้รับการรับรองจากอลิซ
thzoid avatar
ng flag
ฉันหมายความว่า Dan สามารถเผยแพร่รหัสสาธารณะของเขาและถ้ามันเชื่อมโยงกับชื่อของเขาในรายชื่อของอลิซ นั่นจะเป็นการพิสูจน์ความสัมพันธ์ของเขากับอลิซ (ซึ่งเป็นสิ่งที่ตั้งใจไว้จริงๆ) แต่เกรซจะรู้ว่าเขาเป็นผู้เขียนข้อความนั้น ฉันได้แก้ไขคำถามด้วยตัวอย่างงี่เง่าเพื่อความชัดเจน เกี่ยวกับผู้คนที่สามารถลงชื่อได้เพียงครั้งเดียว ลองนึกดูว่ามีอัลกอริทึมที่ประมวลผลข้อความของพวกเขาหากมีการส่งข้อความที่เซ็นชื่อ ลายเซ็นนั้นจะสูญเปล่า: ไม่สามารถใช้เพื่อเซ็นชื่อข้อความอื่นได้
fgrieu avatar
ng flag
บางทีคุณอาจต้องการลายเซ็นเสียงเรียกเข้าพร้อมคุณลักษณะเพิ่มเติมที่ผู้สังเกตการณ์สามารถจดจำได้ด้วยคีย์สาธารณะ หากในชุดข้อความที่มีลายเซ็น มีสองข้อความที่เซ็นชื่อด้วยคีย์ส่วนตัวเดียวกัน [เพิ่มเติม: ฉันไม่รู้จักระบบเข้ารหัสดังกล่าว และไม่เห็นเหตุผลที่มันจะเป็นไปไม่ได้]
thzoid avatar
ng flag
ฉันเห็นว่ามันได้ผลในสถานการณ์ของฉัน เพราะมันไม่อนุญาตให้มีการเซ็นชื่อซ้ำ และถ้าอลิซแสดงรายการคีย์สาธารณะที่ใช้ในวงแหวน นั่นจะเป็นการพิสูจน์ความสัมพันธ์ของผู้เซ็นกับเธอ มันทำงานอย่างไร? มีกระดาษอยู่บนนั้นหรือไม่?
fgrieu avatar
ng flag
ให้เรา [ดำเนินการสนทนาต่อในการแชท](https://chat.stackexchange.com/rooms/128253/discussion-between-fgrieu-and-thzoid)
Score:3
ธง my
  1. สมาชิกแต่ละคนไม่มีสิทธิ์ลงนามมากกว่า 1 ข้อความ;

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

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

ด้วยคำแปลนั้น ย่อมเป็นไป; นี่เป็นแนวทางหนึ่ง:

  • Alice สร้างระบบลายเซ็นที่ใช้แฮชแบบมีสถานะ (เช่น LMS หรือ XMSS) โดยที่คีย์ลายเซ็นแบบใช้ครั้งเดียวต่างๆ นั้นเป็นอิสระจากกัน (นั่นคือ คุณไม่สามารถสร้างใหม่จากอีกอันหนึ่งได้)

  • สำหรับสมาชิกกลุ่มแต่ละคน บ็อบ แครอล และแดน อลิซเลือกใบไม้แบบสุ่ม (ลายเซ็นครั้งเดียว) และให้สมาชิกกลุ่มนั้นดัชนี คีย์ส่วนตัวสำหรับลายเซ็นครั้งเดียว และเส้นทางการตรวจสอบสิทธิ์

  • เมื่อ Bob ต้องการเซ็นข้อความหนึ่งข้อความ เขาเซ็นด้วยรหัสส่วนตัวของเขา และส่งออกลายเซ็นนั้น (พร้อมกับดัชนีและพาธการตรวจสอบสิทธิ์) สร้างลายเซ็น LMS หรือ XMSS ที่ถูกต้อง

  • ตัวตรวจสอบดำเนินการตรวจสอบความถูกต้องมาตรฐาน LMS/XMSS กับคีย์สาธารณะ

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

และหาก Bob ตัดสินใจเซ็นข้อความสองข้อความที่แตกต่างกัน เขาต้องรวมดัชนีใบไม้ที่เหมือนกันในลายเซ็นทั้งสอง (ดัชนีนั้นเป็นดัชนีเดียวที่เธอรู้วิธีเซ็นด้วย) เห็นได้ชัดว่าลายเซ็นทั้งสองมีดัชนีเดียวกัน สิ่งนี้ยังคงเป็นจริงแม้ว่าเราจะมี Bob และ Carol (และอาจมีคนอื่นๆ) ร่วมมือกัน - พวกเขาสามารถสร้างลายเซ็นที่มีดัชนีที่สมาชิกกลุ่มคนใดคนหนึ่งมีเท่านั้น

วิธีการนี้มีข้อสังเกตว่า ถ้า Bob เซ็นข้อความที่แตกต่างกันสองข้อความ อาจมีคนอื่นเซ็นข้อความที่สามได้ (ขึ้นอยู่กับลายเซ็นทั้งสองของ Bob) ลายเซ็นปลอมจะดูเหมือนมาจากบ๊อบด้วย

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

thzoid avatar
ng flag
ซึ่งจะทำงานในบริบทที่ฉันกำลังมองหา ตรรกะนี้ควรทำงานบนบล็อกเชน ดังนั้นหากธุรกรรมสองรายการได้รับการลงนามโดยบุคคลคนเดียวกัน เฉพาะธุรกรรมแรกเท่านั้นที่ควรได้รับการประมวลผล อันที่สองจะไม่ถูกต้องในบริบทของเชน มีกระดาษหรือแบบฝึกหัดเฉพาะที่คุณแนะนำให้เข้าใจ LMS/XMSS หรือไม่ ขอบคุณ @poncho และทุกคนที่ช่วยให้ฉันเข้าใจเรื่องนี้
poncho avatar
my flag
@thzoid: สำหรับ LMS จะมี https://datatracker.ietf.org/doc/rfc8554/ และสำหรับ XMSS จะมี https://datatracker.ietf.org/doc/rfc8391/

โพสต์คำตอบ

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