Hyphanet
Hyphanet (до середини 2023 року Freenet) — вільне та відкрите програмне забезпечення для створення децентралізованої однорангової комп'ютерної мережі та розподіленого зберігання даних. Freenet було створено Ієном Кларком[14] з метою розподіленого зберігання даних, запобігання цензурі, анонімного обміну інформацією та забезпечення свободи слова за допомогою P2P-мережі[15][16]. Це має бути досягнуто шляхом децентралізації, надмірності інформації, шифрування та динамічної маршрутизації. ІсторіяІрландський студент Ієн Кларк почав розробляти Freenet у 1998 році як частину своєї курсової роботи на здобуття ступеня з інформатики в Единбурзькому університеті[17]. У 2000 році програміст Ієн Кларк написав статтю ‘Freenet: розподілена система анонімного зберігання та пошуку інформації’ ('Freenet: A Distributed Anonymous Information Storage and Retrieval System')[18]. За даними CiteSeer, стаття Кларка була найбільш цитованою статтею з інформатики у 2000 році[19]. Ієн Кларк увійшов до списку 100 найвидатніших інноваторів 2003 року за версією MIT's Technology Review . Ідеї та концепції, які вперше з'явилися у Freenet, мали значний вплив на академічний світ. Freenet також надихнув на створення низки статей з права та філософії[20]. Незабаром після публікації Кларк і невелика кількість добровольців почали реалізовувати цю ідею як вільне програмне забезпечення. У березні 2000 року перша версія була готова до випуску. У наступний період було багато новин про Freenet, але преса в основному займалася питаннями авторського права, а не метою вільного спілкування. Проєкт заснував некомерційну організацію «The Freenet Project Inc.» і з вересня 2002 року найняв нім. Matthew Toseland як штатного програміста, який отримує зарплату за рахунок пожертвувань і доходів від побічних продуктів. Інші також працюють на позаштатній основі. У 2023 році Freenet було перейменовано в Hyphanet, а переписаний проєкт без вбудованої підтримки анонімного обміну інформацією отримав назву Freenet[21]. Стислий описРобота Freenet забезпечується за допомогою спільного пула трафіку мережі та дискового простору комп'ютерів учасників, що дозволяє користувачам анонімно публікувати чи отримувати різноманітну інформацію. Простіше кажучи, Freenet можна розглядати як сховище даних, до якого всі учасники можуть отримати рівний доступ. Комп'ютери, підключені до Freenet, стають «вузлами», тобто приймачами файлів даних, що постійно змінюються[17]. ОсобливостіFreenet відрізняється від більшості інших P2P-програм як способом взаємодії з користувачем, так і безпекою, яку він надає. Він відмежовує інфраструктуру мережі, яка використовується, та протокол від дій користувачів, які взаємодіють з мережею; як наслідок, існує безліч шляхів доступу до вмісту мережі Freenet. Найпростіший — через FProxy, що інтегрується з програмним забезпеченням вузла й забезпечує вебінтерфейс для доступу до даних з мережі. Використовуючи FProxy, користувач може переглядати фрісайти (вебсайти, що використовують звичайний HTML та споріднені інструменти, але вміст яких розміщується у Freenet, а не на традиційному вебсервері). Вебінтерфейс також використовується для більшості конфігураційних дій та керування вузлами. Шляхом використання окремих програм чи додатків, завантажених у програмне забезпечення вузла, користувачі можуть взаємодіяти з мережею іншими способами, такими як форуми, подібні до вебфорумів чи Usenet, або інтерфейси, більш схожі на традиційні інтерфейси P2P для спільного доступу до файлів.[22] Хоча Freenet забезпечує HTTP-інтерфейс для перегляду фрісайтів, він не є проксі-сервером для World Wide Web; Freenet може використовуватись лише для доступу до контенту, що був попередньо розміщений у мережі Freenet. У цьому розумінні, він більш подібний до файлообмінних програм, ніж до проксі, таких як Tor. Freenet намагається захистити анонімність як людей, що розміщують дані у мережі (uploading), так і тих, хто отримує дані з мережі (downloading). На відміну від програм для файлообміну, користувачеві Freenet нема необхідності лишатися в мережі після розміщення файла чи групи файлів. Натомість, у процесі публікації файли розбиваються на шматки й розміщуються на безлічі інших комп'ютерів у мережі. При скачуванні ці шматки знаходяться й збираються до початкового стану. Кожен вузол у мережі Freenet віддає дисковий простір для зберігання файлів і трафік, що використовується для маршрутизації запитів від інших користувачів. Як наслідок вимоги анонімності, вузол, що запитує фрагмент даних, не з'єднується безпосередньо з вузлом у якого ці дані є — натомість, дані передаються через кількох посередників, жоден з яких не знає, який вузол запитує дані, а який їх має. Як наслідок, загальний трафік, потрібний системі для передачі файлу, вищий, ніж в інших системах, що може сповільнити передачу, особливо якщо контент непопулярний. Мотиви використанняЗасновники Freenet стверджують, що лише зі справжньою анонімністю приходить справжня свобода слова, і, те, що вони бачать як користь від Freenet, переважує можливу шкоду від його використання[15]. На їхню думку, свобода слова сама по собі не суперечить жодному іншому принципу — інформація не є злочином. Freenet намагається знищити можливість для будь-якої групи нав'язувати свою віру чи цінності у будь-якій інформації. Також багато держав цензурують обмін інформацією, всі вони поділяють one commonality in that людина має вирішувати, яку інформацію цензурувати, а яку дозволити. Те, що може бути прийнятним для однієї групи людей, може розглядатись як неприйнятне чи навіть небезпечне для інших. По суті, мета Freenet — не дозволяти нікому вирішувати за інших, що є прийнятним. Технічні подробиціФайлообмінна мережа Freenet розміщує документи й дозволяє отримати їх пізніше за асоціативним ключем, подібно до таких протоколів, як HTTP. Мережа розроблена як високожиттєздатна, з повною анонімізацією й децентралізацією по мережі всіх внутрішніх процесів. Система не має центральних серверів й не підлягає контролю жодною особою чи організацією, включно з розробниками Freenet. Інформація, розміщена у Freenet, розподіляється по мережі й розміщується на кількох різних вузлах. Шифрування даних й передача запитів ускладнюють можливість визначити, хто розмістив контент у Freenet, хто запитував цей контент, або де контент було розміщено. Це робиться з метою захисту анонімності учасників, а також дуже ускладнює цензуру певного контенту. Контент зберігається в зашифрованому вигляді, тому навіть операторові вузла важко визначити, що саме зберігається на вузлі. ВІн надає правдоподібне заперечення , і в поєднанні з ретрансляцією запитів це означає, що закони про безпечну гавань[en], які захищають постачальників послуг, також захищають операторів вузлів Freenet Розподілені сховища та кешування данихНа відміну від решти мереж P2P, Freenet не лише передає дані між вузлами, але й зберігає їх, працюючи як великий розподілений кеш. Щоб досягти цього, кожен вузол виділяє деяку частину дискового простору для розміщення даних; це настроюється оператором вузла, але типово декілька GB (чи більше). Файли у Freenet здебільшого розбиваються на безліч малих блоків, з додатковими блоками для забезпечення попередньої корекції помилок. Кожен блок обробляється незалежно, тобто, частини одного файла можуть розміщуватися на багатьох різних вузлах. Інформаційний потік у Freenet має відмінності порівняно з такими мережами, як eMule чи BitTorrent:
Дві переваги такої схеми — висока надійність та анонімність. Інформація лишається доступною, навіть якщо її автор поза мережею, і при цьому анонімно поширюється на багатьох хостингових вузлах у вигляді зашифрованих блоків, а не цілісних файлів. Freenet також невразливий до типової проблеми торентів — нестачі «сідів» (роздавачів) чи повних копій файла або торента. Ключовий недолік цього методу зберігання — жоден з вузлів не відповідає за жоден фрагмент даних. Якщо фрагмент даних деякий час не дістають з мережі, а вузол продовжує отримувати нові дані, час від часу він скидає старі дані, коли його виділений дисковий простір остаточно заповнюється. Таким чином, Freenet схильний забувати дані, які не перечитуються регулярно (дивись також Effect). Хоча користувачі можуть розміщувати дані в мережі, нема можливості видалити ці дані. У зв'язку з анонімністю, жоден вузол не знає, хто є «власником» фрагменту даних. Дані можуть бути видалені лише в один спосіб — якщо користувачі певний час не роблять запитів до цих даних. Мережа![]() Мережа складається з багатьох вузлів, що обмінюються між собою повідомленнями. Як правило, a host комп'ютер у мережі запускає програму, що працює як вузол, і вона приєднується до інших хостів, на яких запущена та ж програма, що формує велику розподілену мережу рівноправних вузлів. Деякі вузли є кінцевими, з яких документи запитуються й подаються користувачеві-людині. Інші вузли служать лише для маршрутизації даних. всі вузли спілкуються один з одним однаково — нема окремих «клієнтів» чи «серверів». Вузол не має можливості обмежувати інший вузол, за винятком здатності розміщувати та отримувати дані, пов'язані з ключем. Це не схоже на більшість інших P2P мереж, де адміністратори вузла можуть вводити систему рейтингів, коли користувачі мають віддати певну кількість контенту, перш ніж зможуть завантажувати дані на свій комп'ютер. Freenet також може розглядатись як тісний світ. Протокол Freenet призначено для використання в мережі зі складною топологією, такій як Інтернет (Internet Protocol). Кожен вузол знає лише про деяку кількість інших вузлів, з якими він може з'єднатись безпосередньо (його концептуальні «сусіди»), але будь-який вузол може бути сусідом для будь-якого іншого; до уваги не береться ієрархія чи будь-яка інша структура. Кожне повідомлення маршрутизується по мережі шляхом передачі від сусіда до сусіда, доки не досягне цілі. Передаючи повідомлення сусідові, вузол не знає й не турбується про те, чи передасть сусід повідомлення наступному вузлові, чи він є кінцевою ціллю або першоджерелом повідомлення. Це зроблено для захисту анонімності користувачів та авторів публікацій. Кожен вузол містить сховище даних, що містить документи, асоційовані з ключами, і таблицю маршрутів, що пов'язує вузли з записами про їх продуктивність отримання різних ключів. Протокол![]() Протокол Freenet використовує key-based routing протокол маршрутизації на основі ключів, подібно до розподілених хеш-таблиць. Алгоритм маршрутизації помітно змінився у версії 0.7. До версії 0.7 Freenet використовував евристичний алгоритм, де кожен вузол не мав фіксованого місця, і маршрутизація базувалась на тому, на якому вузлі обслуговувався ключ, найближчий до ключа, який було отримано (у версії 0.3), або той, який оцінюється як швидший (у версії 0.5). В обох випадках, нові з'єднання інколи додавались до downstream nodes (тобто, вузла, що відповів на запит) коли запити було виконано, і старі вузли відхилялись у порядку найменшого попереднього використання (чи близькому до того). Дослідження Oskar Sandberg (протягом розробки версії 0.7) показує, що це «вкладення шляхів» є критичним, і що дуже простий алгоритм маршрутизації буде достатньою умовою для складення шляху. Недоліком цього є те, що атакуючому дуже легко знаходити вузли Freenet і з'єднуватися з ними, оскільки кожен вузол безперервно намагається відшукати нові з'єднання. У версії 0.7, Freenet підтримує як режим ‘Opennet’ (подібний до старих алгоритмів, але простіший), так і ‘Даркнет’ (всі з'єднання вузлів встановлюються вручну, тому лише ваші друзі знають IP-адресу вашого вузла). Даркнет менш зручний, але набагато стійкіший до віддалених атак. Ця зміна потребувала суттєвих змін в алгоритмі маршрутизації. Кожен вузол має локацію, яка є числом у проміжку від 0 до 1. Коли зроблено запит ключа, вузол спершу перевіряє локальне сховище даних. Якщо його не знайдено, хеш ключа замінюється іншим числом у цьому ж діапазоні, і запит маршрутизується до вузла, локація якого найближча до ключа. Це продовжується, доки не станеться одна з подій: ліміт спроб буде перевищено, більш не залишиться вузлів для пошуку, або дані буде знайдено. Якщо дані знайдено, вони кешуються на кожному вузлі по всьому шляху. Таким чином, нема єдиного вузла джерела для ключа, і спроби відшукати його справжнє розташування призведуть лише до ще ширшого кешування. Той же принцип використовується при розміщенні документа в мережі: дані маршрутизуються відповідно до ключа, доки він не дійде до межі, і якщо не знайдено жодного документа з таким же ключем, він розміщується на кожному вузлі. Якщо знайдено старіші дані, старіші дані розповсюджуються й повертаються авторові, відбувається «колізія» вставки. Нагороди
Пов'язані проєкти
Див. також
Виноски
ПосиланняFreenet / Hyphanet (@Freenet@floss.social). FLOSS.social (англ.). |
Portal di Ensiklopedia Dunia