Score:0

ประเมินอัตราส่วนการแบ่งปันอย่างปลอดภัยโดยไม่ต้องใช้ตัวติดตามส่วนกลางแบบเพียร์ทูเพียร์ด้วย HyperLogLog?

ธง ca

สมมติว่าคุณมีระบบจัดเก็บข้อมูลแบบกระจาย เช่น bittorrent หรือ ipfs และคุณต้องการติดตามอัตราส่วนการอัปโหลด/ดาวน์โหลด (หรือการตอบกลับ/คำขอ) ของผู้ให้บริการรายเดียวกัน อย่างไรก็ตาม คุณไม่ต้องการใช้ตัวติดตามแบบรวมศูนย์และเก็บทุกอย่างแบบเพียร์ทูเพียร์ใช่หรือไม่ คุณสามารถ ประมาณการ อัตราส่วน u/d อย่างปลอดภัยในลักษณะกระจายโดยไม่ครอบงำระบบ?

ความคิดหนึ่งที่ฉันมีคือแก้ไข HyperLogLog (HLL) ด้วยคำตอบนี้รวมกัน: เป็นไปได้ไหมที่จะสร้างระบบ "พิสูจน์การอัปโหลด" สำหรับการติดตามอัตราส่วน BitTorrent.

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

หากคุณมีเพื่อน: p1, p2, p3 และคุณต้องการคำนวณอัตราส่วนของคำขอที่ทำต่อคำขอที่มีให้สำหรับ p1 คุณสามารถทำได้ดังนี้:

  1. P2 และ p3 รวมไฮเปอร์ล็อกล็อกของโทเค็นการตอบสนองจาก p1 เข้าไว้ด้วยกัน hll_1
  2. p2 และ p3 รวมไฮเปอร์ล็อกล็อกของโทเค็นคำขอจาก p1 เข้าไว้ด้วยกัน hll_2

อัตราส่วนหุ้นคือ จำนวนสมาชิก (hll_1) / จำนวนสมาชิก (hll_2)

ในการทำให้ HLLs 'ปลอดภัย' สำหรับแต่ละ HLL âbinâ ซึ่งนับเลขศูนย์ต่อท้ายของแฮช ให้บันทึกโทเค็นและลายเซ็นที่สร้างแฮชซึ่งมีจำนวนศูนย์มากที่สุดต่อ bin ด้วยวิธีนี้เมื่อ p2 และ p3 รวม HLL เข้าด้วยกัน พวกเขาสามารถยืนยันได้ว่า HLL จากกันและกันนั้นสร้างจากโทเค็นที่เซ็นชื่อ และปฏิเสธหากลายเซ็นไม่ตรงกัน P1 สามารถดู HLL ที่รวมกันและยืนยันว่ามาจากคำขอที่พวกเขาลงนาม สิ่งนี้จะบังคับให้แต่ละโหนดพิสูจน์ว่าพวกเขาได้เห็นโทเค็นที่ประกอบกันเป็น HLL

การโจมตี

P1 สามารถตรวจสอบได้ว่า p2 และ p3 มีความซื่อสัตย์โดยการตรวจสอบ HLL ที่รายงาน หาก p2 หรือ p3 รายงานการตอบกลับต่ำกว่าความเป็นจริง (พวกเขาได้รับการตอบกลับจาก p1 แต่ตัดสินใจที่จะไม่รวมไว้ใน HLL) หรือรายงานคำขอมากเกินไป (เช่น p2 อาจได้รับคำขอจาก p1 แต่ไม่ได้ส่งการตอบกลับ) P1 สามารถบล็อกพวกเขาจาก ตารางเส้นทางของมัน

P1 และ P2 หรือ P3 สามารถสมรู้ร่วมคิดโดยการแลกเปลี่ยนโทเค็นโดยไม่ต้องทำงาน ดังนั้นคุณยังคงต้องการบริการกลางบางประเภทเพื่อออก JWT เพื่อควบคุมการเป็นสมาชิกของกลุ่มและมองหาการสมรู้ร่วมคิด

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

การบีบอัดแบบสูญเสีย

ดูเหมือนว่า HyperLogLogs คุณจะต้องเก็บลายเซ็นให้มากที่สุดเท่าที่คุณมีถังขยะเพื่อตรวจสอบคำขอจำนวนมาก (พันล้าน) ให้มีความแม่นยำในระดับที่เหมาะสม ลายเซ็นเหล่านี้ใน HLL จะใช้พื้นที่มากแต่มีพื้นที่น้อยกว่าการจัดเก็บทุกคำขอ!

คุณสามารถรวม HLLs จำนวนมากได้โดยใช้ DHT เช่น kademlia ในการเลือกโหนดเพื่อส่ง HLLs เพื่อให้ฝูงสามารถรายงานข้อมูลเกี่ยวกับโหนดเฉพาะไปยังตำแหน่งทั่วไปได้

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

โพสต์คำตอบ

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