จีนูเน็ต

GNUnetเป็นเฟรมเวิร์กซอฟต์แวร์สำหรับเครือข่ายแบบกระจายศูนย์แบบเพียร์ทูเพียร์ และเป็นแพ็ก เกจ GNU อย่างเป็นทางการ เฟรมเวิร์กนี้มี การเข้ารหัสลิงก์การค้นหา เพีย ร์การจัดสรรทรัพยากรการสื่อสารผ่านการขนส่งหลายประเภท (เช่นTCP , UDP , HTTP , HTTPS , WLANและBluetooth ) และ อัลกอริธึมเพียร์ทูเพี ยร์ พื้นฐานต่างๆสำหรับการกำหนดเส้นทางมัลติแคสต์และการประมาณขนาดเครือข่าย[ 5 ] [ 6 ]
โครงสร้างเครือข่ายพื้นฐานของ GNUnet คือเครือข่ายแบบตาข่าย (mesh network ) GNUnet มีตารางแฮชแบบกระจาย (DHT) ซึ่งเป็น รูปแบบ สุ่มของKademliaที่ยังคงสามารถกำหนดเส้นทางได้อย่างมีประสิทธิภาพในเครือข่ายแบบ small-world GNUnet มีตัวเลือก " โครงสร้างแบบ F2F " สำหรับจำกัดการเชื่อมต่อเฉพาะกับเพื่อนที่ผู้ใช้ไว้วางใจเท่านั้น เพื่อนของเพื่อนของผู้ใช้ (และต่อไปเรื่อยๆ) สามารถแลกเปลี่ยนไฟล์กับคอมพิวเตอร์ของผู้ใช้ได้โดยอ้อม โดยไม่ต้องใช้ที่อยู่ IP โดยตรง
GNUnet ใช้Uniform Resource Identifiers (URI ) (ซึ่งไม่ได้รับการอนุมัติจากIANAแม้ว่าจะมีการยื่นคำขอไปแล้วก็ตาม) URI ของ GNUnet ประกอบด้วยสองส่วนหลัก คือ โมดูลและตัวระบุเฉพาะของโมดูล URI ของ GNUnet มีรูปแบบดังนี้โดยที่โมดูลคือชื่อโมดูล และตัวระบุคือสตริงเฉพาะของโมดูลgnunet://module/identifier
โค้ดเบสหลักเขียนด้วยภาษา Cแต่มีการเชื่อมต่อในภาษาอื่นเพื่อสร้าง API สำหรับการพัฒนาส่วนขยายในภาษาเหล่านั้น GNUnet เป็นส่วนหนึ่งของโครงการ GNUได้รับความสนใจจากชุมชนแฮกเกอร์หลังจากการเปิดเผยPRISM [ 7 ]
GNUnet ประกอบด้วยระบบย่อยหลายระบบ ซึ่งระบบย่อยที่สำคัญคือระบบย่อยการขนส่งและระบบย่อยแกนหลัก[ 8 ]ระบบย่อยการขนส่งให้บริการการสื่อสารระดับลิงก์ที่ไม่ปลอดภัย ในขณะที่ระบบย่อยแกนหลักให้บริการการค้นหาเพื่อนร่วมเครือข่ายและการเข้ารหัส[ 9 ]แอปพลิเคชันต่างๆ ถูกสร้างขึ้นบนระบบย่อยแกนหลัก
GNUnet ประกอบด้วยแอปพลิเคชัน P2P ต่างๆ ในชุดการแจกจ่ายหลักของเฟรมเวิร์ก รวมถึงการแชร์ไฟล์ การแชท และ VPN นอกจากนี้ โครงการภายนอกบางโครงการ (เช่น secushare) ยังขยายโครงสร้างพื้นฐานของ GNUnet อีกด้วย
GNUnet ไม่เกี่ยวข้องกับ โปรโตคอล Gnutella P2P รุ่นเก่า Gnutella ไม่ใช่โครงการ GNU อย่างเป็นทางการ ในขณะที่ GNUnet เป็น[ 10 ]
ขนส่ง
เดิมที GNUnet ใช้UDPสำหรับการขนส่งพื้นฐาน[ 11 ]ระบบย่อยการขนส่งของ GNUnet ได้รับการขยายให้รวมตัวเลือกเพิ่มเติม เช่น TCP และ SMTP [ 12 ]ต่อมาการสนับสนุน SMTP ถูกยกเลิกเนื่องจากขาดการบำรุงรักษา[ 13 ]
พอร์ตการสื่อสารที่จดทะเบียนอย่างเป็นทางการที่IANAคือ 2086 ( TCP + UDP ) [ 14 ]
ระบบความไว้วางใจ
GNUnet ให้บริการระบบความไว้วางใจโดยอิงตามแบบจำลองเศรษฐกิจแบบส่วนเกิน[ 15 ]แนวคิดในการใช้ระบบเศรษฐกิจนี้มาจากเครือข่ายMojoNation [ 16 ]
เครือข่าย GNUnet ไม่มีหน่วยงานที่ได้รับความไว้วางใจ ดังนั้นจึงเป็นไปไม่ได้ที่จะรักษาชื่อเสียง ในระดับโลก แทนที่จะเป็นเช่นนั้น แต่ละโหนดจะรักษา ความไว้วางใจของตนเองสำหรับลิงก์ท้องถิ่นแต่ละลิงก์
เมื่อทรัพยากร เช่น แบนด์วิดท์และเวลาประมวลผลของ CPU มีเหลือเฟือ โหนดนั้นจะจัดสรรทรัพยากรเหล่านั้นให้กับโหนดเพื่อนบ้านทั้งหมดที่ร้องขอโดยไม่ลดความน่าเชื่อถือหรือคิดค่าใช้จ่ายใดๆ ในทางกลับกัน เมื่อโหนดใดโหนดหนึ่งอยู่ในภาวะตึงเครียด มันจะปฏิเสธคำขอจากโหนดเพื่อนบ้านที่มันเชื่อถือน้อยกว่า และคิดค่าใช้จ่ายจากโหนดอื่นๆ โดยการลดความน่าเชื่อถือลง
การแชร์ไฟล์
แอปพลิเคชันหลัก ณ จุดนี้คือการแชร์ไฟล์แบบไม่ระบุตัวตนและ ทน ต่อการเซ็นเซอร์ ทำให้ผู้ใช้สามารถเผยแพร่หรือเรียกดูข้อมูลทุกประเภทได้โดยไม่ระบุตัวตน โปรโตคอล GNUnet ที่ให้ความเป็นส่วนตัวเรียกว่า GAP (GNUnet anonymity protocol) [ 17 ]นอกจากนี้ GNUnet FS ยังสามารถใช้GNU libextractorเพื่อใส่คำอธิบายประกอบไฟล์ที่แชร์โดยอัตโนมัติด้วยเมตาเดตา
การเข้ารหัสไฟล์
ไฟล์ที่แชร์กับ GNUnet จะถูกเข้ารหัสด้วย ECRS (Encoding for Censorship-Resistant Sharing) [ 18 ]
เนื้อหาทั้งหมดถูกแสดงในรูปแบบ GBlock แต่ละ GBlock มีขนาด 1024 ไบต์ มี GBlock หลายประเภท แต่ละประเภทมีวัตถุประสงค์เฉพาะ GBlock ใดๆ ก็ตามมีเอกลักษณ์เฉพาะตัวด้วยค่าแฮช RIPEMD-160.
DBlocks เก็บเฉพาะเนื้อหาไฟล์จริงเท่านั้น ไฟล์จะถูกแบ่งออกเป็นส่วนๆ ที่ขนาด 1024 ไบต์ และส่วนย่อยที่ได้จะถูกเก็บไว้ใน DBlocks DBlocks จะถูกเชื่อมโยงเข้าด้วยกันเป็นโครงสร้างMerkle treeโดยใช้ IBlocks ซึ่งเก็บตัวระบุของ DBlock
บล็อกต่างๆ จะถูกเข้ารหัสด้วยคีย์สมมาตรที่ได้มาจากเมื่อข้อมูลเหล่านั้นถูกจัดเก็บไว้ในเครือข่าย
คำถามและคำตอบ
โปรโตคอลการปกปิดตัวตนของ GNUnet ประกอบด้วยการสอบถามและการตอบกลับ โดยข้อความจะถูกส่งต่อไปยังโหนดศูนย์หรือหลายโหนด ขึ้นอยู่กับภาระงานของโหนดส่งต่อ
คำสั่งค้นหาใช้สำหรับค้นหาเนื้อหาและร้องขอข้อมูลเป็นบล็อก
แบบสอบถามประกอบด้วยตัวระบุทรัพยากร ที่อยู่สำหรับตอบกลับ ลำดับความสำคัญ และ TTL (Time-to-Live)
ตัวระบุทรัพยากรของข้อมูลเป็นค่าแฮชสามเท่า[ 19 ] Peer ที่ ตอบกลับคำถามให้เพื่อพิสูจน์ว่ามีทรัพยากรที่ร้องขอจริงโดยไม่ต้องระบุข้อมูลเพิ่มเติมไปยังโหนดระดับกลาง ดังนั้นโหนดระดับกลางจึงไม่สามารถถอดรหัสได้.
ที่อยู่ตอบกลับเป็นความแตกต่างหลักเมื่อเทียบกับ โปรโตคอล Freenetใน Freenet การตอบกลับจะส่งกลับมาโดยใช้เส้นทางเดียวกับคำถามเสมอ แต่ใน GNUnet เส้นทางอาจสั้นกว่า ผู้รับคำถามอาจทิ้งคำถาม นั้น ส่งต่อโดยไม่แก้ไขที่อยู่ตอบกลับ หรือส่งต่อโดยอ้อมโดยแทนที่ที่อยู่ตอบกลับด้วยที่อยู่ของตนเอง การส่งต่อคำถามโดยอ้อมจะทำให้ผู้รับให้ข้อมูลการปกปิดสำหรับคำถามของตนเอง ในขณะที่การส่งต่อจะทำให้ผู้รับหลีกเลี่ยงการเป็นลิงก์ในการส่งต่อการตอบกลับและประหยัดแบนด์วิดท์ คุณสมบัตินี้ช่วยให้ผู้ใช้สามารถแลกเปลี่ยนการไม่เปิดเผยตัวตนกับประสิทธิภาพได้ ผู้ใช้สามารถระบุระดับการไม่เปิดเผยตัวตนสำหรับการเผยแพร่ การค้นหา และการดาวน์โหลดแต่ละครั้งได้ ระดับการไม่เปิดเผยตัวตนเป็นศูนย์สามารถใช้เพื่อเลือกการแชร์ไฟล์แบบไม่เปิดเผยตัวตน โครงสร้างพื้นฐาน DHT ของ GNUnet จะถูกใช้ก็ต่อเมื่อระบุการแชร์ไฟล์แบบไม่เปิดเผยตัวตนเท่านั้น ระดับการไม่เปิดเผยตัวตนจะกำหนดว่าผู้รับต้องมีข้อมูลการปกปิดมากแค่ไหนเพื่อซ่อนการกระทำของผู้ใช้เอง
ลำดับความสำคัญระบุว่าผู้ใช้ต้องการใช้ความไว้วางใจไปมากน้อยเพียงใดในกรณีที่ทรัพยากรขาดแคลน
TTL ใช้เพื่อป้องกันไม่ให้คำขอค้างอยู่ในเครือข่ายนานเกินไป
URI การแชร์ไฟล์
ตัวระบุโมดูลfsประกอบด้วยchk , sks , kskหรือloc ตามด้วยเครื่องหมายทับและค่าเฉพาะหมวดหมู่ URI ส่วน ใหญ่มีแฮชซึ่งเข้ารหัสเป็นbase32hex [ 20 ]
- chkใช้สำหรับระบุไฟล์ โดยทั่วไปได้แก่:
gnunet://fs/chk/[file hash].[query hash].[file size in bytes]
- แฮชไฟล์คือค่าแฮชของไฟล์ข้อความธรรมดา ซึ่งช่วยให้สามารถถอดรหัสได้เมื่อดาวน์โหลดเสร็จแล้ว แฮชแบบสอบถามคือค่าแฮชของ GBlock บนสุด ซึ่งช่วยให้สามารถดาวน์โหลดโครงสร้าง GBlock ทั้งหมดที่บรรจุไฟล์ที่เข้ารหัสได้ จำเป็นต้องทราบขนาดไฟล์เพื่อกำหนดรูปร่างของโครงสร้างต้นไม้
- sksใช้ระบุไฟล์ภายในเนมสเปซ ซึ่งโดยทั่วไปได้แก่:
gnunet://fs/sks/NAMESPACE/IDENTIFIER - kskระบุคำค้นหา โดยทั่วไปได้แก่:
gnunet://fs/ksk/KEYWORD[+KEYWORD]* - locระบุตำแหน่งข้อมูลบนเครื่องจักรเฉพาะเครื่องหนึ่ง โดยทั่วไปจะเป็นดังนี้:
gnunet://fs/loc/PEER/QUERY.TYPE.KEY.SIZE
ตัวอย่าง
URI ประเภทหนึ่งของการแชร์ไฟล์ GNUnet ที่ชี้ไปยังสำเนา ข้อความใบอนุญาต GNU GPL เฉพาะฉบับหนึ่ง : gnunet://fs/chk/9E4MDN4VULE8KJG6U1C8FKH5HA8C5CHSJTILRTTPGK8MJ6VHORERHE68JU8Q0FDTOH1DGLUJ3NLE99N0ML0N9PIBAGKG7MNPBTT6UKG.1I823C58O3LKS24LLI9KB384LH82LGF9GUQRJHACCUINSCQH36SI4NF88CMAET3T3BHI93D4S0M5CC6MVDL1K8GFKVBN69Q6T307U6O.17992
URI สำหรับการแชร์ไฟล์ของ GNUnet อีกประเภทหนึ่ง ซึ่งชี้ไปยังผลการค้นหาจากการค้นหาด้วยคำหลัก "gpl": gnunet://fs/ksk/gpl
ระบบชื่อของ GNU
GNUnet ประกอบด้วยการใช้งานระบบชื่อ GNU (GNS) ซึ่งเป็นระบบทดแทนDNS แบบกระจายศูนย์และทนทานต่อการเซ็นเซอร์ ใน GNS ผู้ใช้แต่ละรายจะจัดการ โซนของตนเองและสามารถมอบหมายโดเมนย่อยให้กับโซนที่จัดการโดยผู้ใช้รายอื่นได้ การค้นหาบันทึกที่กำหนดโดยผู้ใช้รายอื่นจะดำเนินการโดยใช้ DHT ของ GNUnet [ 21 ] GNS ได้รับการกำหนดมาตรฐานในRFC 9498ในปี 2023 รีจิสทรี GANA จัดการโดเมนระดับบนสุด ".alt" ใน GNS [ 22 ]
การแปลโปรโตคอล
GNUnet สามารถส่งข้อมูล IP ผ่านเครือข่ายแบบ Peer-to-Peer ได้ หากจำเป็น GNUnet สามารถทำการแปลงโปรโตคอล IPv4 เป็น IPv6 ในระหว่างกระบวนการได้ GNUnet มีเกตเวย์ระดับแอปพลิเคชัน DNSเพื่อส่งต่อคำขอ DNS และแมปที่อยู่ไปยังตระกูลที่อยู่ตามความจำเป็น ด้วยวิธีนี้ GNUnet จึงนำเสนอเทคโนโลยีที่อาจช่วยอำนวยความสะดวกในการเปลี่ยนไปใช้ IPv6นอกจากนี้ เมื่อใช้ร่วมกับ GNS ระบบการแปลงโปรโตคอลของ GNUnet สามารถใช้เพื่อเข้าถึงบริการที่ซ่อนอยู่ ซึ่งเป็นบริการที่ใช้ IP ที่ทำงานในพื้นที่เฉพาะที่ Peer บางแห่งในเครือข่าย และสามารถเข้าถึงได้โดยการแก้ไขชื่อ GNS เท่านั้น
API โซเชียล
Gabor X Tothได้ตีพิมพ์วิทยานิพนธ์[ 23 ] ในช่วงต้นเดือนกันยายน พ.ศ. 2556 เพื่อนำเสนอการออกแบบ บริการ ส่งข้อความทางสังคมสำหรับเฟรมเวิร์กแบบ peer-to-peer ของ GNUnet ซึ่งมีคุณสมบัติด้านความสามารถในการปรับขนาด ความสามารถในการขยาย และการสื่อสารที่เข้ารหัสแบบ end-to-end คุณสมบัติด้านความสามารถในการปรับขนาดทำได้โดยการส่งข้อความแบบ multicast ในขณะที่ความสามารถในการขยายทำได้โดยใช้PSYC (Protocol for Synchronous Conferencing) ซึ่งมี ไวยากรณ์ RPC (Remote Procedure Call) ที่ขยายได้และสามารถพัฒนาไปตามกาลเวลาโดยไม่ต้องอัปเกรดซอฟต์แวร์บนโหนดทั้งหมดในเครือข่าย คุณสมบัติสำคัญอีกประการหนึ่งที่เลเยอร์ PSYC มอบให้คือช่องสัญญาณ multicast แบบมีสถานะ ซึ่งใช้ในการจัดเก็บข้อมูล เช่น โปรไฟล์ผู้ใช้ การสื่อสารที่เข้ารหัสแบบ end-to-end นั้นมีให้โดยบริการ mesh ของ GNUnet ซึ่งเป็นพื้นฐานในการสร้างช่องสัญญาณ multicast ผู้ใช้นามแฝงและสถานที่ทางสังคมในระบบมีรหัสลับทางคริปโตกราฟี ซึ่งระบุโดยกุญแจสาธารณะ และรหัสเหล่านี้จะถูกแปลงเป็นชื่อที่มนุษย์จำได้ง่ายโดยใช้ GNS ( GNU Name System ) โดยที่นามแฝงแต่ละนามแฝงจะมีโซนที่ชี้ไปยังสถานที่นั้นๆ
นั่นคือองค์ประกอบพื้นฐานที่จำเป็นสำหรับการเปลี่ยนเฟรมเวิร์ก GNUnet ให้กลายเป็นแพลตฟอร์มเครือข่ายสังคมแบบเพียร์ทูเพียร์ อย่างสมบูรณ์
แชท
มีการนำระบบแชทมาใช้ในโมดูล CADET [ 24 ]ซึ่งมี อินเทอร์เฟซ GTKสำหรับGNOMEอยู่แล้ว[ 25 ]ซึ่งออกแบบมาโดยเฉพาะสำหรับโทรศัพท์ Linux รุ่นใหม่ (เช่นLibrem 5หรือPinePhone ) [ 26 ]
ดูเพิ่มเติม
หมายเหตุ
เอกสารอ้างอิงเพิ่มเติม
- Grothoff, Christian; Patrascu, Ioana; Bennett, Krista; Stef, Tiberiu; Horozov, Tzvetan (13 มิถุนายน 2545). เอกสารไวท์เปเปอร์ GNet (PDF) (รายงานทางเทคนิค). มหาวิทยาลัย Purdue.
- เบนเน็ตต์, คริสต้า; โกรธอฟฟ์, คริสเตียน; โฮโรซอฟ, ทซเวตัน; ปาตราสคู, โยอานา (3 กรกฎาคม 2545). แบตเทน, ลินน์ ; เซเบอร์รี, เจนนิเฟอร์ (บรรณาธิการ). การแบ่งปันข้อมูลที่เข้ารหัสอย่างมีประสิทธิภาพ . บันทึกการบรรยายในวิทยาการคอมพิวเตอร์. สปริงเกอร์ เบอร์ลิน ไฮเดลเบิร์ก. หน้า107–120 . CiteSeerX 10.1.1.19.9837 . doi : 10.1007/3-540-45450-0_8 . ISBN 9783540438618.
- Ferreira, Ronaldo; Grothoff, Christian; Ruth, Paul (2003-05-01). "การสร้างนามธรรมของชั้นการขนส่งสำหรับเครือข่ายแบบ Peer-to-Peer" (PDF) . CCGrid 2003. การประชุมวิชาการนานาชาติ IEEE/ACM ครั้งที่ 3 ว่าด้วยการประมวลผลแบบคลัสเตอร์และกริด, 2003. เอกสารประกอบการประชุม . IEEE. หน้า398–405 . CiteSeerX 10.1.1.13.5086 . doi : 10.1109/CCGRID.2003.1199393 . ISBN 978-0-7695-1919-7. S2CID 1928711 .
- Grothoff, Dipl-Math Christian (2003-06-01) "การจัดสรรทรัพยากรในเครือข่ายเพียร์ทูเพียร์" เวิร์ทชาฟต์ซินฟอร์มาติก . 45 (3): 285– 292. ดอย : 10.1007/BF03254946 . ไอเอสเอ็น0937-6429 . S2CID 4479637 .
- Wachs, Matthias; Schanzenbach, Martin; Grothoff, Christian (2014). "ระบบชื่อที่ทนทานต่อการเซ็นเซอร์ เพิ่มความเป็นส่วนตัว และกระจายอำนาจอย่างสมบูรณ์" (PDF) . การเข้ารหัสและความปลอดภัยของเครือข่าย . บันทึกการบรรยายในวิทยาศาสตร์คอมพิวเตอร์. เล่มที่ 8813. หน้า127–142 . doi : 10.1007/978-3-319-12280-9_9 . ISBN 978-3-319-12279-3.
- เบนเน็ตต์, คริสต้า; โกรธอฟฟ์, คริสเตียน (2003-03-26). "Gap – Practical Anonymous Networking". ใน ดิงเกิลดีน, โรเจอร์ (บรรณาธิการ). เทคโนโลยีเสริมสร้างความเป็นส่วนตัว . บันทึกการบรรยายในวิทยาการคอมพิวเตอร์. เล่มที่ 2760. สปริงเกอร์ เบอร์ลิน ไฮเดลเบิร์ก. หน้า141–160 . CiteSeerX 10.1.1.125.9673 . doi : 10.1007/978-3-540-40956-4_10 . ISBN 9783540206101.
- Evans, Nathan; Polot, Bartlomiej; Grothoff, Christian (2012-05-21). "การประมาณขนาดเครือข่ายแบบกระจายศูนย์ที่มีประสิทธิภาพและปลอดภัย" ใน Bestak, Robert; Kencl, Lukas; Li, Li Erran; Widmer, Joerg; Yin, Hao (บรรณาธิการ). Networking 2012. Lecture Notes in Computer Science. Vol. 7289. Springer Berlin Heidelberg. หน้า304–317 . doi : 10.1007/978-3-642-30045-5_23 . ISBN 9783642300448.
- Grothoff, Christian (1 สิงหาคม 2556). "วิดีโอ: คุณทำลายอินเทอร์เน็ต เรากำลังสร้างอินเทอร์เน็ต GNU ของเราเอง" . gnunet.org . พรรคโจรสลัดเยอรมนี , เบอร์ลิน. สืบค้นเมื่อ4 ตุลาคม 2556 .
- Grothoff, Christian (2015). "สถาปัตยกรรมของ GNUnet: 45 ระบบย่อยใน 45 นาที" (PDF) . สืบค้นเมื่อ2016-07-14 .