ฉันสงสัยว่าคำตอบคือ "ไม่" แต่ก็ยัง:
ใน WireGuard [1] มีแนวคิดเกี่ยวกับคีย์ส่วนตัวและคีย์สาธารณะสำหรับเพียร์ รหัสสาธารณะมาจากรหัสส่วนตัวและการเชื่อมต่อระหว่างสองฝ่ายสามารถสร้างขึ้นได้เฉพาะเมื่อรหัสตรงกัน สมมติว่าเรามีเพื่อนสองคน ก และ ข. ในการเชื่อมต่อพวกเขาแต่ละคนจะต้อง:
- สร้างรหัสส่วนตัว
- สร้างรหัสสาธารณะโดยใช้รหัสส่วนตัวจากขั้นตอนก่อนหน้า
- แบ่งปันรหัสสาธารณะกับบุคคลอื่น
การกำหนดค่าจะมีลักษณะดังนี้:
เพื่อน ก:
[อินเตอร์เฟซ]
PrivateKey = <รหัสส่วนตัวของ A>
[เพียร์]
PublicKey = <รหัสสาธารณะของ B>
เพื่อน ข:
[อินเตอร์เฟซ]
PrivateKey = <รหัสส่วนตัวของ B>
[เพียร์]
PublicKey = <รหัสสาธารณะของ A>
สิ่งนี้ตรงไปตรงมามากและสร้างการเชื่อมต่อแบบหนึ่งต่อหนึ่ง
ทีนี้ สมมติว่าเรามีกลุ่มเพื่อน เอ็นโดยแต่ละคู่จะมีคีย์ส่วนตัว/คีย์สาธารณะของตัวเอง นอกจากนี้ยังมีเพื่อน Zซึ่งแชร์รหัสสาธารณะกับทุกคนใน เอ็น, ดังนั้น Z สามารถเชื่อมต่อกับใด ๆ เอ็น โดยไม่มีปัญหา (ด้วยการเปลี่ยนแปลงการกำหนดค่าที่เกี่ยวข้องของ [เพียร์]
ส่วน).
เป็นไปได้ไหมที่จะทำ smth แบบนั้นสำหรับ Z:
[อินเตอร์เฟซ]
PrivateKey = <รหัสส่วนตัวของ Z>
[เพียร์]
PublicKey = f(N1, N2, ...Ni)
ที่ไหน ฉ(...)
เป็นฟังก์ชันที่ "รวม" คีย์สาธารณะทั้งหมดในชุด เอ็นจึงทำให้ Z หากต้องการเชื่อมต่อกับ จาก เอ็น โดยไม่มีการเปลี่ยนแปลงการกำหนดค่า?
- https://www.wireguard.com/protocol/